+
diff --git a/app/javascript/mastodon/components/status.js b/app/javascript/mastodon/components/status.js
index 78177c84de1..9e65db85c6f 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 b8f5dbce769..cf9c8fb5392 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 865b85b611d..d75f6f5982c 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 00000000000..13753ba84cc
--- /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 0d07d012f05..2296497b08a 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 c12c0889e4b..9e8fea69d12 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 7ab4922250c..5402d675356 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 0cfd98f2315..2a88addc422 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 09883d7d655..c3cd4e55dd8 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 ac1364441c0..9ad13a23102 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 3c8b63114f6..fe92216d533 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 8fbcf6a3d86..b85105c53e3 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 9d05b7a343d..621cc21ceb6 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 da3c0a0ab20..0474dfb4e3f 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 78473dab40e..cf2d2658aef 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 00000000000..7a8026bbc66
--- /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 6e7d11c6348..35eab5976dd 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 dc8109d16e3..4dbfefd8769 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 2d85b9cc0b9..89445559fe3 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 e4e2a4811eb..c3483027684 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 dc940ae01a6..f1904786a61 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 4be013be73d..3e94f7446dd 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 03010cf0a3f..fc45d5f211a 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 3d40033be1f..79a5a20ef67 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 1c4058926cb..9503a7a1ac6 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 3732d301fee..73bd23432dc 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 ddb7e32c913..5d640810f49 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 129d666821b..80e8e0a8a8f 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 3a6fa2874cc..bd09f19705a 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 9afe2d038b5..d391a57ba07 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 7d45b4d6b09..286da3ac677 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 712c635c8ac..461e7e3043e 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 3c19ad7dc28..5b711fd2611 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 436079aeb8a..fc6aa4280fa 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 945fcd8e08a..21b92ed3a1a 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 5182b50946c..59c7dc5a72e 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 23f4a41d61b..6e4771392eb 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 fc409a9326b..ccdf19dd65b 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 5a436891b34..417c1062a1e 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 06b401d3912..f78c31a4644 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 cb28ce9c134..43fe95eb8eb 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 a13e4fee280..f73295dca27 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 349423cce37..4d5f0a5d8d5 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 5f19509e276..d2c1ee73d66 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 cedbb947c1f..33f0e7fdce0 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 e78ac4c26bd..c3d96baf37a 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 46ed772cfb3..c50bb2f3404 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 b696bccfdda..c333bec7065 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 742017c662e..d28190faf73 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 512e4120d80..8e9d06642a0 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 1d24436907b..35b1a31010b 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 a5def0ad0b4..187343e83f7 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 cff528f8315..782aaf11433 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 fcc147c87c3..6f39d098c2b 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 f2752f5e0e4..ecc7a00db75 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 2676b851cd7..b7ecd2cdb40 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 6b5ab64efcf..45b2c2ee010 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 6037e7581a6..58e3d678033 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 66d32fb7e95..610aa6dafa0 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 b3cc6add758..ad2f1a05ab7 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 6442d13bef9..5391a93ae0c 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 4423e1b50e7..1ed0fe3e39f 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 e7a3567b499..5756a393f4e 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 00000000000..d80c0d156a9
--- /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 444a208458d..593d0efa4a1 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 343de15900c..2adcb5ba2d9 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 33c7783f3e2..e35937be133 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 c5f98750cdd..96f0023c3d8 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 cf12fcfec36..90d98cc8c5e 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 a6e5946a758..2f02af09813 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 00000000000..2b46d30fce3
--- /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 6c003d69ad9..0fdeccd9c31 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 556f9123561..4516454e18c 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 41f2b0bad78..4e19b309644 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 1b4e271db56..4ec3b8c56ec 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 45b7f53deca..00000000000
--- 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 29fea27de7b..42cd7299034 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 1dc7abee3f3..03938139797 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 d3f1629c457..2687776f940 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 29000802165..5ca6014154b 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 a6a5cb0c45f..a1ac11a5190 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 00000000000..4f45013126b
--- /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 1d0a24e42ee..fb364cb98ae 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 12b92bf4515..80c9d8ccfae 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 1b996e3cc8e..de7998db43a 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 f4d3b16a031..e80c581553c 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 d913e7372a7..e4a974f9683 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 b7efac354a6..e2bf65d9477 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 93c75993098..613911c572c 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 326d128d6db..ea4c097bfca 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 631d87cd03c..39657276f78 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 10b44950487..bc3887a446b 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 d01dead289e..9832133fc0c 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 87a43b95dc2..2bb65135f7c 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 e5d8e3f0304..f94c3b9dc06 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 32ffcc6880f..e2f15a60100 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 012a4fd18aa..65fdb030817 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 868a62f1e73..a8945f66ea5 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 00000000000..b744dd4ec5d
--- /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 31189406a1a..f6e7c79d1fb 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 f95d099a319..541a6b8b5c4 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 1d431aa1b66..998727e37a2 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 0c6bd65567d..ecb88d653fa 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 d8efa8e60b1..e6270f9024b 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 0c6736a3fdd..59cb65c65e8 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 86eaa5735fe..2fd623922fe 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 867d6dc2597..c2366188ab2 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 7c618a0b0c9..bd98e70d1bc 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 18af18059b6..1b90854c4aa 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 31191a818f8..2a5f1e2bc4f 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 d04e926e7d7..1fca3832b74 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 f123bf8697d..1c3eea3697b 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 83fc77043b7..14f24908c8e 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 cd674837dcc..205b35d8b19 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 00000000000..6244ff209f6
--- /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 6fd39c88eab..e6190f7e2a7 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 08b94af54aa..31f3220964a 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 1d943a2ca94..4c85fef8b56 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 b44f9820fb3..88700543ddf 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 cd67b67108e..a4e82934348 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 88645cf338e..110b8bf1622 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 524f6849fca..fed5e917d3d 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 7560c2671f7..e350973e1e9 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 867550eb8fc..528233a784f 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 0beec31753b..c9672f6633f 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 b51cf46df95..b35e5c09ae7 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 689e2ac4a5b..074f8c410be 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 c00aba0ded7..ba96fda22ca 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 00000000000..3d7beac9ff8
--- /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 2001abe9653..aa333920e94 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 0b670fda438..1f145eaa3ea 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 6069b77adbf..1ec1b69e820 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 824a6be90e1..fa4324e4de6 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 9013f0ac9fc..f87d8532c55 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 f7170f6a399..5ffc09ab98f 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 5d9506132d6..584f4c60945 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 4dbbd7cb17d..9bf57e38b00 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 70389e94826..17b35ba8f2e 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 442a7d4b66f..d45f98e66bf 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 e2eba3dd8ae..d5de2dcd365 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 ce7a884f9ae..2c41c24e940 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 aa429a1ddac..8d8470651ac 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 00000000000..7483dd77a44
--- /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 00000000000..db8ccd919ac
--- /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 b72f8f1a10f..6b73ebb9433 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 b12b7602408..00000000000
--- 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 00000000000..44896afc7b6
--- /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 00000000000..cd5e30e968e
--- /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 228dd1f2570..7835a044086 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 5812bb476b6..e69de29bb2d 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 6e26f0070b0..00000000000
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 a29d90113c2..00000000000
--- 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 811f22af838..00000000000
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 76c606dd03d..00000000000
--- 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 2f8e5113803..00000000000
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 bc3b2e6eb9f..00000000000
--- 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 c39443e24a7..00000000000
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 25841490429..00000000000
--- 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 13aca83e018..00000000000
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 57dc8890923..00000000000
--- 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 e730b28dfee..00000000000
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 8ea076ce9c1..00000000000
--- 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 e6d84b80128..00000000000
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 e18178a177a..00000000000
--- 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 9c4cbd6f7f6..00000000000
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 c0ca63e68dd..00000000000
--- 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 927339c9bff..00000000000
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 c2eb5bd504e..00000000000
--- 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 9a0b49a0e03..00000000000
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 abd01370aed..00000000000
--- 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 dbaa6183e72..00000000000
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 29527601379..00000000000
--- 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 bc898b986e8..00000000000
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 3136230ffdd..00000000000
--- 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 b0e914aac45..00000000000
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 f530a75424d..00000000000
--- 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 7216ee32bd0..00000000000
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 1722ee95868..00000000000
--- 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 d14371f3f27..00000000000
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 dc4e1d81a5e..00000000000
--- 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 c64709a7e7a..00000000000
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 3e7717f08bd..00000000000
--- 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 371b3acef2c..00000000000
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 9ce3a594fed..00000000000
--- 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 68e1e71e4b8..00000000000
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 2ff6d93906b..00000000000
--- 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 9b3476ae7c7..00000000000
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 1f01b9db89a..00000000000
--- 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 e4aa065c62f..00000000000
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 6079e493066..00000000000
--- 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 8c95874d4c5..00000000000
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 b6ed90a32c1..00000000000
--- 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 27eae28e69e..00000000000
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 014bf263185..00000000000
--- 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 9fce3d1eca9..00000000000
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 c883419705a..00000000000
--- 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 fd9e9805526..00000000000
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 afda6d7b6d8..00000000000
--- 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 6b9a6adbfd2..00000000000
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 68a7702274f..00000000000
--- 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 53ef9f2d4e6..00000000000
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 8b084f6bf65..00000000000
--- 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 66fd32025b2..00000000000
Binary files a/public/emoji/1f004.png and /dev/null differ
diff --git a/public/emoji/1f004.svg b/public/emoji/1f004.svg
index 45867fb5a2f..f6f39e4338d 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 3d0924b68aa..00000000000
Binary files a/public/emoji/1f0cf.png and /dev/null differ
diff --git a/public/emoji/1f0cf.svg b/public/emoji/1f0cf.svg
index 45ae8abccd7..ae95b995410 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 8603ff05a17..00000000000
Binary files a/public/emoji/1f170.png and /dev/null differ
diff --git a/public/emoji/1f170.svg b/public/emoji/1f170.svg
index a2ed41f334b..c9fc32b717b 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 25875bc6a14..00000000000
Binary files a/public/emoji/1f171.png and /dev/null differ
diff --git a/public/emoji/1f171.svg b/public/emoji/1f171.svg
index d0f8e64940d..f7251222d11 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 73278ba194a..00000000000
Binary files a/public/emoji/1f17e.png and /dev/null differ
diff --git a/public/emoji/1f17e.svg b/public/emoji/1f17e.svg
index 8844efa531f..96c14b4c39d 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 7be7dac27e8..00000000000
Binary files a/public/emoji/1f17f.png and /dev/null differ
diff --git a/public/emoji/1f17f.svg b/public/emoji/1f17f.svg
index 5d856444483..33db94984ab 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 d9f2d17dea0..00000000000
Binary files a/public/emoji/1f18e.png and /dev/null differ
diff --git a/public/emoji/1f18e.svg b/public/emoji/1f18e.svg
index 6c5e8866f9e..207d4cf0904 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 8b01b4343e2..00000000000
Binary files a/public/emoji/1f191.png and /dev/null differ
diff --git a/public/emoji/1f191.svg b/public/emoji/1f191.svg
index ef2cbf8962e..7334171fdf0 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 74674978d00..00000000000
Binary files a/public/emoji/1f192.png and /dev/null differ
diff --git a/public/emoji/1f192.svg b/public/emoji/1f192.svg
index 4bcdb3b9141..86fd7df12b9 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 b71956eb48a..00000000000
Binary files a/public/emoji/1f193.png and /dev/null differ
diff --git a/public/emoji/1f193.svg b/public/emoji/1f193.svg
index d26b8c27c06..72a80ae583d 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 5bf69bf7ba8..00000000000
Binary files a/public/emoji/1f194.png and /dev/null differ
diff --git a/public/emoji/1f194.svg b/public/emoji/1f194.svg
index 0c36d517b78..9d72b800c9d 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 b4f85488d1a..00000000000
Binary files a/public/emoji/1f195.png and /dev/null differ
diff --git a/public/emoji/1f195.svg b/public/emoji/1f195.svg
index ad6466f5e56..22dad4cf847 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 ee8d20f5ebc..00000000000
Binary files a/public/emoji/1f196.png and /dev/null differ
diff --git a/public/emoji/1f196.svg b/public/emoji/1f196.svg
index fe38c95a460..50bf8003475 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 d0d775532ff..00000000000
Binary files a/public/emoji/1f197.png and /dev/null differ
diff --git a/public/emoji/1f197.svg b/public/emoji/1f197.svg
index c45e4e1c9b5..9f43d676fef 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 d7d8c9953e4..00000000000
Binary files a/public/emoji/1f198.png and /dev/null differ
diff --git a/public/emoji/1f198.svg b/public/emoji/1f198.svg
index fef773a90c8..36cf6011708 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 0d42142ba04..00000000000
Binary files a/public/emoji/1f199.png and /dev/null differ
diff --git a/public/emoji/1f199.svg b/public/emoji/1f199.svg
index f5bc638ac51..1f2d8e60afd 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 e1180f4a464..00000000000
Binary files a/public/emoji/1f19a.png and /dev/null differ
diff --git a/public/emoji/1f19a.svg b/public/emoji/1f19a.svg
index 6d2545d60d1..af8f685dcc4 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 286239920c7..00000000000
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 23d70099959..588d4e8bfd5 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 20f4b14e8ad..00000000000
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 0340b9d6d0b..e0e8608b88d 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 d16ffe4b862..00000000000
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 6610e894cd3..571251753c5 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 a51533b554d..00000000000
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 e1998a6b2e7..9e880f92e37 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 07f2ce397d0..00000000000
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 0bcf4ebdc0c..10d53620ba8 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 500b5ab09fb..00000000000
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 c117d60875c..cf17878e07c 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 03a20132cc6..00000000000
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 62c373cb04c..5de35c369b7 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 2ad60a273ec..00000000000
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 619935b02a3..0b87990ccf1 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 cb46c31f862..00000000000
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 7440d2d238e..32692e12dd2 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 b272021d375..00000000000
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 476eac88170..8f825099019 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 73136caf3b7..00000000000
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 040ef76bb43..983c6df9dc3 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 3db45a0d9f3..00000000000
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 158d0c6f410..d4334d65cd1 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 c43769dcb19..00000000000
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 407ac40351c..ea3c039e5fc 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 7794309c78c..00000000000
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 48ab1dc09a7..986705ff937 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 02c840d12c9..00000000000
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 ab3f2d0574d..3ec298915e7 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 fc5466174bb..00000000000
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 81ab225514a..939ea37c7e0 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 89d3d15fd9f..00000000000
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 4ac419fbcfd..d05dffbc2a3 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 2b6c4395615..00000000000
Binary files a/public/emoji/1f1e6.png and /dev/null differ
diff --git a/public/emoji/1f1e6.svg b/public/emoji/1f1e6.svg
index 5670a81a097..845aea33b65 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 25fe407e13c..00000000000
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 9c14bd4b672..e30dd2cb30a 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 bccd8c5c9b0..00000000000
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 6bf8ae2cdd8..2eeb1825554 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 b0597a3149b..00000000000
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 e2713372a67..5d16a3f3a1e 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 551f086e3c4..00000000000
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 085c2cdb6d3..18a9d1bb167 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 444d4829f94..00000000000
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 eeb129a7713..769b898c90a 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 821eee5e170..00000000000
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 f6a6723c04a..4caa980b1bd 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 f33724249f0..00000000000
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 f708818b1f9..8ee8c0818bf 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 ea20ac93211..00000000000
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 7ea0077c0d9..4b0122f058f 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 7cca4f80457..00000000000
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 0e99fb00dc9..d3d3435ffd1 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 1082e78999f..00000000000
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 ad59884c60e..77b2b07bcb4 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 ab8cafdac63..00000000000
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 ba96edd0eb3..723f2857709 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 caa9329a896..00000000000
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 3271af93ccb..669fd4045cb 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 98af62b3da7..00000000000
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 49a94e9e919..f702e40b6d3 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 cb978ef9de9..00000000000
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 a835cb570cc..25fad13939c 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 b139366a42b..00000000000
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 3191070a208..f9b120d64fb 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 d36bcd2fb52..00000000000
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 a353225a217..48f72d7f8ca 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 ed57aa0360e..00000000000
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 fb5784cc728..ac8ba9d373e 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 5884e648228..00000000000
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 e9f5672c6f8..75ed1e94a38 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 cb12f34739d..00000000000
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 05f152a3777..f29ad45ce97 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 859c05beb13..00000000000
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 f27068ab6a7..b7ba015c3f8 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 34761cd03d8..00000000000
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 a2e5cffc0ed..36f0d2e6c51 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 8f69fa973ec..00000000000
Binary files a/public/emoji/1f1e7.png and /dev/null differ
diff --git a/public/emoji/1f1e7.svg b/public/emoji/1f1e7.svg
index 7590fdd8ea2..70bee81333d 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 7c5b390e85b..00000000000
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 886c66e27c1..555d21808b0 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 b6555a23d83..00000000000
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 8d002807baa..a8d74a752d6 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 fa92009771d..00000000000
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 c635b47e7aa..1495355e4a5 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 b969ae29ea9..00000000000
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 919121cd3e6..d9fcde0a939 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 3a38a40a95e..00000000000
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 d511520b95f..c9496fe12ac 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 5ff86b8a3b7..00000000000
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 507afb37015..46e47864f02 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 e3b4d15c7f1..00000000000
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 4ae397b2884..47188a220bc 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 b6b53dbc1c4..00000000000
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 683223e296b..bec3a083691 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 c9390da5499..00000000000
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 51be06e6749..6ebd464530b 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 2d3f6ec4518..00000000000
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 e86d029a4d0..e7651a51364 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 0a7f350a6d2..00000000000
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 9e5bd6650f6..646cea9d959 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 7e0f5e0dc3c..00000000000
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 387be03c365..e9cb4f814ab 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 70c761036bd..00000000000
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 16bfba0cfef..359779e7f07 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 a5fce126515..00000000000
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 e8510bc058b..18dabbc4e15 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 447328f7dfd..00000000000
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 ae73709b63d..d8c05766c9f 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 43faf4d64d5..00000000000
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 c3c11d6218f..d9055e7f3e4 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 eb39e8d0078..00000000000
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 cecfdbffd19..e05eae77f63 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 09d21359f3a..00000000000
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 28115420072..30857e46b36 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 154a7aa3176..00000000000
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 4529030d14d..fe7b2b05f86 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 9737ca223c7..00000000000
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 3226720bec8..3dd8a789c95 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 f94e668a2c4..00000000000
Binary files a/public/emoji/1f1e8.png and /dev/null differ
diff --git a/public/emoji/1f1e8.svg b/public/emoji/1f1e8.svg
index 1aa1eabd4d8..c2a6d71f10f 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 98ed76b3bab..00000000000
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 b2015a77aea..ef390466f7c 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 aae927d14b8..00000000000
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 04d9b4ee659..0266453dd1c 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 73c2a2acbd9..00000000000
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 f4ae5eafa0f..a4daa6f94ca 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 e5a60b06256..00000000000
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 fd2d704d08a..ceda13d974f 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 50f8a53981d..00000000000
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 27fc817ba9f..66d850adc8c 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 037a45d7c26..00000000000
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 133278cbb39..48967b1c978 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 24945b10f2d..00000000000
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 081674e2a63..243c153f30b 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 4a36666e5f7..00000000000
Binary files a/public/emoji/1f1e9.png and /dev/null differ
diff --git a/public/emoji/1f1e9.svg b/public/emoji/1f1e9.svg
index e7085af164e..b96b27d1f7f 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 356ff347838..00000000000
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 0a39cf63e20..97f8ad0117c 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 13814594619..00000000000
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 2d7bf4d1b48..d8af4a19286 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 84f317e7747..00000000000
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 0f3f6d8ed7f..e8359c64b35 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 57786064a95..00000000000
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 ee47f26c9f6..9018d1c60a5 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 4d7a76687f6..00000000000
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 63f1fe8ac22..a4bbad30992 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 0c3c724c1fb..00000000000
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 616efd6cc85..067278b0275 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 3e73597a225..00000000000
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 891a2597b9c..97f8ad0117c 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 9560a134c97..00000000000
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 ab724478ea8..7e7a5194d75 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 0b456cf3330..00000000000
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 40416b4bad9..76f6485a8d1 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 66f7e8d8cfb..00000000000
Binary files a/public/emoji/1f1ea.png and /dev/null differ
diff --git a/public/emoji/1f1ea.svg b/public/emoji/1f1ea.svg
index 6727438c4d4..d1521bb00a3 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 ebcf58abfc5..00000000000
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 0894ffc5824..ce60e2d95d9 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 9cc8c37fe37..00000000000
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 0bbbeae0fd4..198e69ed6a9 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 61372fd2549..00000000000
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 29f0c8548ff..e2c5a49178d 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 0889825c8e1..00000000000
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 ca329d00ae5..01e5dd223ab 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 9a4431b0831..00000000000
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 d5b522ebec8..c1fd7e97729 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 62ca19c3fcf..00000000000
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 7f9d0ab3275..359779e7f07 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 913b230fde0..00000000000
Binary files a/public/emoji/1f1eb.png and /dev/null differ
diff --git a/public/emoji/1f1eb.svg b/public/emoji/1f1eb.svg
index 2d54ed23881..c5907a4a44e 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 2e68e527a3e..00000000000
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 f30f1e0445d..809addb476e 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 3ed10f62347..00000000000
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 f745d658d0d..9628d4f2b44 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 527aad33807..00000000000
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 c33b39dfc6c..33a1f9b844e 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 a75d142480d..00000000000
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 044d07dcaba..e1dc358f4dc 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 0cf96f327c0..00000000000
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 328baf26350..4aef797025f 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 970002c7f76..00000000000
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 3e4098e4299..8bd725600d0 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 f31b5eb7b45..00000000000
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 f3558ad0512..ea91d250845 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 e554a2a1d0c..00000000000
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 c980311a080..77ac932899b 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 2e795dd4e33..00000000000
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 484b80c08bf..aa1713855f5 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 bb69c0975a3..00000000000
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 5fa53d532bd..38e8738de4b 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 1981f61dbf5..00000000000
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 ea98260a48a..94758e5377e 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 10e42e672bd..00000000000
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 f044d48d20a..5cba0697826 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 11475e61eeb..00000000000
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 6c4a1581a51..0b7c182362d 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 0f6bb1b6b94..00000000000
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 75c9bc6a45d..686ca152e55 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 6fc92780453..00000000000
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 68772ee199f..f51cd5dfc81 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 7213d4139ed..00000000000
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 bc4f58471a6..3e86ce5202d 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 4027549ca3c..00000000000
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 6cdd6bf36a5..4718442acc6 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 6357f6225f4..00000000000
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 30ed7effb91..9c121c56454 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 746e2fb7e44..00000000000
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 b4f6743d2b6..37faeaf9053 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 2711630753b..00000000000
Binary files a/public/emoji/1f1ec.png and /dev/null differ
diff --git a/public/emoji/1f1ec.svg b/public/emoji/1f1ec.svg
index 2fb80143076..a8c44210fa6 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 cf0c7151b56..00000000000
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 20f6508bede..8152b768b06 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 b613509e466..00000000000
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 ee741bb195d..986705ff937 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 402cdcefdf8..00000000000
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 0b56c947bb7..9ffdb103cea 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 46f4f06b4f2..00000000000
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 938504a0db5..3d757816aca 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 d8d0c888498..00000000000
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 6162c6a4d2d..6bc1872294b 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 a898de636a5..00000000000
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 48b8aced60a..bb04c1863b7 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 ca88e46bfc2..00000000000
Binary files a/public/emoji/1f1ed.png and /dev/null differ
diff --git a/public/emoji/1f1ed.svg b/public/emoji/1f1ed.svg
index 6add3c7e046..337b2f0a980 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 69fd990aa95..00000000000
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 540234ef7a6..7741ac37d1a 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 85b4c063a45..00000000000
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 d92e0a0090d..2e35859dd4c 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 a28295838cc..00000000000
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 c3f32f72d10..449c6394695 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 85c410d45fb..00000000000
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 4118fdf99df..a9680cc922f 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 60a2458e38e..00000000000
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 17632dc76d8..7dc6a44fefc 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 feccc8952ce..00000000000
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 0f8b13d5728..c8720d0eaba 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 aae927d14b8..00000000000
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 04d9b4ee659..0266453dd1c 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 41fd1db6f86..00000000000
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 c260e29258e..cde68d8e77f 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 ff7aaf62ba6..00000000000
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 d7b36f5e802..79a88385b15 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 ad8d4131dd2..00000000000
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 485bbd003d8..06b977391d9 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 f21563ec533..00000000000
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 f14b06522b6..9278ea01a8e 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 48dc1678895..00000000000
Binary files a/public/emoji/1f1ee.png and /dev/null differ
diff --git a/public/emoji/1f1ee.svg b/public/emoji/1f1ee.svg
index dc8d231b864..a3448017372 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 198a918f6a4..00000000000
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 d71bf48eef6..79576ef1f0d 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 f84e4f9e8db..00000000000
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 810f5ab7157..9a2c61823db 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 20bfa147e3e..00000000000
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 2acfb9a8eb9..76695fd2ace 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 8d8838e4708..00000000000
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 8ffa66be68a..e7d4edf6b74 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 16599daa7df..00000000000
Binary files a/public/emoji/1f1ef.png and /dev/null differ
diff --git a/public/emoji/1f1ef.svg b/public/emoji/1f1ef.svg
index 249efde293f..c36897e3736 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 9e417ab3009..00000000000
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 65828fd7654..7448af9f4af 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 2f2d848fe58..00000000000
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 c2b532f6603..88eb5761303 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 9a2877dd620..00000000000
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 a28e0243e1a..7ef576703a9 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 10e507e3245..00000000000
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 81f5fc9e52d..4ff9bc2637c 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 bd5a0588e03..00000000000
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 8e9ba574d09..576e2fa22ab 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 776207c9605..00000000000
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 505ac748dd6..86a2dd6bbd5 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 6b3fd89eaaa..00000000000
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 dc4d6798133..c4ff6ac31be 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 833a88116e1..00000000000
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 5b28e359525..7b5c6790475 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 4d19bfa6ca7..00000000000
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 f3076ffb404..735085fa90d 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 40daa4da597..00000000000
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 6d0432cb82e..ae4088997fa 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 2f97a8fd3c6..00000000000
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 107bf17ac75..0c398a457d5 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 204b95d1b57..00000000000
Binary files a/public/emoji/1f1f0.png and /dev/null differ
diff --git a/public/emoji/1f1f0.svg b/public/emoji/1f1f0.svg
index 0ae3f9a3b0f..d9294f183c2 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 4d4179f34f6..00000000000
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 a9ebf083c86..251d2bdec66 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 3d594467011..00000000000
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 d000185e59c..3b47f5895d7 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 45547b1e439..00000000000
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 9f5255714c2..255cbe8f044 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 0eafa6a2215..00000000000
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 51b11472b49..5b878c9d75d 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 ab4fe10c40c..00000000000
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 5eb3cd7ee46..18ce60f466d 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 f66f267fea2..00000000000
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 13995a6bf42..60815efb69c 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 24745631e3c..00000000000
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 ef9b0346c5c..437f875ba97 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 d644b56d62a..00000000000
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 513d722c0c4..464ae5e0469 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 a2df9c92994..00000000000
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 78de148357f..ce8ff86f7b7 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 ae680d5f0e3..00000000000
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 b3fa271e081..7265ac5074f 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 f6e77b0f3ba..00000000000
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 dd29b3b31e8..74add1f6f6d 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 7992b4f681a..00000000000
Binary files a/public/emoji/1f1f1.png and /dev/null differ
diff --git a/public/emoji/1f1f1.svg b/public/emoji/1f1f1.svg
index 9239d516ebd..dc299d45f11 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 c4a056722cd..00000000000
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 f2e7c5aab8f..77421f18da6 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 d479eab98cb..00000000000
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 a0228346b4b..abc6746dcfd 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 a7a72539872..00000000000
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 76845b662f8..b4f1fe18fe8 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 7c771e7e120..00000000000
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 7eb38ad815e..45e00923e61 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 70c761036bd..00000000000
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 16bfba0cfef..359779e7f07 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 2f3ccdda76f..00000000000
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 3571c0a7f4e..016e1c36011 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 598016481c1..00000000000
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 bc53ad9667b..9a82f6e4a6a 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 7ba775ee75c..00000000000
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 8a3bc3e7c6d..d5602de7c7b 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 68343785468..00000000000
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 650d974a975..729816534f7 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 37dc7d71591..00000000000
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 2df73cff5ca..011a6a4d7d3 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 1f146bbcd1a..00000000000
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 bfb46eb047a..6987e126243 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 7edde31f64b..00000000000
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 30c75b65a1c..9c7fb536585 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 17ec1c441ed..00000000000
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 823a275f355..ea7005e64fc 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 1e672dc9087..00000000000
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 79c46fd4a17..3a12ec05010 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 f87de46effe..00000000000
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 7878b6bbfc9..1cc8a6fff46 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 480b0d4ebda..00000000000
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 97cb964c843..24d149b0ad2 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 c9e1dbdce82..00000000000
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 f2447327537..98a364da950 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 55b33cb7c33..00000000000
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 03c638846b9..223c786e684 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 ce5867126ae..00000000000
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 9326ae793a4..87eba9d93f5 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 003d8548401..00000000000
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 4fd4f5aefe6..2dd553add90 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 42572bcd0ba..00000000000
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 7ccbceb6a46..fbb2ae056e1 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 17526c26742..00000000000
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 580bc7f9f43..97f472e19e9 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 2352a78e786..00000000000
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 42ff00cefff..ddca4a7bd21 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 7b848b2ce29..00000000000
Binary files a/public/emoji/1f1f2.png and /dev/null differ
diff --git a/public/emoji/1f1f2.svg b/public/emoji/1f1f2.svg
index c04f37116d9..595c1a8a72c 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 ed31c3df04d..00000000000
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 c53c7ddc6de..d8224397a7e 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 90b3afebfa3..00000000000
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 7a9113f8087..5a4999f5af5 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 f98a1173c2a..00000000000
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 b7f47078887..b7d32ca1257 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 9099e767420..00000000000
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 21005fb0d2c..d8d25ec549c 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 ea0abeff1a1..00000000000
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 0701d0cdf1b..2e68813ae66 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 772920dfa10..00000000000
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 8792eddc8dc..d61e76bcdd2 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 83a0e817e41..00000000000
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 c150ee59421..80adf56ddbf 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 99d3142eb7b..00000000000
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 85182d98395..f9a01310c6f 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 87425a8dfef..00000000000
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 a1e7545bada..4c816f7a4e9 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 b3e3a5d5621..00000000000
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 eba929277ad..dcf7aa255e5 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 f03614443ee..00000000000
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 f4b61fd5e60..20fa1fbfa7f 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 a4eeeab9cd9..00000000000
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 688b145c191..3d76eaf879e 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 4a11e504385..00000000000
Binary files a/public/emoji/1f1f3.png and /dev/null differ
diff --git a/public/emoji/1f1f3.svg b/public/emoji/1f1f3.svg
index a32f055903f..4736cc6eb33 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 ea824ba31e7..00000000000
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 3a23ddcb9f3..95682a7bee3 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 2a0760b3150..00000000000
Binary files a/public/emoji/1f1f4.png and /dev/null differ
diff --git a/public/emoji/1f1f4.svg b/public/emoji/1f1f4.svg
index 079e2b1a9d8..96fc0b1f498 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 c3091d89889..00000000000
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 cbeb3037f5f..aa4edaa8ffb 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 39223aa9dbb..00000000000
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 dab27b6367f..17e8abe250f 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 113445f8f6e..00000000000
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 d68516daa70..8d2d8749414 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 825e9dcb762..00000000000
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 094bf895f50..a39a0e987cc 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 8260e15bd2c..00000000000
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 57ebde425aa..17965b9eb39 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 a7b6a1c5074..00000000000
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 3a8cfd9b267..f3cfa466897 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 19de2edec11..00000000000
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 bf78dbbce8f..bbc7f1ba914 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 2ca60554193..00000000000
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 517c6682a55..44e7282b8bc 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 f2263b154bc..00000000000
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 adf57ca1ab7..e9d1c474e27 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 d0209cddb79..00000000000
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 9008a558512..5a384c0e75c 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 7ccab09778b..00000000000
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 e3f5f424893..08f8d7f13f7 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 cc93f27c64b..00000000000
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 f4866075c24..81defcf3ad2 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 154b2f12d3c..00000000000
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 a88c9f8fb19..4eaf0143ce1 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 662ad2f6ff1..00000000000
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 93e40d091d5..1853d28da99 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 bcb3298f99a..00000000000
Binary files a/public/emoji/1f1f5.png and /dev/null differ
diff --git a/public/emoji/1f1f5.svg b/public/emoji/1f1f5.svg
index 2a769ae73a6..c111c03866b 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 a01d8b05cc7..00000000000
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 6c5ce7947f8..0df0124967c 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 6c92a9dfbc8..00000000000
Binary files a/public/emoji/1f1f6.png and /dev/null differ
diff --git a/public/emoji/1f1f6.svg b/public/emoji/1f1f6.svg
index ea3e84d3c03..b3de8efbda6 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 57f2bbe9df8..00000000000
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 634a34f5c25..ef15739e2d2 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 3e48c447706..00000000000
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 20553c77141..3b3b6ab864a 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 9df6c9a5235..00000000000
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 276ec5da58c..5a2a165288e 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 e50c9db90e7..00000000000
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 ba85d44e804..0c0949e69c0 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 c238c874e1d..00000000000
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 d02fc12bacd..11651f29b62 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 627892c912a..00000000000
Binary files a/public/emoji/1f1f7.png and /dev/null differ
diff --git a/public/emoji/1f1f7.svg b/public/emoji/1f1f7.svg
index 1e8673ffa82..545c7700fa3 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 4941be7d198..00000000000
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 73d0b056b0d..86d6527578e 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 7d8f1ac6130..00000000000
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 1253585e93a..f5629076f58 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 6ae4d90765e..00000000000
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 c1632e69645..2bafbc20c63 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 963be1b36fb..00000000000
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 4fe07ce3271..387ad34056b 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 fc0d0e0ce89..00000000000
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 ccd38777ba3..a84f573df13 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 de3c7737c42..00000000000
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 91caccd4adc..3d77757f4c5 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 40cd9e44e96..00000000000
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 ac8dfd1a035..5ceca0d3f05 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 e308999dba2..00000000000
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 85338c99ca8..aa66a1599c5 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 5884e648228..00000000000
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 e9f5672c6f8..f9a01310c6f 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 4259d0e1418..00000000000
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 5b0e543563d..d3a88c1dae5 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 d2cc68830ab..00000000000
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 50fafc27752..a03423c129c 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 03b8708754e..00000000000
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 abe63183d39..d26d90e38c2 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 5368bbe93df..00000000000
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 548243e3b39..308ef034220 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 68a0597365a..00000000000
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 967be6174a2..c205b1b37ba 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 d3251327035..00000000000
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 6348d1a7857..d2b6e0fb508 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 122977e798f..00000000000
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 9bbb6654240..e18f9e697bb 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 f83a863d612..00000000000
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 08a1d8fbb40..2d5ef73c5c0 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 efb83e2f253..00000000000
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 9c937047580..5081fb9482c 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 94b760fbedf..00000000000
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 b0cd97a077d..00d7eb4d576 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 09a8ee8f78c..00000000000
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 62fbea40bf2..d7c1df75a1f 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 f74e82ea1fd..00000000000
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 deafce4e2c8..d6c470dd076 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 9d0dbf93af8..00000000000
Binary files a/public/emoji/1f1f8.png and /dev/null differ
diff --git a/public/emoji/1f1f8.svg b/public/emoji/1f1f8.svg
index a39d2010ee3..a73e5074c26 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 b44283e90e2..00000000000
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 68e6e9ce7cb..84b5c1e7d95 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 156b33d1ba6..00000000000
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 ba12e33df8f..5f2b42d62c4 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 ebe7f592828..00000000000
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 3976073fb36..0e48d2772a0 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 a1a3ad68ee2..00000000000
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 f374f23f699..015fbf976ef 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 826b73c9ac5..00000000000
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 1c9e70f4523..e4dc6d6d3d0 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 93ff542c5a6..00000000000
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 d5a54a4d89d..426a60c8e35 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 7a8a0b6190a..00000000000
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 a7d29de9d08..126bc7c5aab 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 2fa5a21b1bb..00000000000
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 7c869591e25..ba9c6a1a6aa 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 5b120eccc6f..00000000000
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 43e983ac30a..1da3e650298 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 c3c4f532302..00000000000
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 785f91cbbc2..5dcd737a7a5 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 58ef161229f..00000000000
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 b27930a6593..09b34992ae7 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 1ffa7bb9d19..00000000000
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 4adcb03430e..cd4ae3094b5 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 325251fae88..00000000000
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 57ab90b7ddc..d8fd78213ec 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 ed3bb39a300..00000000000
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 d0322a71a8a..00bf8643a6a 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 e82c65c7bb9..00000000000
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 e911e865f64..1a3d48f7e39 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 3a8f00b5928..00000000000
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 8ac4ed83129..948f05efe46 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 2a020853d4e..00000000000
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 9e65b4b844a..8a5cbf68042 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 2d882f66b19..00000000000
Binary files a/public/emoji/1f1f9.png and /dev/null differ
diff --git a/public/emoji/1f1f9.svg b/public/emoji/1f1f9.svg
index 6d8e6eda823..c230bbcfc0f 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 cd84d1bbd36..00000000000
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 3d4e0e3b59b..6d7254dced6 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 dc97690eb55..00000000000
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 450937689ad..cc3422c6208 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 4a7ee3cdf13..00000000000
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 48488ea2452..a7e325796a5 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 00000000000..825b32daca3
--- /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 9f730305860..00000000000
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 28e8578e175..a7e325796a5 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 b8002a697a6..00000000000
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 bc4ad70037a..dfd2535a096 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 d56ca9bc424..00000000000
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 a6bb6cbfd29..b9997256eb4 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 ae0cabeb1c6..00000000000
Binary files a/public/emoji/1f1fa.png and /dev/null differ
diff --git a/public/emoji/1f1fa.svg b/public/emoji/1f1fa.svg
index 9966d13230d..1e7d2986969 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 ddaf5e3141b..00000000000
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 d0078effe3a..af4d6960342 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 43703c62a71..00000000000
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 5cafb43d9d3..06ffac6988d 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 1b62796824e..00000000000
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 8274ed0b4c4..a4ed2d2aa19 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 536f780f1c0..00000000000
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 e5afefcad80..6357a52facd 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 64102012cfe..00000000000
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 2364a0c8c2e..2f0b9319457 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 427036046b6..00000000000
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 a35b203fd68..d0b7daeb44f 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 706eba44070..00000000000
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 51ac13f4f6e..7595f2f72da 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 e01e179b451..00000000000
Binary files a/public/emoji/1f1fb.png and /dev/null differ
diff --git a/public/emoji/1f1fb.svg b/public/emoji/1f1fb.svg
index fd7586dca7b..946cf36a1b0 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 70c761036bd..00000000000
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 16bfba0cfef..b7d01ea663b 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 a1ea0703141..00000000000
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 67b769ca6e2..6e11aab766e 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 e8f614ac847..00000000000
Binary files a/public/emoji/1f1fc.png and /dev/null differ
diff --git a/public/emoji/1f1fc.svg b/public/emoji/1f1fc.svg
index 3f2ce79fd6e..aed47a8820d 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 e587a446632..00000000000
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 4a771e93810..4499d2cfd23 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 e3bedba0be0..00000000000
Binary files a/public/emoji/1f1fd.png and /dev/null differ
diff --git a/public/emoji/1f1fd.svg b/public/emoji/1f1fd.svg
index 0b95b597c0c..9af21b8df49 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 eadfebd5f67..00000000000
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 beeca622936..667d2ae899a 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 c81fa6d886e..00000000000
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 b2627bf9b99..5560649cbaa 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 9bfa7f2db9d..00000000000
Binary files a/public/emoji/1f1fe.png and /dev/null differ
diff --git a/public/emoji/1f1fe.svg b/public/emoji/1f1fe.svg
index fe9e109c052..49eecb7d672 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 f397ef5072f..00000000000
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 5253e636009..cb41b2ef6fb 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 2494a31f662..00000000000
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 16306c73933..25e86be0320 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 e09b9652be6..00000000000
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 77f539e5f49..aeb9a3c81c3 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 5bf03f100ce..00000000000
Binary files a/public/emoji/1f1ff.png and /dev/null differ
diff --git a/public/emoji/1f1ff.svg b/public/emoji/1f1ff.svg
index 133cd3cf3cb..f8f79898915 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 6450eb44d90..00000000000
Binary files a/public/emoji/1f201.png and /dev/null differ
diff --git a/public/emoji/1f201.svg b/public/emoji/1f201.svg
index 44714e7ea35..824d957c380 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 900f9633247..00000000000
Binary files a/public/emoji/1f202.png and /dev/null differ
diff --git a/public/emoji/1f202.svg b/public/emoji/1f202.svg
index a6e36bc7d92..b2c039cb773 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 d3a19b420de..00000000000
Binary files a/public/emoji/1f21a.png and /dev/null differ
diff --git a/public/emoji/1f21a.svg b/public/emoji/1f21a.svg
index 74c92f22c7d..1992f1d4948 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 078e23e4ff3..00000000000
Binary files a/public/emoji/1f22f.png and /dev/null differ
diff --git a/public/emoji/1f22f.svg b/public/emoji/1f22f.svg
index 07d785adfbf..265e896a919 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 4c704e03433..00000000000
Binary files a/public/emoji/1f232.png and /dev/null differ
diff --git a/public/emoji/1f232.svg b/public/emoji/1f232.svg
index 5cc5826cef4..442d11dcea5 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 47966c1ea93..00000000000
Binary files a/public/emoji/1f233.png and /dev/null differ
diff --git a/public/emoji/1f233.svg b/public/emoji/1f233.svg
index ae8c7bdad5e..c9de7608097 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 8375ad9d9af..00000000000
Binary files a/public/emoji/1f234.png and /dev/null differ
diff --git a/public/emoji/1f234.svg b/public/emoji/1f234.svg
index ea346b6664b..8d24fe0b14e 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 f9dea8b8833..00000000000
Binary files a/public/emoji/1f235.png and /dev/null differ
diff --git a/public/emoji/1f235.svg b/public/emoji/1f235.svg
index ed4265dc3bd..69992bd9b24 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 a4510de41c0..00000000000
Binary files a/public/emoji/1f236.png and /dev/null differ
diff --git a/public/emoji/1f236.svg b/public/emoji/1f236.svg
index 8d2d4e38f5e..161b1389886 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 c41bd36a26a..00000000000
Binary files a/public/emoji/1f237.png and /dev/null differ
diff --git a/public/emoji/1f237.svg b/public/emoji/1f237.svg
index 01c87d77594..a0590d6a3de 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 6b7af0ee222..00000000000
Binary files a/public/emoji/1f238.png and /dev/null differ
diff --git a/public/emoji/1f238.svg b/public/emoji/1f238.svg
index 2bec6690074..913f6ee1041 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 c4f837fe684..00000000000
Binary files a/public/emoji/1f239.png and /dev/null differ
diff --git a/public/emoji/1f239.svg b/public/emoji/1f239.svg
index c989838cc6b..a85431febca 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 d21cb30eaf3..00000000000
Binary files a/public/emoji/1f23a.png and /dev/null differ
diff --git a/public/emoji/1f23a.svg b/public/emoji/1f23a.svg
index 2c743f7f919..3b7447811b7 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 0c0d589caf0..00000000000
Binary files a/public/emoji/1f250.png and /dev/null differ
diff --git a/public/emoji/1f250.svg b/public/emoji/1f250.svg
index 0518c4af6a6..b33576a7a98 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 8afd7ce99cf..00000000000
Binary files a/public/emoji/1f251.png and /dev/null differ
diff --git a/public/emoji/1f251.svg b/public/emoji/1f251.svg
index 4da18fa1981..c47e05b2186 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 ff00b1afe70..00000000000
Binary files a/public/emoji/1f300.png and /dev/null differ
diff --git a/public/emoji/1f300.svg b/public/emoji/1f300.svg
index 00f6030869e..2dc5286f77c 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 57702d8d3ac..00000000000
Binary files a/public/emoji/1f301.png and /dev/null differ
diff --git a/public/emoji/1f301.svg b/public/emoji/1f301.svg
index a94c77a88c7..0ab7d698b49 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 ecefba9e446..00000000000
Binary files a/public/emoji/1f302.png and /dev/null differ
diff --git a/public/emoji/1f302.svg b/public/emoji/1f302.svg
index 2e02d289500..881160d3a42 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 ca2018f456d..00000000000
Binary files a/public/emoji/1f303.png and /dev/null differ
diff --git a/public/emoji/1f303.svg b/public/emoji/1f303.svg
index cb533e58f46..958318bc8c5 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 2b99307344d..00000000000
Binary files a/public/emoji/1f304.png and /dev/null differ
diff --git a/public/emoji/1f304.svg b/public/emoji/1f304.svg
index 1d032f08283..9b9aab4d62d 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 4ad36003c20..00000000000
Binary files a/public/emoji/1f305.png and /dev/null differ
diff --git a/public/emoji/1f305.svg b/public/emoji/1f305.svg
index dfc8498031a..df6b2f0d565 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 80cdff7cf5d..00000000000
Binary files a/public/emoji/1f306.png and /dev/null differ
diff --git a/public/emoji/1f306.svg b/public/emoji/1f306.svg
index 0bf2b32a9ae..49a62d49901 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 7cded0ba55b..00000000000
Binary files a/public/emoji/1f307.png and /dev/null differ
diff --git a/public/emoji/1f307.svg b/public/emoji/1f307.svg
index d6648a49023..03edebae160 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 154735d7147..00000000000
Binary files a/public/emoji/1f308.png and /dev/null differ
diff --git a/public/emoji/1f308.svg b/public/emoji/1f308.svg
index 22ae3f5f848..000d18debd7 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 1d444e0be65..00000000000
Binary files a/public/emoji/1f309.png and /dev/null differ
diff --git a/public/emoji/1f309.svg b/public/emoji/1f309.svg
index cdaab3191fa..20776394b69 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 45ff1e87703..00000000000
Binary files a/public/emoji/1f30a.png and /dev/null differ
diff --git a/public/emoji/1f30a.svg b/public/emoji/1f30a.svg
index efdfafca587..e72edf1e6a8 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 931d569294c..00000000000
Binary files a/public/emoji/1f30b.png and /dev/null differ
diff --git a/public/emoji/1f30b.svg b/public/emoji/1f30b.svg
index 51ce7a82efa..9d4ca181812 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 b2b8ac59c5e..00000000000
Binary files a/public/emoji/1f30c.png and /dev/null differ
diff --git a/public/emoji/1f30c.svg b/public/emoji/1f30c.svg
index de7a0212d68..d6764f50fe4 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 66c3348c23a..00000000000
Binary files a/public/emoji/1f30d.png and /dev/null differ
diff --git a/public/emoji/1f30d.svg b/public/emoji/1f30d.svg
index efe3dee5d40..d34b7012d19 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 538c3cddd68..00000000000
Binary files a/public/emoji/1f30e.png and /dev/null differ
diff --git a/public/emoji/1f30e.svg b/public/emoji/1f30e.svg
index 96eb2c4a4be..609dd5c9388 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 d8df97fec3c..00000000000
Binary files a/public/emoji/1f30f.png and /dev/null differ
diff --git a/public/emoji/1f30f.svg b/public/emoji/1f30f.svg
index 3766698ba5c..21b702ddbe8 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 82450c1a4ba..00000000000
Binary files a/public/emoji/1f310.png and /dev/null differ
diff --git a/public/emoji/1f310.svg b/public/emoji/1f310.svg
index 5290ca39f77..fa1e93b6c9f 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 ecff72caa42..00000000000
Binary files a/public/emoji/1f311.png and /dev/null differ
diff --git a/public/emoji/1f311.svg b/public/emoji/1f311.svg
index 78fd41ea068..6b7dd3d8df7 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 687125173d9..00000000000
Binary files a/public/emoji/1f312.png and /dev/null differ
diff --git a/public/emoji/1f312.svg b/public/emoji/1f312.svg
index 7bae646dedf..6b7680e369f 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 5dccaf72a4f..00000000000
Binary files a/public/emoji/1f313.png and /dev/null differ
diff --git a/public/emoji/1f313.svg b/public/emoji/1f313.svg
index 2a604a0f77c..8ade662c726 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 3a808156318..00000000000
Binary files a/public/emoji/1f314.png and /dev/null differ
diff --git a/public/emoji/1f314.svg b/public/emoji/1f314.svg
index 8fd4cf6a787..1609b18e96e 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 c9a2d6aa7c9..00000000000
Binary files a/public/emoji/1f315.png and /dev/null differ
diff --git a/public/emoji/1f315.svg b/public/emoji/1f315.svg
index cdcbea5971a..e0143639f32 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 24e16266119..00000000000
Binary files a/public/emoji/1f316.png and /dev/null differ
diff --git a/public/emoji/1f316.svg b/public/emoji/1f316.svg
index 0e1aa7b986d..c7a3390eb09 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 0842a0dd408..00000000000
Binary files a/public/emoji/1f317.png and /dev/null differ
diff --git a/public/emoji/1f317.svg b/public/emoji/1f317.svg
index fe9e6db9d5f..2c63c0179d1 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 cf68706b871..00000000000
Binary files a/public/emoji/1f318.png and /dev/null differ
diff --git a/public/emoji/1f318.svg b/public/emoji/1f318.svg
index 0cc59a6d054..0cd9693b574 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 765420ecec7..00000000000
Binary files a/public/emoji/1f319.png and /dev/null differ
diff --git a/public/emoji/1f319.svg b/public/emoji/1f319.svg
index 3fd5b28f936..a05283d37cd 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 150dd12400c..00000000000
Binary files a/public/emoji/1f31a.png and /dev/null differ
diff --git a/public/emoji/1f31a.svg b/public/emoji/1f31a.svg
index 201d831f2ae..ea21d3f3d7b 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 cd8a3d7acd8..00000000000
Binary files a/public/emoji/1f31b.png and /dev/null differ
diff --git a/public/emoji/1f31b.svg b/public/emoji/1f31b.svg
index 1f67f817da2..14707c9d2c7 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 94099343c5d..00000000000
Binary files a/public/emoji/1f31c.png and /dev/null differ
diff --git a/public/emoji/1f31c.svg b/public/emoji/1f31c.svg
index 53b98ca502e..b1c8b52509a 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 a5c25bbaf64..00000000000
Binary files a/public/emoji/1f31d.png and /dev/null differ
diff --git a/public/emoji/1f31d.svg b/public/emoji/1f31d.svg
index 90c6d5019e3..cc75e8a5678 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 14a4ea971db..00000000000
Binary files a/public/emoji/1f31e.png and /dev/null differ
diff --git a/public/emoji/1f31e.svg b/public/emoji/1f31e.svg
index f86c173d6eb..f694aa74aad 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 2f5cba592db..00000000000
Binary files a/public/emoji/1f31f.png and /dev/null differ
diff --git a/public/emoji/1f31f.svg b/public/emoji/1f31f.svg
index 13565256fd4..ac88d0d9424 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 aa45384d1c6..00000000000
Binary files a/public/emoji/1f320.png and /dev/null differ
diff --git a/public/emoji/1f320.svg b/public/emoji/1f320.svg
index c79d56a39b3..5d54372e398 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 b1147392426..00000000000
Binary files a/public/emoji/1f321.png and /dev/null differ
diff --git a/public/emoji/1f321.svg b/public/emoji/1f321.svg
index b6419126b83..8f55e77e1fa 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 cead0bfa521..00000000000
Binary files a/public/emoji/1f324.png and /dev/null differ
diff --git a/public/emoji/1f324.svg b/public/emoji/1f324.svg
index 0bfacd23d68..b5d8293ceea 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 0a4cc100269..00000000000
Binary files a/public/emoji/1f325.png and /dev/null differ
diff --git a/public/emoji/1f325.svg b/public/emoji/1f325.svg
index 41fc0560ce8..8155577a345 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 491f9ca4839..00000000000
Binary files a/public/emoji/1f326.png and /dev/null differ
diff --git a/public/emoji/1f326.svg b/public/emoji/1f326.svg
index 8f83b295f28..383aa2e9728 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 385685e0512..00000000000
Binary files a/public/emoji/1f327.png and /dev/null differ
diff --git a/public/emoji/1f327.svg b/public/emoji/1f327.svg
index 52e6a1eff2a..2ff8cdfa3e6 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 9720384eb99..00000000000
Binary files a/public/emoji/1f328.png and /dev/null differ
diff --git a/public/emoji/1f328.svg b/public/emoji/1f328.svg
index dc0e858a89a..35476fa9545 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 0831e88aa31..00000000000
Binary files a/public/emoji/1f329.png and /dev/null differ
diff --git a/public/emoji/1f329.svg b/public/emoji/1f329.svg
index d7844b627b3..88bf05d374e 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 4821c89da1e..00000000000
Binary files a/public/emoji/1f32a.png and /dev/null differ
diff --git a/public/emoji/1f32a.svg b/public/emoji/1f32a.svg
index 87326d990b7..ca5c1694a2b 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 4e73c2de272..00000000000
Binary files a/public/emoji/1f32b.png and /dev/null differ
diff --git a/public/emoji/1f32b.svg b/public/emoji/1f32b.svg
index a294ee341f4..f22dfdd849e 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 df81b652eb6..00000000000
Binary files a/public/emoji/1f32c.png and /dev/null differ
diff --git a/public/emoji/1f32c.svg b/public/emoji/1f32c.svg
index 652f28b7c90..cb0615f1b67 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 3c3354d94cb..00000000000
Binary files a/public/emoji/1f32d.png and /dev/null differ
diff --git a/public/emoji/1f32d.svg b/public/emoji/1f32d.svg
index e9acb62da3d..e4c7c5b617e 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 10e847a4619..00000000000
Binary files a/public/emoji/1f32e.png and /dev/null differ
diff --git a/public/emoji/1f32e.svg b/public/emoji/1f32e.svg
index 7ce2afabeda..1ed1f80c85a 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 02bd5601df7..00000000000
Binary files a/public/emoji/1f32f.png and /dev/null differ
diff --git a/public/emoji/1f32f.svg b/public/emoji/1f32f.svg
index 6ae90390222..78023dd5de0 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 e9fb40468ed..00000000000
Binary files a/public/emoji/1f330.png and /dev/null differ
diff --git a/public/emoji/1f330.svg b/public/emoji/1f330.svg
index 5def6560459..2bdaacc0cee 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 ae0948bcfd6..00000000000
Binary files a/public/emoji/1f331.png and /dev/null differ
diff --git a/public/emoji/1f331.svg b/public/emoji/1f331.svg
index 90f17ee2969..3fbe3c81984 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 f679d8dd772..00000000000
Binary files a/public/emoji/1f332.png and /dev/null differ
diff --git a/public/emoji/1f332.svg b/public/emoji/1f332.svg
index be209886311..6c6ce550509 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 785fc1c30ea..00000000000
Binary files a/public/emoji/1f333.png and /dev/null differ
diff --git a/public/emoji/1f333.svg b/public/emoji/1f333.svg
index 4f29da350eb..27070cdc138 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 4bbb10f4f19..00000000000
Binary files a/public/emoji/1f334.png and /dev/null differ
diff --git a/public/emoji/1f334.svg b/public/emoji/1f334.svg
index b0cec6d92d0..e20f94e2766 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 9b48ccf3d0c..00000000000
Binary files a/public/emoji/1f335.png and /dev/null differ
diff --git a/public/emoji/1f335.svg b/public/emoji/1f335.svg
index b980aad283c..972a1fc9ba8 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 266675bd577..00000000000
Binary files a/public/emoji/1f336.png and /dev/null differ
diff --git a/public/emoji/1f336.svg b/public/emoji/1f336.svg
index 3763d91d284..a5f14a3bb50 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 f799d75c182..00000000000
Binary files a/public/emoji/1f337.png and /dev/null differ
diff --git a/public/emoji/1f337.svg b/public/emoji/1f337.svg
index 65121894159..0c5a2c362d9 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 282f3e7bc81..00000000000
Binary files a/public/emoji/1f338.png and /dev/null differ
diff --git a/public/emoji/1f338.svg b/public/emoji/1f338.svg
index eb6d6da7b98..8188ae92ae4 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 52c286d31ce..00000000000
Binary files a/public/emoji/1f339.png and /dev/null differ
diff --git a/public/emoji/1f339.svg b/public/emoji/1f339.svg
index e7122eb3238..66a4b9c6a00 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 39dd3524233..00000000000
Binary files a/public/emoji/1f33a.png and /dev/null differ
diff --git a/public/emoji/1f33a.svg b/public/emoji/1f33a.svg
index 557788787f6..19e7e300103 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 08cc07761ea..00000000000
Binary files a/public/emoji/1f33b.png and /dev/null differ
diff --git a/public/emoji/1f33b.svg b/public/emoji/1f33b.svg
index 3834929fe11..b39eabf1c4a 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 4083026c157..00000000000
Binary files a/public/emoji/1f33c.png and /dev/null differ
diff --git a/public/emoji/1f33c.svg b/public/emoji/1f33c.svg
index 15d42073582..3242c56f705 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 36e20127931..00000000000
Binary files a/public/emoji/1f33d.png and /dev/null differ
diff --git a/public/emoji/1f33d.svg b/public/emoji/1f33d.svg
index 074139da8ce..8e542a0381e 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 3564d9d643a..00000000000
Binary files a/public/emoji/1f33e.png and /dev/null differ
diff --git a/public/emoji/1f33e.svg b/public/emoji/1f33e.svg
index 5b02cf7cb7b..ce4151b06b5 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 d984d1562bb..00000000000
Binary files a/public/emoji/1f33f.png and /dev/null differ
diff --git a/public/emoji/1f33f.svg b/public/emoji/1f33f.svg
index 174e90223c6..48fb3f3fd90 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 fdedfcc2b4e..00000000000
Binary files a/public/emoji/1f340.png and /dev/null differ
diff --git a/public/emoji/1f340.svg b/public/emoji/1f340.svg
index 0b06567d5ed..1685a7ca1e6 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 c49acea67f7..00000000000
Binary files a/public/emoji/1f341.png and /dev/null differ
diff --git a/public/emoji/1f341.svg b/public/emoji/1f341.svg
index 35a45636261..2b65956e15d 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 0d60e7bdf2d..00000000000
Binary files a/public/emoji/1f342.png and /dev/null differ
diff --git a/public/emoji/1f342.svg b/public/emoji/1f342.svg
index 7ca377c8738..e03bcc4de18 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 1e43e1af820..00000000000
Binary files a/public/emoji/1f343.png and /dev/null differ
diff --git a/public/emoji/1f343.svg b/public/emoji/1f343.svg
index c19539d9d0b..ec4e9d7f66e 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 dd85742ba2c..00000000000
Binary files a/public/emoji/1f344.png and /dev/null differ
diff --git a/public/emoji/1f344.svg b/public/emoji/1f344.svg
index 853a49d20c0..2ebc9dd2ea8 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 497da8f6b22..00000000000
Binary files a/public/emoji/1f345.png and /dev/null differ
diff --git a/public/emoji/1f345.svg b/public/emoji/1f345.svg
index b0f3efc4e0e..6921847d170 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 fafd7c1a14c..00000000000
Binary files a/public/emoji/1f346.png and /dev/null differ
diff --git a/public/emoji/1f346.svg b/public/emoji/1f346.svg
index 78a52f6c8e1..a6eb936473a 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 30d22218896..00000000000
Binary files a/public/emoji/1f347.png and /dev/null differ
diff --git a/public/emoji/1f347.svg b/public/emoji/1f347.svg
index e924fc21636..bbcc06a2937 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 c01232d419d..00000000000
Binary files a/public/emoji/1f348.png and /dev/null differ
diff --git a/public/emoji/1f348.svg b/public/emoji/1f348.svg
index d715aaa2524..ddd15f63123 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 0761488b4c9..00000000000
Binary files a/public/emoji/1f349.png and /dev/null differ
diff --git a/public/emoji/1f349.svg b/public/emoji/1f349.svg
index 0f7a175f77a..4ba2a40d95e 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 ab14e5378db..00000000000
Binary files a/public/emoji/1f34a.png and /dev/null differ
diff --git a/public/emoji/1f34a.svg b/public/emoji/1f34a.svg
index a6c48c5ff0a..8dc08a76cc2 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 9a7d95ca220..00000000000
Binary files a/public/emoji/1f34b.png and /dev/null differ
diff --git a/public/emoji/1f34b.svg b/public/emoji/1f34b.svg
index e6dafd4c743..6a4aea458cf 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 f4987279580..00000000000
Binary files a/public/emoji/1f34c.png and /dev/null differ
diff --git a/public/emoji/1f34c.svg b/public/emoji/1f34c.svg
index 9f7af936f18..19a2413fe55 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 c89a1606462..00000000000
Binary files a/public/emoji/1f34d.png and /dev/null differ
diff --git a/public/emoji/1f34d.svg b/public/emoji/1f34d.svg
index 350c11f2819..ed6150475ef 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 da650c60f62..00000000000
Binary files a/public/emoji/1f34e.png and /dev/null differ
diff --git a/public/emoji/1f34e.svg b/public/emoji/1f34e.svg
index 1353d5dd57a..47576d4e581 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 5fd51bd3915..00000000000
Binary files a/public/emoji/1f34f.png and /dev/null differ
diff --git a/public/emoji/1f34f.svg b/public/emoji/1f34f.svg
index 27561bc31df..8210910416e 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 3869f718bcf..00000000000
Binary files a/public/emoji/1f350.png and /dev/null differ
diff --git a/public/emoji/1f350.svg b/public/emoji/1f350.svg
index 467a86e13ac..161fe7a9432 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 9ab57cbb758..00000000000
Binary files a/public/emoji/1f351.png and /dev/null differ
diff --git a/public/emoji/1f351.svg b/public/emoji/1f351.svg
index 574969a8e8c..2f6beeebe36 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 9b10cbaac5e..00000000000
Binary files a/public/emoji/1f352.png and /dev/null differ
diff --git a/public/emoji/1f352.svg b/public/emoji/1f352.svg
index d43aca6dcfc..ba6f99a596e 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 7bb86f0b29c..00000000000
Binary files a/public/emoji/1f353.png and /dev/null differ
diff --git a/public/emoji/1f353.svg b/public/emoji/1f353.svg
index 709e0db4b42..0243a55b709 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 3573b28a1fd..00000000000
Binary files a/public/emoji/1f354.png and /dev/null differ
diff --git a/public/emoji/1f354.svg b/public/emoji/1f354.svg
index 34608757f3a..7c954be89d8 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 e07365cb398..00000000000
Binary files a/public/emoji/1f355.png and /dev/null differ
diff --git a/public/emoji/1f355.svg b/public/emoji/1f355.svg
index 4bd17b70e06..1bd819aca3e 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 b20a59d1690..00000000000
Binary files a/public/emoji/1f356.png and /dev/null differ
diff --git a/public/emoji/1f356.svg b/public/emoji/1f356.svg
index d1b3e056e92..bb4e72396ed 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 eea4a53a2f9..00000000000
Binary files a/public/emoji/1f357.png and /dev/null differ
diff --git a/public/emoji/1f357.svg b/public/emoji/1f357.svg
index dca233f0beb..6096785dece 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 7fbd08e4ff9..00000000000
Binary files a/public/emoji/1f358.png and /dev/null differ
diff --git a/public/emoji/1f358.svg b/public/emoji/1f358.svg
index 5e38bb4fbe3..f59e71bc022 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 d3d8ee25cb8..00000000000
Binary files a/public/emoji/1f359.png and /dev/null differ
diff --git a/public/emoji/1f359.svg b/public/emoji/1f359.svg
index 0c7cf7952bf..7d6ececa89d 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 6e3ac7956b1..00000000000
Binary files a/public/emoji/1f35a.png and /dev/null differ
diff --git a/public/emoji/1f35a.svg b/public/emoji/1f35a.svg
index 08398ca6cd6..ebbc452f5a2 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 69657ca8103..00000000000
Binary files a/public/emoji/1f35b.png and /dev/null differ
diff --git a/public/emoji/1f35b.svg b/public/emoji/1f35b.svg
index 5880aea591d..f265581010a 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 c1cb7cd7384..00000000000
Binary files a/public/emoji/1f35c.png and /dev/null differ
diff --git a/public/emoji/1f35c.svg b/public/emoji/1f35c.svg
index 93c4cdbf2b2..f5371889f17 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 89c24a321f1..00000000000
Binary files a/public/emoji/1f35d.png and /dev/null differ
diff --git a/public/emoji/1f35d.svg b/public/emoji/1f35d.svg
index 52f7db9cab6..6c795af5738 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 6676510aaa5..00000000000
Binary files a/public/emoji/1f35e.png and /dev/null differ
diff --git a/public/emoji/1f35e.svg b/public/emoji/1f35e.svg
index bbaae9cc6ca..1df731d9d4e 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 4e2a4caacef..00000000000
Binary files a/public/emoji/1f35f.png and /dev/null differ
diff --git a/public/emoji/1f35f.svg b/public/emoji/1f35f.svg
index fe9e1bac70b..15661bc9298 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 92a425f2e20..00000000000
Binary files a/public/emoji/1f360.png and /dev/null differ
diff --git a/public/emoji/1f360.svg b/public/emoji/1f360.svg
index bfbbd9c5002..6ad2c856890 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 f73f37b01c7..00000000000
Binary files a/public/emoji/1f361.png and /dev/null differ
diff --git a/public/emoji/1f361.svg b/public/emoji/1f361.svg
index 6cc82e3d9a8..e74a76be2c1 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 d38a849fece..00000000000
Binary files a/public/emoji/1f362.png and /dev/null differ
diff --git a/public/emoji/1f362.svg b/public/emoji/1f362.svg
index f00dbf6dfa5..c7dda46dca9 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 f171fd2f7a1..00000000000
Binary files a/public/emoji/1f363.png and /dev/null differ
diff --git a/public/emoji/1f363.svg b/public/emoji/1f363.svg
index 93aed080747..ec00279f905 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 752ba7f1398..00000000000
Binary files a/public/emoji/1f364.png and /dev/null differ
diff --git a/public/emoji/1f364.svg b/public/emoji/1f364.svg
index c64f84077d4..3bc480d47df 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 157bded65db..00000000000
Binary files a/public/emoji/1f365.png and /dev/null differ
diff --git a/public/emoji/1f365.svg b/public/emoji/1f365.svg
index 9932d3438a2..bd9130486c7 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 8f6546e31a5..00000000000
Binary files a/public/emoji/1f366.png and /dev/null differ
diff --git a/public/emoji/1f366.svg b/public/emoji/1f366.svg
index aab1e61fd31..bf9a7609c49 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 36dfb53ca93..00000000000
Binary files a/public/emoji/1f367.png and /dev/null differ
diff --git a/public/emoji/1f367.svg b/public/emoji/1f367.svg
index 296c4f71770..0d3c276dd53 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 94267b9c434..00000000000
Binary files a/public/emoji/1f368.png and /dev/null differ
diff --git a/public/emoji/1f368.svg b/public/emoji/1f368.svg
index c1524bf3731..693e2afe7bb 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 0ca4cd0bde8..00000000000
Binary files a/public/emoji/1f369.png and /dev/null differ
diff --git a/public/emoji/1f369.svg b/public/emoji/1f369.svg
index 6620235bcdc..ae1d58f0280 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 1b6bcb1554f..00000000000
Binary files a/public/emoji/1f36a.png and /dev/null differ
diff --git a/public/emoji/1f36a.svg b/public/emoji/1f36a.svg
index 8daf31164c5..31f6bf342af 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 318bbd40ef9..00000000000
Binary files a/public/emoji/1f36b.png and /dev/null differ
diff --git a/public/emoji/1f36b.svg b/public/emoji/1f36b.svg
index 493e7b34ae0..1ac9c24d259 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 8c67ace3a35..00000000000
Binary files a/public/emoji/1f36c.png and /dev/null differ
diff --git a/public/emoji/1f36c.svg b/public/emoji/1f36c.svg
index 2c26a67d9a1..d12a6545a70 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 ad76d7bf916..00000000000
Binary files a/public/emoji/1f36d.png and /dev/null differ
diff --git a/public/emoji/1f36d.svg b/public/emoji/1f36d.svg
index 887f57c0035..2dc9f0c5975 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 fa3df67b8f6..00000000000
Binary files a/public/emoji/1f36e.png and /dev/null differ
diff --git a/public/emoji/1f36e.svg b/public/emoji/1f36e.svg
index de1d4317eef..4e251e450e5 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 9d8f592955e..00000000000
Binary files a/public/emoji/1f36f.png and /dev/null differ
diff --git a/public/emoji/1f36f.svg b/public/emoji/1f36f.svg
index 031903fc19b..b29e9bf7f20 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 4368177be9a..00000000000
Binary files a/public/emoji/1f370.png and /dev/null differ
diff --git a/public/emoji/1f370.svg b/public/emoji/1f370.svg
index c42ca1b6f1d..7156f048d34 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 83d41ca7eb9..00000000000
Binary files a/public/emoji/1f371.png and /dev/null differ
diff --git a/public/emoji/1f371.svg b/public/emoji/1f371.svg
index dbc80e5b304..da1195afa23 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 6b3f010c17a..00000000000
Binary files a/public/emoji/1f372.png and /dev/null differ
diff --git a/public/emoji/1f372.svg b/public/emoji/1f372.svg
index 52663af16da..65a5fcacc24 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 918c980577a..00000000000
Binary files a/public/emoji/1f373.png and /dev/null differ
diff --git a/public/emoji/1f373.svg b/public/emoji/1f373.svg
index 4f80ed53c02..33e20b72827 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 09f1feaea1c..00000000000
Binary files a/public/emoji/1f374.png and /dev/null differ
diff --git a/public/emoji/1f374.svg b/public/emoji/1f374.svg
index e9d6b48ef98..3585bc0eae1 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 b53b98f0c45..00000000000
Binary files a/public/emoji/1f375.png and /dev/null differ
diff --git a/public/emoji/1f375.svg b/public/emoji/1f375.svg
index 7f210fc7695..deabda3ddfa 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 2933f5672c4..00000000000
Binary files a/public/emoji/1f376.png and /dev/null differ
diff --git a/public/emoji/1f376.svg b/public/emoji/1f376.svg
index b573b4566a1..f8df7b4fb2d 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 3cc98689192..00000000000
Binary files a/public/emoji/1f377.png and /dev/null differ
diff --git a/public/emoji/1f377.svg b/public/emoji/1f377.svg
index e2652b0a32c..4df8c35fa64 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 2e50c57e98d..00000000000
Binary files a/public/emoji/1f378.png and /dev/null differ
diff --git a/public/emoji/1f378.svg b/public/emoji/1f378.svg
index a8c9960d86f..ed6ca0eb0d2 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 cd714f81b36..00000000000
Binary files a/public/emoji/1f379.png and /dev/null differ
diff --git a/public/emoji/1f379.svg b/public/emoji/1f379.svg
index b96f8f05cfc..7b4f6eebf45 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 b6d73dc0b7a..00000000000
Binary files a/public/emoji/1f37a.png and /dev/null differ
diff --git a/public/emoji/1f37a.svg b/public/emoji/1f37a.svg
index 85e65ba62d3..575e03bd508 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 b55deb66b41..00000000000
Binary files a/public/emoji/1f37b.png and /dev/null differ
diff --git a/public/emoji/1f37b.svg b/public/emoji/1f37b.svg
index 76c8bdc071b..c4bd4c71925 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 2bd10524180..00000000000
Binary files a/public/emoji/1f37c.png and /dev/null differ
diff --git a/public/emoji/1f37c.svg b/public/emoji/1f37c.svg
index 1491a98b886..0f776fcb742 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 7411755f708..00000000000
Binary files a/public/emoji/1f37d.png and /dev/null differ
diff --git a/public/emoji/1f37d.svg b/public/emoji/1f37d.svg
index 95bd3821f5e..469593c05d8 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 285a79a93d0..00000000000
Binary files a/public/emoji/1f37e.png and /dev/null differ
diff --git a/public/emoji/1f37e.svg b/public/emoji/1f37e.svg
index 24714015c48..604147b6ec4 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 36853e381d4..00000000000
Binary files a/public/emoji/1f37f.png and /dev/null differ
diff --git a/public/emoji/1f37f.svg b/public/emoji/1f37f.svg
index 74510dcbe49..0902f28801d 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 0f253c3d8c8..00000000000
Binary files a/public/emoji/1f380.png and /dev/null differ
diff --git a/public/emoji/1f380.svg b/public/emoji/1f380.svg
index 12c535e99c6..d031920efee 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 844e2164560..00000000000
Binary files a/public/emoji/1f381.png and /dev/null differ
diff --git a/public/emoji/1f381.svg b/public/emoji/1f381.svg
index bd62608c9a7..bbe0fa9e0c3 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 317e9a41949..00000000000
Binary files a/public/emoji/1f382.png and /dev/null differ
diff --git a/public/emoji/1f382.svg b/public/emoji/1f382.svg
index 0bbef8ccc58..955152aada1 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 44c3fc0aec9..00000000000
Binary files a/public/emoji/1f383.png and /dev/null differ
diff --git a/public/emoji/1f383.svg b/public/emoji/1f383.svg
index 21144b72ead..bdab6d29076 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 4197d37a52b..00000000000
Binary files a/public/emoji/1f384.png and /dev/null differ
diff --git a/public/emoji/1f384.svg b/public/emoji/1f384.svg
index 27bbe5fc5ab..d8f76bc7f15 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 5233ffb7174..00000000000
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 13c2657c34d..2eef1d1d0fe 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 4e845438197..00000000000
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 4089865318f..ce5e991ff7b 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 7fc4f33b60f..00000000000
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 9286b2f809f..e6b9f14875d 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 d1d5a15132d..00000000000
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 3745e8eef1f..4e6a2efebfa 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 4d697a01f24..00000000000
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 af8c96721c3..91b20f10be2 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 bc83ab80d52..00000000000
Binary files a/public/emoji/1f385.png and /dev/null differ
diff --git a/public/emoji/1f385.svg b/public/emoji/1f385.svg
index 9f07458bae6..55e0d6c56cb 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 176c8b58265..00000000000
Binary files a/public/emoji/1f386.png and /dev/null differ
diff --git a/public/emoji/1f386.svg b/public/emoji/1f386.svg
index 9b8995a4e67..712a7f0110f 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 30339cd6e09..00000000000
Binary files a/public/emoji/1f387.png and /dev/null differ
diff --git a/public/emoji/1f387.svg b/public/emoji/1f387.svg
index 2014225233b..3e81c5c2d77 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 07916fe6df1..00000000000
Binary files a/public/emoji/1f388.png and /dev/null differ
diff --git a/public/emoji/1f388.svg b/public/emoji/1f388.svg
index d29c08e05d4..d799bc41bac 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 0244d60f269..00000000000
Binary files a/public/emoji/1f389.png and /dev/null differ
diff --git a/public/emoji/1f389.svg b/public/emoji/1f389.svg
index b0adb4c7257..0e5d08936a2 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 ba4fd9b12be..00000000000
Binary files a/public/emoji/1f38a.png and /dev/null differ
diff --git a/public/emoji/1f38a.svg b/public/emoji/1f38a.svg
index a29c16a78c5..961ed4fb652 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 46fcb3a1aac..00000000000
Binary files a/public/emoji/1f38b.png and /dev/null differ
diff --git a/public/emoji/1f38b.svg b/public/emoji/1f38b.svg
index ad576db713f..80bdcf94a8b 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 273bd0f0fe5..00000000000
Binary files a/public/emoji/1f38c.png and /dev/null differ
diff --git a/public/emoji/1f38c.svg b/public/emoji/1f38c.svg
index 959e66865cd..8ec2b57f661 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 5d5e0e728a0..00000000000
Binary files a/public/emoji/1f38d.png and /dev/null differ
diff --git a/public/emoji/1f38d.svg b/public/emoji/1f38d.svg
index 952e4c4c652..f3bc7cfe431 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 10955615110..00000000000
Binary files a/public/emoji/1f38e.png and /dev/null differ
diff --git a/public/emoji/1f38e.svg b/public/emoji/1f38e.svg
index 05628ca3ac5..beb21af5cf2 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 3b451035a3a..00000000000
Binary files a/public/emoji/1f38f.png and /dev/null differ
diff --git a/public/emoji/1f38f.svg b/public/emoji/1f38f.svg
index 8f1261b6c3d..51c1fbde8ec 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 3c9ef3a95f6..00000000000
Binary files a/public/emoji/1f390.png and /dev/null differ
diff --git a/public/emoji/1f390.svg b/public/emoji/1f390.svg
index 6a2c3ac9027..f2c5c6ea8f8 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 1a28426592a..00000000000
Binary files a/public/emoji/1f391.png and /dev/null differ
diff --git a/public/emoji/1f391.svg b/public/emoji/1f391.svg
index 7a1e114284f..5fae1c37bfe 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 9997c86e7dc..00000000000
Binary files a/public/emoji/1f392.png and /dev/null differ
diff --git a/public/emoji/1f392.svg b/public/emoji/1f392.svg
index 812ae04099b..67c626e867b 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 8b17ddd9d00..00000000000
Binary files a/public/emoji/1f393.png and /dev/null differ
diff --git a/public/emoji/1f393.svg b/public/emoji/1f393.svg
index 743f8c1d982..b3e6d83e1c9 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 ecd3fb03584..00000000000
Binary files a/public/emoji/1f396.png and /dev/null differ
diff --git a/public/emoji/1f396.svg b/public/emoji/1f396.svg
index 316e3a49eb5..b9102321afd 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 3988bbd094c..00000000000
Binary files a/public/emoji/1f397.png and /dev/null differ
diff --git a/public/emoji/1f397.svg b/public/emoji/1f397.svg
index 11875061e15..9c6a7b40833 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 cd9167654ff..00000000000
Binary files a/public/emoji/1f399.png and /dev/null differ
diff --git a/public/emoji/1f399.svg b/public/emoji/1f399.svg
index 44c4b3f0a26..853475c2376 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 720a3b34119..00000000000
Binary files a/public/emoji/1f39a.png and /dev/null differ
diff --git a/public/emoji/1f39a.svg b/public/emoji/1f39a.svg
index 426ccd12ff9..28cd6ecd04a 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 6635ac93b50..00000000000
Binary files a/public/emoji/1f39b.png and /dev/null differ
diff --git a/public/emoji/1f39b.svg b/public/emoji/1f39b.svg
index 54dda727d29..4bb880b2774 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 30143aedbe6..00000000000
Binary files a/public/emoji/1f39e.png and /dev/null differ
diff --git a/public/emoji/1f39e.svg b/public/emoji/1f39e.svg
index 1a65cc86ec4..2823df68cc6 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 e510f4a7a50..00000000000
Binary files a/public/emoji/1f39f.png and /dev/null differ
diff --git a/public/emoji/1f39f.svg b/public/emoji/1f39f.svg
index 6e4c9b6922c..59db5eb8ce3 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 a17074edf05..00000000000
Binary files a/public/emoji/1f3a0.png and /dev/null differ
diff --git a/public/emoji/1f3a0.svg b/public/emoji/1f3a0.svg
index 1c1feb0901c..fd3e3464fad 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 55c8ff0475b..00000000000
Binary files a/public/emoji/1f3a1.png and /dev/null differ
diff --git a/public/emoji/1f3a1.svg b/public/emoji/1f3a1.svg
index 72c71cd4219..70b23f1e460 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 5b849e071e8..00000000000
Binary files a/public/emoji/1f3a2.png and /dev/null differ
diff --git a/public/emoji/1f3a2.svg b/public/emoji/1f3a2.svg
index e8efa01a22b..350ee1c3267 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 dfcdf07eb50..00000000000
Binary files a/public/emoji/1f3a3.png and /dev/null differ
diff --git a/public/emoji/1f3a3.svg b/public/emoji/1f3a3.svg
index daa26dc601c..8a41469416b 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 d4e6b0def25..00000000000
Binary files a/public/emoji/1f3a4.png and /dev/null differ
diff --git a/public/emoji/1f3a4.svg b/public/emoji/1f3a4.svg
index 810538abda3..854679bc75d 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 4e73b130155..00000000000
Binary files a/public/emoji/1f3a5.png and /dev/null differ
diff --git a/public/emoji/1f3a5.svg b/public/emoji/1f3a5.svg
index da84a9fc618..7d6255d803a 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 65f27b386f2..00000000000
Binary files a/public/emoji/1f3a6.png and /dev/null differ
diff --git a/public/emoji/1f3a6.svg b/public/emoji/1f3a6.svg
index 1dca8b5178f..20804c97780 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 e9fd34041d8..00000000000
Binary files a/public/emoji/1f3a7.png and /dev/null differ
diff --git a/public/emoji/1f3a7.svg b/public/emoji/1f3a7.svg
index 15d02890220..ef591d6b155 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 bd6afe9ff06..00000000000
Binary files a/public/emoji/1f3a8.png and /dev/null differ
diff --git a/public/emoji/1f3a8.svg b/public/emoji/1f3a8.svg
index c70f95ee6c4..184cb761b80 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 131b657b109..00000000000
Binary files a/public/emoji/1f3a9.png and /dev/null differ
diff --git a/public/emoji/1f3a9.svg b/public/emoji/1f3a9.svg
index d61f2f3d014..6fd99395d6d 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 b0379775b12..00000000000
Binary files a/public/emoji/1f3aa.png and /dev/null differ
diff --git a/public/emoji/1f3aa.svg b/public/emoji/1f3aa.svg
index 6d0fdff84d2..e68ca8a78c4 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 605936bb6b3..00000000000
Binary files a/public/emoji/1f3ab.png and /dev/null differ
diff --git a/public/emoji/1f3ab.svg b/public/emoji/1f3ab.svg
index 4e2c9b8ebc7..c29ba291721 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 81390883111..00000000000
Binary files a/public/emoji/1f3ac.png and /dev/null differ
diff --git a/public/emoji/1f3ac.svg b/public/emoji/1f3ac.svg
index 7e70040c5e5..1a91c024e40 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 685441fdaa1..00000000000
Binary files a/public/emoji/1f3ad.png and /dev/null differ
diff --git a/public/emoji/1f3ad.svg b/public/emoji/1f3ad.svg
index f94769858f4..de1ca17bb2b 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 316a9106a55..00000000000
Binary files a/public/emoji/1f3ae.png and /dev/null differ
diff --git a/public/emoji/1f3ae.svg b/public/emoji/1f3ae.svg
index 534a483de13..c96c63589c9 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 f6704aeb8ba..00000000000
Binary files a/public/emoji/1f3af.png and /dev/null differ
diff --git a/public/emoji/1f3af.svg b/public/emoji/1f3af.svg
index fe4adfa486c..fffbf85a5e0 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 ee71b6c268c..00000000000
Binary files a/public/emoji/1f3b0.png and /dev/null differ
diff --git a/public/emoji/1f3b0.svg b/public/emoji/1f3b0.svg
index bf844ef6325..94d62408f02 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 38ca662eded..00000000000
Binary files a/public/emoji/1f3b1.png and /dev/null differ
diff --git a/public/emoji/1f3b1.svg b/public/emoji/1f3b1.svg
index c4dcbfe7f8f..29ad5068313 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 ad3626fe5e5..00000000000
Binary files a/public/emoji/1f3b2.png and /dev/null differ
diff --git a/public/emoji/1f3b2.svg b/public/emoji/1f3b2.svg
index 56434d024df..036835dc788 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 63add89e53b..00000000000
Binary files a/public/emoji/1f3b3.png and /dev/null differ
diff --git a/public/emoji/1f3b3.svg b/public/emoji/1f3b3.svg
index 3fe632fcbf5..997b5d30987 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 6766b044d95..00000000000
Binary files a/public/emoji/1f3b4.png and /dev/null differ
diff --git a/public/emoji/1f3b4.svg b/public/emoji/1f3b4.svg
index 9618a3cb199..e0dcba142d3 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 06691ef61bb..00000000000
Binary files a/public/emoji/1f3b5.png and /dev/null differ
diff --git a/public/emoji/1f3b5.svg b/public/emoji/1f3b5.svg
index 7ce21dd8d19..d748d57ac80 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 57d499aa181..00000000000
Binary files a/public/emoji/1f3b6.png and /dev/null differ
diff --git a/public/emoji/1f3b6.svg b/public/emoji/1f3b6.svg
index 9c0b8a81e88..f1e96a14384 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 a392faec291..00000000000
Binary files a/public/emoji/1f3b7.png and /dev/null differ
diff --git a/public/emoji/1f3b7.svg b/public/emoji/1f3b7.svg
index a3bf5ca27d5..146331c5032 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 43d752f1e3d..00000000000
Binary files a/public/emoji/1f3b8.png and /dev/null differ
diff --git a/public/emoji/1f3b8.svg b/public/emoji/1f3b8.svg
index e31145b883c..9253fa7122f 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 442b7456842..00000000000
Binary files a/public/emoji/1f3b9.png and /dev/null differ
diff --git a/public/emoji/1f3b9.svg b/public/emoji/1f3b9.svg
index 4605d3fbd5b..f3dc5d6fbf7 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 864ccbcd04a..00000000000
Binary files a/public/emoji/1f3ba.png and /dev/null differ
diff --git a/public/emoji/1f3ba.svg b/public/emoji/1f3ba.svg
index 248ae7d2aa2..69c96b2bcf1 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 e1e76cce242..00000000000
Binary files a/public/emoji/1f3bb.png and /dev/null differ
diff --git a/public/emoji/1f3bb.svg b/public/emoji/1f3bb.svg
index 3e9cf6e764d..bb41fa03ade 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 47dc05a8ef5..00000000000
Binary files a/public/emoji/1f3bc.png and /dev/null differ
diff --git a/public/emoji/1f3bc.svg b/public/emoji/1f3bc.svg
index c07402486c7..5a6b2c5432a 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 6d83c06b803..00000000000
Binary files a/public/emoji/1f3bd.png and /dev/null differ
diff --git a/public/emoji/1f3bd.svg b/public/emoji/1f3bd.svg
index b612348f3fc..5afc205fc09 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 7e68ba8f301..00000000000
Binary files a/public/emoji/1f3be.png and /dev/null differ
diff --git a/public/emoji/1f3be.svg b/public/emoji/1f3be.svg
index 25ead517e9f..a32596c85e2 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 4a2d2c12306..00000000000
Binary files a/public/emoji/1f3bf.png and /dev/null differ
diff --git a/public/emoji/1f3bf.svg b/public/emoji/1f3bf.svg
index c18b6706dd1..8fc9b173d8a 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 64c76b79c6d..00000000000
Binary files a/public/emoji/1f3c0.png and /dev/null differ
diff --git a/public/emoji/1f3c0.svg b/public/emoji/1f3c0.svg
index 4c88cd07ed5..19fe48e475d 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 5a71eecb89b..00000000000
Binary files a/public/emoji/1f3c1.png and /dev/null differ
diff --git a/public/emoji/1f3c1.svg b/public/emoji/1f3c1.svg
index a57b1b00143..a8b2718646b 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 00000000000..80f18eae430
--- /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 00000000000..d9d27bd1b4f
--- /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 00000000000..93bdecc58b3
--- /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 00000000000..076c81b98b6
--- /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 00000000000..b2d6ad96e7c
--- /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 6361c0f2c9d..00000000000
Binary files a/public/emoji/1f3c2.png and /dev/null differ
diff --git a/public/emoji/1f3c2.svg b/public/emoji/1f3c2.svg
index 347e2d7f789..7239e125221 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 00000000000..570fc7cc05b
--- /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 00000000000..dfff62b71cc
--- /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 9355239a52d..00000000000
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 4b9b89b0687..dfff62b71cc 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 00000000000..ab219949db9
--- /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 00000000000..093f4ba69cc
--- /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 6112fd5c376..00000000000
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 fd2a61abd92..093f4ba69cc 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 00000000000..c7d77e2afd0
--- /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 00000000000..fc486856e82
--- /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 625ec708f48..00000000000
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 6e8a3ba0d93..fc486856e82 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 00000000000..ec6cb8d7bd9
--- /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 00000000000..ebf10ebdeb5
--- /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 242f1b56337..00000000000
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 819f33c333b..ebf10ebdeb5 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 00000000000..6a6be6cb8e7
--- /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 00000000000..870bf9f5bc2
--- /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 2976c6f019f..00000000000
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 622c252e464..870bf9f5bc2 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 00000000000..267f23f2a21
--- /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 00000000000..2916e589759
--- /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 e914915976a..00000000000
Binary files a/public/emoji/1f3c3.png and /dev/null differ
diff --git a/public/emoji/1f3c3.svg b/public/emoji/1f3c3.svg
index e292a290c69..2916e589759 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 00000000000..1e6a1bb30bb
--- /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 00000000000..10680958ebc
--- /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 b5faaa524cc..00000000000
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 b76cc56bcda..10680958ebc 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 00000000000..63730d1c099
--- /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 00000000000..02facb5ce7d
--- /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 6d92e412ff1..00000000000
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 f595853c7a4..02facb5ce7d 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 00000000000..03e18b72d1e
--- /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 00000000000..bf3a8b32be0
--- /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 f05ef59496e..00000000000
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 5ddcf250fea..bf3a8b32be0 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 00000000000..866a81364a1
--- /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 00000000000..d3529de70d5
--- /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 35e143d19dc..00000000000
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 bf0fa36f2c2..d3529de70d5 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 00000000000..40c4e2605fe
--- /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 00000000000..5c4f2a5e465
--- /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 38917658eac..00000000000
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 294226da2d0..5c4f2a5e465 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 00000000000..ea334a12a68
--- /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 00000000000..88bd36f1aab
--- /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 3ab017adf4b..00000000000
Binary files a/public/emoji/1f3c4.png and /dev/null differ
diff --git a/public/emoji/1f3c4.svg b/public/emoji/1f3c4.svg
index 53b845c633e..88bd36f1aab 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 b85896b14da..00000000000
Binary files a/public/emoji/1f3c5.png and /dev/null differ
diff --git a/public/emoji/1f3c5.svg b/public/emoji/1f3c5.svg
index 4862d3c6929..1514714dc5f 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 ac2895c1896..00000000000
Binary files a/public/emoji/1f3c6.png and /dev/null differ
diff --git a/public/emoji/1f3c6.svg b/public/emoji/1f3c6.svg
index 025592e6df6..6ecc234afff 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 e9bf4092e98..00000000000
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 308dd7abefe..47ac7e4180a 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 031bbc3d867..00000000000
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 f841b3e2d7e..b8509d9d105 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 b40ef891f9b..00000000000
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 ca972a62fcd..67944e28827 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 e286cb85065..00000000000
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 c8f38508495..5bea32d7c61 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 453c51c6007..00000000000
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 1ee4554df15..a6c6031f706 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 addf9edac56..00000000000
Binary files a/public/emoji/1f3c7.png and /dev/null differ
diff --git a/public/emoji/1f3c7.svg b/public/emoji/1f3c7.svg
index f790b688592..b6b0ecc8ef7 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 10366f41fce..00000000000
Binary files a/public/emoji/1f3c8.png and /dev/null differ
diff --git a/public/emoji/1f3c8.svg b/public/emoji/1f3c8.svg
index 85ecdbf9cba..3a7e9ea5ca0 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 b1872273436..00000000000
Binary files a/public/emoji/1f3c9.png and /dev/null differ
diff --git a/public/emoji/1f3c9.svg b/public/emoji/1f3c9.svg
index dca5f049351..c61d5e10497 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 00000000000..b566b0b4953
--- /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 00000000000..4adae1bee63
--- /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 38441c9ca9a..00000000000
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 8484a53049e..4adae1bee63 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 00000000000..938af613b49
--- /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 00000000000..b7bad319578
--- /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 b0d43112444..00000000000
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 456bee3b395..b7bad319578 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 00000000000..fb1f38e4b46
--- /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 00000000000..87d970d38bb
--- /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 211e77e2aa0..00000000000
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 57e0642245f..87d970d38bb 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 00000000000..c506400824a
--- /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 00000000000..68084d89a18
--- /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 f34c34db9d2..00000000000
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 12d607b4bb1..68084d89a18 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 00000000000..7f97b5f07b7
--- /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 00000000000..0e93a98c93b
--- /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 3e9231ff868..00000000000
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 99fe3f240e9..0e93a98c93b 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 00000000000..1d4abfd761c
--- /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 00000000000..7611ea22ab5
--- /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 55b4d72f9a7..00000000000
Binary files a/public/emoji/1f3ca.png and /dev/null differ
diff --git a/public/emoji/1f3ca.svg b/public/emoji/1f3ca.svg
index 5b62b5cc772..7611ea22ab5 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 00000000000..70fdc084fec
--- /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 00000000000..3938ed9cc22
--- /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 febaad123ec..00000000000
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 1d993f5b36f..3938ed9cc22 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 00000000000..5f84387930a
--- /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 00000000000..11f1a172805
--- /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 27ae794a18e..00000000000
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 4b386c0119d..11f1a172805 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 00000000000..310e4853380
--- /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 00000000000..8f7a557280b
--- /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 45c4c22c709..00000000000
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 06778330e18..8f7a557280b 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 00000000000..7026af4e9fa
--- /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 00000000000..4e06d696b0c
--- /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 67dd21d2464..00000000000
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 7df96c44d2a..4e06d696b0c 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 00000000000..27cfbeef629
--- /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 00000000000..08e998ed92f
--- /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 fa0152038b6..00000000000
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 252bf0e4a8c..08e998ed92f 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 00000000000..3e6f21e92c2
--- /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 00000000000..01306a75380
--- /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 afdeaa476af..00000000000
Binary files a/public/emoji/1f3cb.png and /dev/null differ
diff --git a/public/emoji/1f3cb.svg b/public/emoji/1f3cb.svg
index 606b0076bcf..01306a75380 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 00000000000..24b0ade2542
--- /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 00000000000..ca733cb9558
--- /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 00000000000..ca733cb9558
--- /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 00000000000..e3379b1e3a3
--- /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 00000000000..c0c7941621f
--- /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 00000000000..c0c7941621f
--- /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 00000000000..0fb927c829d
--- /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 00000000000..6e67fa7ab09
--- /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 00000000000..6e67fa7ab09
--- /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 00000000000..150fc0e2126
--- /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 00000000000..c891ce67ae5
--- /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 00000000000..c891ce67ae5
--- /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 00000000000..78031ea8572
--- /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 00000000000..703b6c66e5a
--- /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 00000000000..703b6c66e5a
--- /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 00000000000..a51cba2e141
--- /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 00000000000..23c4ae77ed8
--- /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 39c552de86d..00000000000
Binary files a/public/emoji/1f3cc.png and /dev/null differ
diff --git a/public/emoji/1f3cc.svg b/public/emoji/1f3cc.svg
index 25cce198a94..23c4ae77ed8 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 3d1d567e8ec..00000000000
Binary files a/public/emoji/1f3cd.png and /dev/null differ
diff --git a/public/emoji/1f3cd.svg b/public/emoji/1f3cd.svg
index ea58df55bed..7384d6b0e79 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 fe3f045f446..00000000000
Binary files a/public/emoji/1f3ce.png and /dev/null differ
diff --git a/public/emoji/1f3ce.svg b/public/emoji/1f3ce.svg
index f6bb1d8f9c1..3fc893c9075 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 d602294a2cd..00000000000
Binary files a/public/emoji/1f3cf.png and /dev/null differ
diff --git a/public/emoji/1f3cf.svg b/public/emoji/1f3cf.svg
index 1723dfe48f1..c9f934012ea 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 7a0e49d4b07..00000000000
Binary files a/public/emoji/1f3d0.png and /dev/null differ
diff --git a/public/emoji/1f3d0.svg b/public/emoji/1f3d0.svg
index bf0a6132390..6f3923c6ace 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 839637716ee..00000000000
Binary files a/public/emoji/1f3d1.png and /dev/null differ
diff --git a/public/emoji/1f3d1.svg b/public/emoji/1f3d1.svg
index 22278e5754f..3cd95b29907 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 be94e9cbf73..00000000000
Binary files a/public/emoji/1f3d2.png and /dev/null differ
diff --git a/public/emoji/1f3d2.svg b/public/emoji/1f3d2.svg
index 84c1cd50991..25513203cce 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 ff3c51727d1..00000000000
Binary files a/public/emoji/1f3d3.png and /dev/null differ
diff --git a/public/emoji/1f3d3.svg b/public/emoji/1f3d3.svg
index f7ecc84613b..f9fe5dedb5e 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 76e1cfd8313..00000000000
Binary files a/public/emoji/1f3d4.png and /dev/null differ
diff --git a/public/emoji/1f3d4.svg b/public/emoji/1f3d4.svg
index fad85a34ee2..06a703edb5a 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 d589cc1f44b..00000000000
Binary files a/public/emoji/1f3d5.png and /dev/null differ
diff --git a/public/emoji/1f3d5.svg b/public/emoji/1f3d5.svg
index 166f1a74f3d..2aec636dcc6 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 69108c8ea10..00000000000
Binary files a/public/emoji/1f3d6.png and /dev/null differ
diff --git a/public/emoji/1f3d6.svg b/public/emoji/1f3d6.svg
index 7aa2ca8b9a7..0e9cc807670 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 8206a20f63f..00000000000
Binary files a/public/emoji/1f3d7.png and /dev/null differ
diff --git a/public/emoji/1f3d7.svg b/public/emoji/1f3d7.svg
index a29f1db2707..271e35a2407 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 6ab4a2a2651..00000000000
Binary files a/public/emoji/1f3d8.png and /dev/null differ
diff --git a/public/emoji/1f3d8.svg b/public/emoji/1f3d8.svg
index ba838e874f1..805e0aa1493 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 d7b9844a0b4..00000000000
Binary files a/public/emoji/1f3d9.png and /dev/null differ
diff --git a/public/emoji/1f3d9.svg b/public/emoji/1f3d9.svg
index 3deabda4524..b740e61a2ec 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 c55e81de990..00000000000
Binary files a/public/emoji/1f3da.png and /dev/null differ
diff --git a/public/emoji/1f3da.svg b/public/emoji/1f3da.svg
index bf6c30621f0..df78c98e8eb 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 de7b559daaf..00000000000
Binary files a/public/emoji/1f3db.png and /dev/null differ
diff --git a/public/emoji/1f3db.svg b/public/emoji/1f3db.svg
index 501ea5c8b67..85a7984275f 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 e9966ff8c65..00000000000
Binary files a/public/emoji/1f3dc.png and /dev/null differ
diff --git a/public/emoji/1f3dc.svg b/public/emoji/1f3dc.svg
index f95f15ea754..5dd33f2b987 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 7fd834389b7..00000000000
Binary files a/public/emoji/1f3dd.png and /dev/null differ
diff --git a/public/emoji/1f3dd.svg b/public/emoji/1f3dd.svg
index c9bf1701250..ef5d06435e1 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 63ec7016301..00000000000
Binary files a/public/emoji/1f3de.png and /dev/null differ
diff --git a/public/emoji/1f3de.svg b/public/emoji/1f3de.svg
index c3c729a29d3..d0d38a8a1ef 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 00cd6db5e29..00000000000
Binary files a/public/emoji/1f3df.png and /dev/null differ
diff --git a/public/emoji/1f3df.svg b/public/emoji/1f3df.svg
index 579a720258b..4b9818a8ee8 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 01c98a0ba92..00000000000
Binary files a/public/emoji/1f3e0.png and /dev/null differ
diff --git a/public/emoji/1f3e0.svg b/public/emoji/1f3e0.svg
index 5edbccef4d4..c6b274a315c 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 0aae41598ef..00000000000
Binary files a/public/emoji/1f3e1.png and /dev/null differ
diff --git a/public/emoji/1f3e1.svg b/public/emoji/1f3e1.svg
index 8c1751eefca..b7fb3cc8a3e 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 7eee927d1b0..00000000000
Binary files a/public/emoji/1f3e2.png and /dev/null differ
diff --git a/public/emoji/1f3e2.svg b/public/emoji/1f3e2.svg
index 0f38711e039..71a4330611f 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 a23848f9aa0..00000000000
Binary files a/public/emoji/1f3e3.png and /dev/null differ
diff --git a/public/emoji/1f3e3.svg b/public/emoji/1f3e3.svg
index db2004f55fd..697b1bd85f4 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 3745aff8dd2..00000000000
Binary files a/public/emoji/1f3e4.png and /dev/null differ
diff --git a/public/emoji/1f3e4.svg b/public/emoji/1f3e4.svg
index 8359ad4f103..62040366aaf 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 1cbce4ae767..00000000000
Binary files a/public/emoji/1f3e5.png and /dev/null differ
diff --git a/public/emoji/1f3e5.svg b/public/emoji/1f3e5.svg
index 448460d267a..f115d2de489 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 dffdcef36a1..00000000000
Binary files a/public/emoji/1f3e6.png and /dev/null differ
diff --git a/public/emoji/1f3e6.svg b/public/emoji/1f3e6.svg
index dee2c6fa7c3..99f5f1ff0f6 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 4d935307b94..00000000000
Binary files a/public/emoji/1f3e7.png and /dev/null differ
diff --git a/public/emoji/1f3e7.svg b/public/emoji/1f3e7.svg
index 770f0195912..520b8211481 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 ea8f4c4979a..00000000000
Binary files a/public/emoji/1f3e8.png and /dev/null differ
diff --git a/public/emoji/1f3e8.svg b/public/emoji/1f3e8.svg
index 6aaa7598864..667bffaf714 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 5e136be6f8b..00000000000
Binary files a/public/emoji/1f3e9.png and /dev/null differ
diff --git a/public/emoji/1f3e9.svg b/public/emoji/1f3e9.svg
index 5842ed57f8a..036f2cb6eed 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 26b53b5669e..00000000000
Binary files a/public/emoji/1f3ea.png and /dev/null differ
diff --git a/public/emoji/1f3ea.svg b/public/emoji/1f3ea.svg
index c423a1ef7e6..73b36202818 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 269759534f0..00000000000
Binary files a/public/emoji/1f3eb.png and /dev/null differ
diff --git a/public/emoji/1f3eb.svg b/public/emoji/1f3eb.svg
index 67a04c9213b..e02359f960d 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 58867c7a6e1..00000000000
Binary files a/public/emoji/1f3ec.png and /dev/null differ
diff --git a/public/emoji/1f3ec.svg b/public/emoji/1f3ec.svg
index d39eedf566b..da4dac44885 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 e1d2ddf4a27..00000000000
Binary files a/public/emoji/1f3ed.png and /dev/null differ
diff --git a/public/emoji/1f3ed.svg b/public/emoji/1f3ed.svg
index 43aaa5a0768..2303b92e1ec 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 dfd933f6f36..00000000000
Binary files a/public/emoji/1f3ee.png and /dev/null differ
diff --git a/public/emoji/1f3ee.svg b/public/emoji/1f3ee.svg
index 664a33340e5..3fa57346baf 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 64b4e33a1ae..00000000000
Binary files a/public/emoji/1f3ef.png and /dev/null differ
diff --git a/public/emoji/1f3ef.svg b/public/emoji/1f3ef.svg
index f4ba33581fd..19127e6ff4a 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 888d11332ce..00000000000
Binary files a/public/emoji/1f3f0.png and /dev/null differ
diff --git a/public/emoji/1f3f0.svg b/public/emoji/1f3f0.svg
index b0b4b12cc69..a8a08cdc2d3 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 1bec5f2ffd7..00000000000
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 e082546b2bb..00000000000
--- 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 00000000000..f3994d389a6
--- /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 86d6e96d5e9..00000000000
Binary files a/public/emoji/1f3f3.png and /dev/null differ
diff --git a/public/emoji/1f3f3.svg b/public/emoji/1f3f3.svg
index d1421b827d1..2c792674e61 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 00000000000..4c8a3434467
--- /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 00000000000..a929886b8b8
--- /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 00000000000..f732be741f9
--- /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 00000000000..76ac4e04fb2
--- /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 0e28d05d5ac..00000000000
Binary files a/public/emoji/1f3f4.png and /dev/null differ
diff --git a/public/emoji/1f3f4.svg b/public/emoji/1f3f4.svg
index 0e6202dc168..82a6942b3f0 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 8030e494bcf..00000000000
Binary files a/public/emoji/1f3f5.png and /dev/null differ
diff --git a/public/emoji/1f3f5.svg b/public/emoji/1f3f5.svg
index b6576ae9991..624353dea51 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 d41c9b4f1e1..00000000000
Binary files a/public/emoji/1f3f7.png and /dev/null differ
diff --git a/public/emoji/1f3f7.svg b/public/emoji/1f3f7.svg
index 372a35f5ef8..3851970f97c 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 7ba15708990..00000000000
Binary files a/public/emoji/1f3f8.png and /dev/null differ
diff --git a/public/emoji/1f3f8.svg b/public/emoji/1f3f8.svg
index c9e2b401edc..e4ade6338f6 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 6a538bf475f..00000000000
Binary files a/public/emoji/1f3f9.png and /dev/null differ
diff --git a/public/emoji/1f3f9.svg b/public/emoji/1f3f9.svg
index e73e45cc3a6..bc367fc4e54 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 96de5056059..00000000000
Binary files a/public/emoji/1f3fa.png and /dev/null differ
diff --git a/public/emoji/1f3fa.svg b/public/emoji/1f3fa.svg
index bf02dbddafb..e2c6cd44f03 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 7c9d7cdc49a..00000000000
Binary files a/public/emoji/1f3fb.png and /dev/null differ
diff --git a/public/emoji/1f3fb.svg b/public/emoji/1f3fb.svg
index 95d9113d7e2..dd5723819d7 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 c0fc8338c58..00000000000
Binary files a/public/emoji/1f3fc.png and /dev/null differ
diff --git a/public/emoji/1f3fc.svg b/public/emoji/1f3fc.svg
index 98674ab9a59..63529209543 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 4814822f23d..00000000000
Binary files a/public/emoji/1f3fd.png and /dev/null differ
diff --git a/public/emoji/1f3fd.svg b/public/emoji/1f3fd.svg
index 3216c0c48ef..efeab639cab 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 60599fa6b77..00000000000
Binary files a/public/emoji/1f3fe.png and /dev/null differ
diff --git a/public/emoji/1f3fe.svg b/public/emoji/1f3fe.svg
index f4e86c3367b..ac82ddb0551 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 4c528eaf6d2..00000000000
Binary files a/public/emoji/1f3ff.png and /dev/null differ
diff --git a/public/emoji/1f3ff.svg b/public/emoji/1f3ff.svg
index b99182a7778..d0683b42794 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 86219144f10..00000000000
Binary files a/public/emoji/1f400.png and /dev/null differ
diff --git a/public/emoji/1f400.svg b/public/emoji/1f400.svg
index 8dcadea17b5..b3a80271c3e 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 20fb041f09f..00000000000
Binary files a/public/emoji/1f401.png and /dev/null differ
diff --git a/public/emoji/1f401.svg b/public/emoji/1f401.svg
index 944b4a2e582..54852c8f43f 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 badf5708f2f..00000000000
Binary files a/public/emoji/1f402.png and /dev/null differ
diff --git a/public/emoji/1f402.svg b/public/emoji/1f402.svg
index 491e8d181b5..b06f60b19be 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 80446615caf..00000000000
Binary files a/public/emoji/1f403.png and /dev/null differ
diff --git a/public/emoji/1f403.svg b/public/emoji/1f403.svg
index 96982688c74..cc5483e9f27 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 4d0ca534ff1..00000000000
Binary files a/public/emoji/1f404.png and /dev/null differ
diff --git a/public/emoji/1f404.svg b/public/emoji/1f404.svg
index 1bf1728714d..d0dca2b5073 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 871a8b74d56..00000000000
Binary files a/public/emoji/1f405.png and /dev/null differ
diff --git a/public/emoji/1f405.svg b/public/emoji/1f405.svg
index 27db054c5ba..383ee31f86f 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 8aac3d49448..00000000000
Binary files a/public/emoji/1f406.png and /dev/null differ
diff --git a/public/emoji/1f406.svg b/public/emoji/1f406.svg
index 7093fe41ffd..59a2e0585a4 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 2c8a29c642f..00000000000
Binary files a/public/emoji/1f407.png and /dev/null differ
diff --git a/public/emoji/1f407.svg b/public/emoji/1f407.svg
index f673e966dee..54f4d696547 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 46abe8cbc14..00000000000
Binary files a/public/emoji/1f408.png and /dev/null differ
diff --git a/public/emoji/1f408.svg b/public/emoji/1f408.svg
index 4eadb2c4162..68fe8f2a163 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 d6311cf5429..00000000000
Binary files a/public/emoji/1f409.png and /dev/null differ
diff --git a/public/emoji/1f409.svg b/public/emoji/1f409.svg
index aaf9cd252ce..ab05374fb54 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 3005c46f176..00000000000
Binary files a/public/emoji/1f40a.png and /dev/null differ
diff --git a/public/emoji/1f40a.svg b/public/emoji/1f40a.svg
index d5dd7c6abcc..1d3f3be0127 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 0df9d3c73a4..00000000000
Binary files a/public/emoji/1f40b.png and /dev/null differ
diff --git a/public/emoji/1f40b.svg b/public/emoji/1f40b.svg
index 31bb7393f62..b6d3c6032fc 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 f4ea071e2d3..00000000000
Binary files a/public/emoji/1f40c.png and /dev/null differ
diff --git a/public/emoji/1f40c.svg b/public/emoji/1f40c.svg
index b4204fae0a2..75393adf4cb 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 d0278a28d8c..00000000000
Binary files a/public/emoji/1f40d.png and /dev/null differ
diff --git a/public/emoji/1f40d.svg b/public/emoji/1f40d.svg
index 6ad56b8d9b8..7e2fc51c238 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 b3e73cc8903..00000000000
Binary files a/public/emoji/1f40e.png and /dev/null differ
diff --git a/public/emoji/1f40e.svg b/public/emoji/1f40e.svg
index b7ba4df3fb4..ac2eab05a22 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 52a44464c9b..00000000000
Binary files a/public/emoji/1f40f.png and /dev/null differ
diff --git a/public/emoji/1f40f.svg b/public/emoji/1f40f.svg
index 2cf3e571551..5905609098c 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 f9d9e38a128..00000000000
Binary files a/public/emoji/1f410.png and /dev/null differ
diff --git a/public/emoji/1f410.svg b/public/emoji/1f410.svg
index 445e63f8c9e..056f6ba0613 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 102b8a52b28..00000000000
Binary files a/public/emoji/1f411.png and /dev/null differ
diff --git a/public/emoji/1f411.svg b/public/emoji/1f411.svg
index 19d8b9e770d..58cf59a30a4 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 9fae29448e3..00000000000
Binary files a/public/emoji/1f412.png and /dev/null differ
diff --git a/public/emoji/1f412.svg b/public/emoji/1f412.svg
index 713e48da895..f6335f36781 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 bbf2bbff97a..00000000000
Binary files a/public/emoji/1f413.png and /dev/null differ
diff --git a/public/emoji/1f413.svg b/public/emoji/1f413.svg
index 349de855218..b952ce5be58 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 9a6992e55ba..00000000000
Binary files a/public/emoji/1f414.png and /dev/null differ
diff --git a/public/emoji/1f414.svg b/public/emoji/1f414.svg
index 34dfab57790..1fd1333457f 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 976143dbdbe..00000000000
Binary files a/public/emoji/1f415.png and /dev/null differ
diff --git a/public/emoji/1f415.svg b/public/emoji/1f415.svg
index 7fded5c1124..3626f8a363e 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 5f31c1a2d75..00000000000
Binary files a/public/emoji/1f416.png and /dev/null differ
diff --git a/public/emoji/1f416.svg b/public/emoji/1f416.svg
index a3f0422a51e..d6fbe7c1725 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 fead972633c..00000000000
Binary files a/public/emoji/1f417.png and /dev/null differ
diff --git a/public/emoji/1f417.svg b/public/emoji/1f417.svg
index d134de16ac3..39715ce4eba 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 b8a6d140595..00000000000
Binary files a/public/emoji/1f418.png and /dev/null differ
diff --git a/public/emoji/1f418.svg b/public/emoji/1f418.svg
index 80479aa3d7d..595a808053e 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 72c84074aac..00000000000
Binary files a/public/emoji/1f419.png and /dev/null differ
diff --git a/public/emoji/1f419.svg b/public/emoji/1f419.svg
index fa59238e2e3..0f00d078e3b 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 55721629f62..00000000000
Binary files a/public/emoji/1f41a.png and /dev/null differ
diff --git a/public/emoji/1f41a.svg b/public/emoji/1f41a.svg
index fb691d49bfa..e4aef0416e8 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 e64e72f259a..00000000000
Binary files a/public/emoji/1f41b.png and /dev/null differ
diff --git a/public/emoji/1f41b.svg b/public/emoji/1f41b.svg
index 64bcedb14da..ddc70682e61 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 994127ed6b3..00000000000
Binary files a/public/emoji/1f41c.png and /dev/null differ
diff --git a/public/emoji/1f41c.svg b/public/emoji/1f41c.svg
index 2f90d0615a6..8d8d18afd45 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 46156060096..00000000000
Binary files a/public/emoji/1f41d.png and /dev/null differ
diff --git a/public/emoji/1f41d.svg b/public/emoji/1f41d.svg
index eb1819b0750..956227a51fa 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 3d93174d7fc..00000000000
Binary files a/public/emoji/1f41e.png and /dev/null differ
diff --git a/public/emoji/1f41e.svg b/public/emoji/1f41e.svg
index 0cbee7332c1..179f097ddf8 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 c2d2faaacd4..00000000000
Binary files a/public/emoji/1f41f.png and /dev/null differ
diff --git a/public/emoji/1f41f.svg b/public/emoji/1f41f.svg
index d4ddc1a59fc..4ad05156263 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 252105235a6..00000000000
Binary files a/public/emoji/1f420.png and /dev/null differ
diff --git a/public/emoji/1f420.svg b/public/emoji/1f420.svg
index 339bfce51cd..0dc45ffe750 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 a10f4f84e35..00000000000
Binary files a/public/emoji/1f421.png and /dev/null differ
diff --git a/public/emoji/1f421.svg b/public/emoji/1f421.svg
index 51e96024a12..1c24b12d02d 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 c22f7519fe8..00000000000
Binary files a/public/emoji/1f422.png and /dev/null differ
diff --git a/public/emoji/1f422.svg b/public/emoji/1f422.svg
index 48be9dc54f3..4ad52f2ee2b 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 c5b0e8f3bcc..00000000000
Binary files a/public/emoji/1f423.png and /dev/null differ
diff --git a/public/emoji/1f423.svg b/public/emoji/1f423.svg
index 7d8abff5fd7..b3635cdd0a2 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 dccd96576ea..00000000000
Binary files a/public/emoji/1f424.png and /dev/null differ
diff --git a/public/emoji/1f424.svg b/public/emoji/1f424.svg
index f9269d14879..97667928674 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 31dfb511e0e..00000000000
Binary files a/public/emoji/1f425.png and /dev/null differ
diff --git a/public/emoji/1f425.svg b/public/emoji/1f425.svg
index fabfbf927c1..24dbec2aa52 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 e201c22be33..00000000000
Binary files a/public/emoji/1f426.png and /dev/null differ
diff --git a/public/emoji/1f426.svg b/public/emoji/1f426.svg
index 225d7677773..2760fec59f0 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 c0064fb9734..00000000000
Binary files a/public/emoji/1f427.png and /dev/null differ
diff --git a/public/emoji/1f427.svg b/public/emoji/1f427.svg
index ce85cadf290..b83882c1273 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 a0aa437a98c..00000000000
Binary files a/public/emoji/1f428.png and /dev/null differ
diff --git a/public/emoji/1f428.svg b/public/emoji/1f428.svg
index 88832b70222..9a54a0d2875 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 8ec39e396af..00000000000
Binary files a/public/emoji/1f429.png and /dev/null differ
diff --git a/public/emoji/1f429.svg b/public/emoji/1f429.svg
index 7b56afe0d70..33c5b7ec09f 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 5271637c7c4..00000000000
Binary files a/public/emoji/1f42a.png and /dev/null differ
diff --git a/public/emoji/1f42a.svg b/public/emoji/1f42a.svg
index 63e30c13aea..e7f97340d5e 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 b421d07a805..00000000000
Binary files a/public/emoji/1f42b.png and /dev/null differ
diff --git a/public/emoji/1f42b.svg b/public/emoji/1f42b.svg
index fbd4b0e1b11..a6b76e272f7 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 81434809003..00000000000
Binary files a/public/emoji/1f42c.png and /dev/null differ
diff --git a/public/emoji/1f42c.svg b/public/emoji/1f42c.svg
index abd84802ea7..dc57e89abb2 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 50afcd3262e..00000000000
Binary files a/public/emoji/1f42d.png and /dev/null differ
diff --git a/public/emoji/1f42d.svg b/public/emoji/1f42d.svg
index 0b215006dd7..60fec435e93 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 718a3986d64..00000000000
Binary files a/public/emoji/1f42e.png and /dev/null differ
diff --git a/public/emoji/1f42e.svg b/public/emoji/1f42e.svg
index f6d7c9a04ba..a3d5d0305ea 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 a4d3ef086d4..00000000000
Binary files a/public/emoji/1f42f.png and /dev/null differ
diff --git a/public/emoji/1f42f.svg b/public/emoji/1f42f.svg
index 834981944bd..934ec15ecec 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 ea75ab0426e..00000000000
Binary files a/public/emoji/1f430.png and /dev/null differ
diff --git a/public/emoji/1f430.svg b/public/emoji/1f430.svg
index ec8d17c0814..4d80f7cb523 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 efd82c2abf3..00000000000
Binary files a/public/emoji/1f431.png and /dev/null differ
diff --git a/public/emoji/1f431.svg b/public/emoji/1f431.svg
index bacd52c3880..7576d6bf349 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 3c2720446c6..00000000000
Binary files a/public/emoji/1f432.png and /dev/null differ
diff --git a/public/emoji/1f432.svg b/public/emoji/1f432.svg
index b4b36690923..4f099dc7368 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 9f19b44257c..00000000000
Binary files a/public/emoji/1f433.png and /dev/null differ
diff --git a/public/emoji/1f433.svg b/public/emoji/1f433.svg
index dc6f7f1ecbc..6085b479361 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 7cb1172f4e4..00000000000
Binary files a/public/emoji/1f434.png and /dev/null differ
diff --git a/public/emoji/1f434.svg b/public/emoji/1f434.svg
index 59351493084..ae01857998b 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 7cab9b91a82..00000000000
Binary files a/public/emoji/1f435.png and /dev/null differ
diff --git a/public/emoji/1f435.svg b/public/emoji/1f435.svg
index 5e796ada85a..671de74ec7f 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 281b81d58bd..00000000000
Binary files a/public/emoji/1f436.png and /dev/null differ
diff --git a/public/emoji/1f436.svg b/public/emoji/1f436.svg
index b6af6c613ff..d30951d4e38 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 afe05ca1676..00000000000
Binary files a/public/emoji/1f437.png and /dev/null differ
diff --git a/public/emoji/1f437.svg b/public/emoji/1f437.svg
index 30d534b0870..41fe6ff8a95 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 8825d1ad577..00000000000
Binary files a/public/emoji/1f438.png and /dev/null differ
diff --git a/public/emoji/1f438.svg b/public/emoji/1f438.svg
index a45c14aaa6c..4b2e5bbb8c3 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 9a04388e4e7..00000000000
Binary files a/public/emoji/1f439.png and /dev/null differ
diff --git a/public/emoji/1f439.svg b/public/emoji/1f439.svg
index 4027ed9b5bf..a61817e293f 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 ba7220f2de9..00000000000
Binary files a/public/emoji/1f43a.png and /dev/null differ
diff --git a/public/emoji/1f43a.svg b/public/emoji/1f43a.svg
index 7b2fd57512e..5287eeea755 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 272d56bbbcc..00000000000
Binary files a/public/emoji/1f43b.png and /dev/null differ
diff --git a/public/emoji/1f43b.svg b/public/emoji/1f43b.svg
index 681e20a5753..5b3c33d01d2 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 978382775ce..00000000000
Binary files a/public/emoji/1f43c.png and /dev/null differ
diff --git a/public/emoji/1f43c.svg b/public/emoji/1f43c.svg
index 247aacc06c4..f8964d903b6 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 3610ae4a910..00000000000
Binary files a/public/emoji/1f43d.png and /dev/null differ
diff --git a/public/emoji/1f43d.svg b/public/emoji/1f43d.svg
index 6014a8b7087..57642b28aeb 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 5fe568cee93..00000000000
Binary files a/public/emoji/1f43e.png and /dev/null differ
diff --git a/public/emoji/1f43e.svg b/public/emoji/1f43e.svg
index c6b2b83af7e..846abe58e09 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 2aac560cb22..00000000000
Binary files a/public/emoji/1f43f.png and /dev/null differ
diff --git a/public/emoji/1f43f.svg b/public/emoji/1f43f.svg
index 243ee894417..1363021ee51 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 2102ada7e09..00000000000
Binary files a/public/emoji/1f440.png and /dev/null differ
diff --git a/public/emoji/1f440.svg b/public/emoji/1f440.svg
index 8caf9aafe47..b4f59a98b53 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 21bd22bbcce..00000000000
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 facc5a21aee..00000000000
--- 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 00000000000..fd23adad74e
--- /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 9d989cdd375..00000000000
Binary files a/public/emoji/1f441.png and /dev/null differ
diff --git a/public/emoji/1f441.svg b/public/emoji/1f441.svg
index 3ce3327d161..ae4257faac6 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 d09e1e41996..00000000000
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 e203744eaf6..fcbaf73536d 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 300d60a9948..00000000000
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 e9b24783b94..103d6aca1ad 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 2a56eebe445..00000000000
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 717877f3193..50708efd1d3 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 bd270f7763e..00000000000
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 aaf77d80b35..1099e815104 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 b96bb441dff..00000000000
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 c8f653bba9b..7e451d62b9e 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 f84f9ff154a..00000000000
Binary files a/public/emoji/1f442.png and /dev/null differ
diff --git a/public/emoji/1f442.svg b/public/emoji/1f442.svg
index 3063df796cb..6af51d61dc1 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 8008d17506e..00000000000
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 db943dbf4fe..22d8710ab51 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 ac17f26e827..00000000000
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 e909c446df3..dc165861c2b 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 d8b6cbe0f8e..00000000000
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 61fe537698e..1fb7a658b54 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 004b2631e2e..00000000000
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 4b9d4661637..38bb79d05b0 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 7b33821f6c9..00000000000
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 a1daed04fd0..c3d63811184 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 2f04ac5f98f..00000000000
Binary files a/public/emoji/1f443.png and /dev/null differ
diff --git a/public/emoji/1f443.svg b/public/emoji/1f443.svg
index 6f1613804e9..6aa7857d49c 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 35f3cc2006f..00000000000
Binary files a/public/emoji/1f444.png and /dev/null differ
diff --git a/public/emoji/1f444.svg b/public/emoji/1f444.svg
index 1bdb5440fa8..0d8e7cf6fd7 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 70ce9c1225f..00000000000
Binary files a/public/emoji/1f445.png and /dev/null differ
diff --git a/public/emoji/1f445.svg b/public/emoji/1f445.svg
index 8a5af77fa8a..86d4ea2007b 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 a12a7e78430..00000000000
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 0b774dd4dda..d3797818f2b 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 cdff40ceab0..00000000000
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 8931e2428a8..478b8d0974a 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 a07ce9e5ae8..00000000000
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 1bf90d52030..f3f5c4d62df 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 4f86c88ba42..00000000000
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 cfeb3e0a5dc..75943fadf3e 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 ed1b26c35d3..00000000000
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 845edc33014..21289fae2d5 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 bc496dfeae4..00000000000
Binary files a/public/emoji/1f446.png and /dev/null differ
diff --git a/public/emoji/1f446.svg b/public/emoji/1f446.svg
index fc4d2b1fd48..73464961d93 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 140f157d8c7..00000000000
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 b6d347e66cd..942fadfdb57 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 d518544f7fa..00000000000
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 cd98682fb5e..891ba708865 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 018b688b8b7..00000000000
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 a63fe574147..e363bcc3c62 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 98845bf6f72..00000000000
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 cdb5c4a813c..a61d203139c 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 9a9b039a9fc..00000000000
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 62fa9841003..aca3691d91c 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 00d3d13ab5c..00000000000
Binary files a/public/emoji/1f447.png and /dev/null differ
diff --git a/public/emoji/1f447.svg b/public/emoji/1f447.svg
index 25b2490a249..9c0e5285339 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 88e2c306076..00000000000
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 16ef6409e58..f3b7f99d30b 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 d3c89d87c5f..00000000000
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 e37282ab886..cd2a2d02bdf 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 b23b9167358..00000000000
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 09d730d4fe2..b00149aafd9 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 3093f325c27..00000000000
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 07f16f2e936..970dcb2ce15 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 2b4cbfa120c..00000000000
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 a382bfd7b0c..0c4851b8de0 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 599fa2e3cf1..00000000000
Binary files a/public/emoji/1f448.png and /dev/null differ
diff --git a/public/emoji/1f448.svg b/public/emoji/1f448.svg
index 63e25672e31..800ff09aa33 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 4a28c6bbc89..00000000000
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 150e78be991..c810f2a8979 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 7cb13231733..00000000000
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 d30c03fe172..049a07e3453 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 5514807d71a..00000000000
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 421e7e5af34..d5b62df7492 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 b8541d6440d..00000000000
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 43db2b7b2ee..850a672de16 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 1b7aab07bb1..00000000000
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 c3fde3f9d72..a04f4c9e3ba 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 93a3cd34aa5..00000000000
Binary files a/public/emoji/1f449.png and /dev/null differ
diff --git a/public/emoji/1f449.svg b/public/emoji/1f449.svg
index 815e08efb56..93f79ee8552 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 93c7d17fb47..00000000000
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 6b68ade7ea9..f4e937b74e1 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 c0a1af6e10a..00000000000
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 7bb10f2fa3d..a24a0a1051a 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 1458b021201..00000000000
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 1543e53a8bf..5d0cb8ee952 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 c1466bfcdef..00000000000
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 6485deb721d..dabe7559b28 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 00b4ddb8953..00000000000
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 2eded30724a..e0641854629 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 b14ca5f5211..00000000000
Binary files a/public/emoji/1f44a.png and /dev/null differ
diff --git a/public/emoji/1f44a.svg b/public/emoji/1f44a.svg
index 20b808db585..6d8336dafab 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 6b2b34b106e..00000000000
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 981d4d47492..86471187bfa 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 b857119732e..00000000000
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 0e3fb5f890e..490e479a4c9 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 6283b670f43..00000000000
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 801f13f4d74..8988c6e17a1 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 fe6b2baa747..00000000000
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 687ff445f9e..6c35abe5243 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 4bd168ebb78..00000000000
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 68636c28d47..5ef6da63f03 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 e0cd79b45f5..00000000000
Binary files a/public/emoji/1f44b.png and /dev/null differ
diff --git a/public/emoji/1f44b.svg b/public/emoji/1f44b.svg
index 2118c9b43d0..5860e815995 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 cecf7b2ab5a..00000000000
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 988b464e536..7c8564a1d81 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 c19239bcd3d..00000000000
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 c03cb353f11..606e6a14a87 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 94b65b03ecd..00000000000
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 e6d0d547534..0477988343a 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 03d26f08e6a..00000000000
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 c28d64a3320..3136ab5a91e 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 d4b24086364..00000000000
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 6d2a3a4370e..6c60c5cce44 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 028d69b0de3..00000000000
Binary files a/public/emoji/1f44c.png and /dev/null differ
diff --git a/public/emoji/1f44c.svg b/public/emoji/1f44c.svg
index bb3a06657a8..3ccac826516 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 39684cd5cc7..00000000000
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 c50c59f9ff6..f2ea302f93c 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 a9b59723573..00000000000
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 54d7d6a19ea..be40cb64232 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 c5e29167015..00000000000
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 1fc72ebe93b..534a37fb2dd 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 5bf4857a884..00000000000
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 4db4b58eff0..682fed7d465 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 d829f787c61..00000000000
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 e64edfb1359..280fed6acaf 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 f9e6f13a34f..00000000000
Binary files a/public/emoji/1f44d.png and /dev/null differ
diff --git a/public/emoji/1f44d.svg b/public/emoji/1f44d.svg
index 100df67076c..de2963f8b96 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 a1631af8e92..00000000000
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 298cda36979..98af17fe316 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 85fff82d595..00000000000
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 79398ad0900..4504b3b671a 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 eeba3be80fd..00000000000
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 e0bf3be99a5..b25cfcfbcc9 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 1addafdaed0..00000000000
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 17fa30ceafe..fb26a9e6d15 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 37ec07b5721..00000000000
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 c58da806fce..9d064d53a50 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 b63da2f20a8..00000000000
Binary files a/public/emoji/1f44e.png and /dev/null differ
diff --git a/public/emoji/1f44e.svg b/public/emoji/1f44e.svg
index cd5ce20eeb6..05c5a1f97a9 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 de4bc837b96..00000000000
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 4728186ef12..d11ee40be30 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 1323de775ba..00000000000
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 ffb3d7e7171..562ec079960 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 d448ca19dde..00000000000
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 138e7bde1e3..ca3e19e1c5c 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 c49f44ee91d..00000000000
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 56107c4337f..83b18c50e1a 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 29ee9bdf37c..00000000000
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 d4361ab361f..c214a9b51d4 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 b0ffe928920..00000000000
Binary files a/public/emoji/1f44f.png and /dev/null differ
diff --git a/public/emoji/1f44f.svg b/public/emoji/1f44f.svg
index c611e5d3b1c..d190887b758 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 352d2614f11..00000000000
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 3da933cf3bc..fc3e9880485 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 70824a50c73..00000000000
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 4463814f00f..da95cf19a50 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 d7d136bd3db..00000000000
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 715fb59fc84..3dfa45374b2 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 df4eaa711e7..00000000000
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 d3c412ec001..f15104c5377 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 7dc04eaebd8..00000000000
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 d7dc9146f67..888cc644edf 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 1cf75c9101e..00000000000
Binary files a/public/emoji/1f450.png and /dev/null differ
diff --git a/public/emoji/1f450.svg b/public/emoji/1f450.svg
index d910626503a..5f4edc4c00c 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 93b82d92f04..00000000000
Binary files a/public/emoji/1f451.png and /dev/null differ
diff --git a/public/emoji/1f451.svg b/public/emoji/1f451.svg
index ce7da0aab7c..c8e31dfd553 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 b837b6a2e47..00000000000
Binary files a/public/emoji/1f452.png and /dev/null differ
diff --git a/public/emoji/1f452.svg b/public/emoji/1f452.svg
index 0ef14ae7afa..19c624995db 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 865d8274acf..00000000000
Binary files a/public/emoji/1f453.png and /dev/null differ
diff --git a/public/emoji/1f453.svg b/public/emoji/1f453.svg
index 0356c31efec..0e0451ea278 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 1804e7f3ff3..00000000000
Binary files a/public/emoji/1f454.png and /dev/null differ
diff --git a/public/emoji/1f454.svg b/public/emoji/1f454.svg
index b72e4dc9e2b..de9f10fee0b 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 af08dec8b59..00000000000
Binary files a/public/emoji/1f455.png and /dev/null differ
diff --git a/public/emoji/1f455.svg b/public/emoji/1f455.svg
index 33900afbbb2..13581c7b6d3 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 2a6869d674c..00000000000
Binary files a/public/emoji/1f456.png and /dev/null differ
diff --git a/public/emoji/1f456.svg b/public/emoji/1f456.svg
index eed2f86df7e..8f07c207856 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 a697ca5c57d..00000000000
Binary files a/public/emoji/1f457.png and /dev/null differ
diff --git a/public/emoji/1f457.svg b/public/emoji/1f457.svg
index 2a20f802b92..c00c84a045a 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 abe851115d1..00000000000
Binary files a/public/emoji/1f458.png and /dev/null differ
diff --git a/public/emoji/1f458.svg b/public/emoji/1f458.svg
index 7f7bed9af85..6917bbc7790 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 77a8a0aae5b..00000000000
Binary files a/public/emoji/1f459.png and /dev/null differ
diff --git a/public/emoji/1f459.svg b/public/emoji/1f459.svg
index e0a1ca75df3..6480f8f8554 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 01410dc8107..00000000000
Binary files a/public/emoji/1f45a.png and /dev/null differ
diff --git a/public/emoji/1f45a.svg b/public/emoji/1f45a.svg
index 294d86ef6f4..4312f4ca5e1 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 981346193c5..00000000000
Binary files a/public/emoji/1f45b.png and /dev/null differ
diff --git a/public/emoji/1f45b.svg b/public/emoji/1f45b.svg
index 2bb632f3ed1..615cb606c33 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 cbf75c5d25e..00000000000
Binary files a/public/emoji/1f45c.png and /dev/null differ
diff --git a/public/emoji/1f45c.svg b/public/emoji/1f45c.svg
index 39165931c88..ffa83ff1576 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 8795c6c66ff..00000000000
Binary files a/public/emoji/1f45d.png and /dev/null differ
diff --git a/public/emoji/1f45d.svg b/public/emoji/1f45d.svg
index b877d3ed886..4cadb52c7ab 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 4bf7541032c..00000000000
Binary files a/public/emoji/1f45e.png and /dev/null differ
diff --git a/public/emoji/1f45e.svg b/public/emoji/1f45e.svg
index 7dbe5d8bf1e..5b71d31ff77 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 423fa07dd5d..00000000000
Binary files a/public/emoji/1f45f.png and /dev/null differ
diff --git a/public/emoji/1f45f.svg b/public/emoji/1f45f.svg
index a54733edcdf..3b94ca3ce06 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 b331cbccc9d..00000000000
Binary files a/public/emoji/1f460.png and /dev/null differ
diff --git a/public/emoji/1f460.svg b/public/emoji/1f460.svg
index 57b7e17fb99..334ea75ecd3 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 9d9f5122b7a..00000000000
Binary files a/public/emoji/1f461.png and /dev/null differ
diff --git a/public/emoji/1f461.svg b/public/emoji/1f461.svg
index e17e173db88..4da080d37e0 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 11f1065ed07..00000000000
Binary files a/public/emoji/1f462.png and /dev/null differ
diff --git a/public/emoji/1f462.svg b/public/emoji/1f462.svg
index 72c94f379f6..47948a93195 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 b2673c5a1a8..00000000000
Binary files a/public/emoji/1f463.png and /dev/null differ
diff --git a/public/emoji/1f463.svg b/public/emoji/1f463.svg
index 23306105171..c4ee494e6b0 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 123b2cbe1fb..00000000000
Binary files a/public/emoji/1f464.png and /dev/null differ
diff --git a/public/emoji/1f464.svg b/public/emoji/1f464.svg
index 9c0e92dadbb..515da2c5774 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 d7656860a1c..00000000000
Binary files a/public/emoji/1f465.png and /dev/null differ
diff --git a/public/emoji/1f465.svg b/public/emoji/1f465.svg
index 4ca629e3dc1..9ac02e6dc0f 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 2fc436ea512..00000000000
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 f0c2365dd31..ae20d77b54b 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 09a5f18d360..00000000000
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 296576e85b8..380488720d9 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 3cfe675dd3a..00000000000
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 eafb2511db6..12d0d0f0676 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 780be0ace36..00000000000
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 1623d305eb5..5c9c55d97da 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 f32fe22e35c..00000000000
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 051400b1c6a..d0e4deca1c7 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 8ecfb0a4e92..00000000000
Binary files a/public/emoji/1f466.png and /dev/null differ
diff --git a/public/emoji/1f466.svg b/public/emoji/1f466.svg
index 5e233fc8b6e..3ef0fcc58ad 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 bb667e88651..00000000000
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 eeb7738dac6..1836aaa6713 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 a59ed4a3f0d..00000000000
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 4088b48a762..08eae438e75 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 517e7f2a7b0..00000000000
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 18a76f65de6..477ffe9ee7d 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 542d96c8487..00000000000
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 dbb0f5fc600..190ba222921 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 66b7c28c2df..00000000000
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 80e424ed2bb..8d2ca563671 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 dc1d4d08b39..00000000000
Binary files a/public/emoji/1f467.png and /dev/null differ
diff --git a/public/emoji/1f467.svg b/public/emoji/1f467.svg
index 1cb7f67a65a..a3bc6706404 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 00000000000..2b4b3e2dd9b
--- /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 00000000000..80e793c79dd
--- /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 00000000000..1b9ca687a17
--- /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 00000000000..3c51ea95950
--- /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 00000000000..b884ed15d52
--- /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 00000000000..e33cca230a9
--- /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 00000000000..53b9e25b460
--- /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 00000000000..15601f70c88
--- /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 00000000000..f5987b48e07
--- /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 00000000000..7b44dc17371
--- /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 00000000000..f14434d2284
--- /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 00000000000..eab6f4e6621
--- /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 00000000000..e562eadeef4
--- /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 00000000000..73027bb8643
--- /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 00000000000..9418cad3166
--- /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 00000000000..119142aec72
--- /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 bb86e963a80..00000000000
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 9ffc40139f3..6c3bfe333de 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 00000000000..6b9dff148bf
--- /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 00000000000..3834a6fcac6
--- /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 00000000000..4c665c30738
--- /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 00000000000..924e63cbb43
--- /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 00000000000..340b2c74c19
--- /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 00000000000..891c080bc1a
--- /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 00000000000..1e65941de41
--- /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 00000000000..916faf92444
--- /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 00000000000..68a41459064
--- /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 00000000000..6ce9580f858
--- /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 00000000000..054ab009629
--- /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 00000000000..523fe1c985a
--- /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 00000000000..4f05f832f39
--- /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 00000000000..16625d45798
--- /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 00000000000..f2d87d2d70f
--- /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 00000000000..e2496e389ec
--- /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 fdeeaff46f5..00000000000
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 e0e8d5fd300..19a37a43284 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 00000000000..9eb2585981a
--- /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 00000000000..5e723978b13
--- /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 00000000000..15aa6ce23a3
--- /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 00000000000..9fec6513007
--- /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 00000000000..979e5bc52e5
--- /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 00000000000..0ccca9bdef1
--- /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 00000000000..b8d6cacae9b
--- /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 00000000000..d26aa9ae2b1
--- /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 00000000000..3f59dbcbff8
--- /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 00000000000..06b41a20c8d
--- /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 00000000000..98f161a81fe
--- /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 00000000000..fd084342355
--- /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 00000000000..5d9619e1530
--- /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 00000000000..4a53e82bd24
--- /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 00000000000..7815ddb92af
--- /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 00000000000..caf7f3dfd47
--- /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 7ae0b5df9cf..00000000000
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 4fc71c6d81b..42f34b8b0d4 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 00000000000..96a2bf5bf1e
--- /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 00000000000..e608c4e26c7
--- /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 00000000000..da6f2b10032
--- /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 00000000000..4eb5cd9c567
--- /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 00000000000..d01f1b275e8
--- /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 00000000000..ae70e8a4a0e
--- /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 00000000000..1663a9c959f
--- /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 00000000000..7bcc7ecf43f
--- /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 00000000000..094ce5d7e7f
--- /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 00000000000..176da65b134
--- /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 00000000000..ef4187208be
--- /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 00000000000..56fc2b18b09
--- /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 00000000000..0408f4d359f
--- /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 00000000000..385369bf5e7
--- /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 00000000000..ceb83559f5d
--- /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 00000000000..799fd409b1b
--- /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 db14cde99b8..00000000000
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 9dc4c6df700..62054625af6 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 00000000000..e5edce81494
--- /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 00000000000..30eba86edb9
--- /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 00000000000..7d5672e850e
--- /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 00000000000..28d5059edd3
--- /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 00000000000..e63e974c66f
--- /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 00000000000..2565b202fba
--- /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 00000000000..a3de0981d94
--- /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 00000000000..401bfb9eb7e
--- /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 00000000000..6e48ee35329
--- /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 00000000000..b188a3d21e9
--- /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 00000000000..e0eccb44bdf
--- /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 00000000000..21f0babefb3
--- /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 00000000000..e99af4b65b6
--- /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 00000000000..515da8684d7
--- /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 00000000000..96f7b0b85e5
--- /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 00000000000..713423a7897
--- /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 7c67a70529c..00000000000
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 fab2b434926..f8f629a42f6 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 81e6c0fc0ee..00000000000
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 5c348147b67..00000000000
--- 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 7a2e4e2c491..00000000000
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 7f5946500fe..00000000000
--- 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 41e35166670..00000000000
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 555c8bd84b7..00000000000
--- 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 8e8ccfe6c7f..00000000000
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 1e35ca4eb1e..00000000000
--- 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 932a85e1fe5..00000000000
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 6dfa7e98eb9..00000000000
--- 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 b544fbe573f..00000000000
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 f877a886c93..00000000000
--- 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 40dbf1f7a18..00000000000
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 0ab0a6b2bc2..00000000000
--- 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 bfefa4879cb..00000000000
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 ca1285f9be2..00000000000
--- 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 71d2681c32a..00000000000
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 0afec9c1b98..00000000000
--- 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 00000000000..315a53f07b0
--- /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 00000000000..e999b54938c
--- /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 00000000000..701bc5f3aab
--- /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 00000000000..48bbd13e8ea
--- /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 00000000000..861521d275c
--- /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 00000000000..ff49105fc44
--- /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 00000000000..178acc73aaa
--- /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 00000000000..8edd3a9c56d
--- /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 00000000000..6ef28200c01
--- /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 00000000000..a12e1379f8e
--- /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 00000000000..b9b029f59aa
--- /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 00000000000..9b0ded754ae
--- /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 00000000000..621d66ec971
--- /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 00000000000..b44243a4801
--- /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 00000000000..613d824d380
--- /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 00000000000..8dcf9c6348e
--- /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 00000000000..f5395db98db
--- /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 00000000000..4146ccc4f79
--- /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 00000000000..ce5ccdd2043
--- /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 00000000000..de683b25630
--- /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 00000000000..bbc2e5b4044
--- /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 00000000000..6eecb56bbca
--- /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 00000000000..d5721aa9cd4
--- /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 00000000000..62b3870a9df
--- /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 00000000000..22e44a25b99
--- /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 00000000000..084d54a684a
--- /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 00000000000..5a5e3c84b2c
--- /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 00000000000..134d977222a
--- /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 00000000000..4c83450a2f6
--- /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 00000000000..01dc234b65e
--- /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 00000000000..e787f827518
--- /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 00000000000..42220fc2e01
--- /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 00000000000..0a0955d14eb
--- /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 8759fa5db87..00000000000
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 727c3fc9491..00000000000
--- 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 a9a0edae17c..00000000000
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 5e845068246..00000000000
--- 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 857a02e5146..00000000000
Binary files a/public/emoji/1f468.png and /dev/null differ
diff --git a/public/emoji/1f468.svg b/public/emoji/1f468.svg
index 0f27a28365c..9148131936a 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 00000000000..a393ab23e66
--- /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 00000000000..49513c95f55
--- /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 00000000000..15b12616797
--- /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 00000000000..a0648002f79
--- /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 00000000000..ab517943470
--- /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 00000000000..68f3a9e4e7d
--- /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 00000000000..3586f5448cc
--- /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 00000000000..01efc523f6b
--- /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 00000000000..60bf3529066
--- /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 00000000000..db0ba00c299
--- /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 00000000000..95fbcb49b4a
--- /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 00000000000..5913cc9b60f
--- /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 00000000000..c3442f9551e
--- /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 00000000000..1873ac8c3d2
--- /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 00000000000..92cf6553e86
--- /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 00000000000..3d9d0cecad3
--- /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 ff089b8889b..00000000000
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 62b4b63227a..7866eff41f8 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 00000000000..442deaec1f2
--- /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 00000000000..a4161eaca4d
--- /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 00000000000..5aa6c0ec0e4
--- /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 00000000000..9f26f9fda73
--- /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 00000000000..11017c8002b
--- /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 00000000000..e0f456b98ab
--- /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 00000000000..0cef02e69df
--- /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 00000000000..37c0eb59c7f
--- /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 00000000000..3daf9c47bb5
--- /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 00000000000..3b6fc5c200f
--- /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 00000000000..47d03225af4
--- /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 00000000000..11378acaef4
--- /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 00000000000..35e271ba477
--- /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 00000000000..dabd93e1ddf
--- /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 00000000000..f0a3ea40c0a
--- /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 00000000000..81c041eebe1
--- /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 0719c378016..00000000000
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 2556b3a2d3a..8328828e1e9 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 00000000000..31787ece264
--- /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 00000000000..9abc4089617
--- /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 00000000000..25fd3caaa1c
--- /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 00000000000..ad6deb4d019
--- /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 00000000000..c6233010eae
--- /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 00000000000..d059eb64a6f
--- /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 00000000000..d242300ab79
--- /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 00000000000..3f16d298a89
--- /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 00000000000..b9cb8782d01
--- /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 00000000000..01b65f1e10b
--- /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 00000000000..89158a2333c
--- /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 00000000000..df8627aacbc
--- /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 00000000000..bbc2e7cad60
--- /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 00000000000..5c96c15c3ce
--- /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 00000000000..5c34de7b88d
--- /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 00000000000..e149723f0c2
--- /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 5672e2fd52d..00000000000
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 c0269856640..0c25028ae74 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 00000000000..ee03115ffa1
--- /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 00000000000..ca0215f9c4d
--- /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 00000000000..2998bbc9b87
--- /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 00000000000..f1d48b1d8f8
--- /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 00000000000..5e7049c806b
--- /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 00000000000..70e1044b0fc
--- /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 00000000000..a8a3c3479d7
--- /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 00000000000..51fb3f47da5
--- /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 00000000000..61aef572406
--- /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 00000000000..fe47e22fab8
--- /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 00000000000..ba7c0e68d0b
--- /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 00000000000..e2734a35533
--- /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 00000000000..6ad50f74017
--- /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 00000000000..1f1492f76b7
--- /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 00000000000..021c287232e
--- /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 00000000000..c82832cb5fe
--- /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 5754aab558b..00000000000
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 8c977082ddd..2aa3fef23df 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 00000000000..36db97cc3f4
--- /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 00000000000..02cd40205ee
--- /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 00000000000..6822832bab2
--- /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 00000000000..b23847530a3
--- /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 00000000000..930d5ed5d0f
--- /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 00000000000..925977b3952
--- /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 00000000000..cde71c216e3
--- /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 00000000000..a41064af8de
--- /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 00000000000..eea06ae801d
--- /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 00000000000..cf2c4e31068
--- /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 00000000000..06e8d253d18
--- /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 00000000000..35fe42f5f3f
--- /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 00000000000..861b1ff043c
--- /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 00000000000..40fe1cb1570
--- /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 00000000000..2385f231a3c
--- /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 00000000000..273621927bc
--- /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 fc252af3a39..00000000000
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 3078858cd0b..523ac98cc89 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 6c6ba45e7bb..00000000000
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 8bd5911037d..00000000000
--- 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 836feae7c78..00000000000
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 ece9c72c436..00000000000
--- 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 284d29ab5da..00000000000
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 2f4951e980b..00000000000
--- 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 d8d3f49b85f..00000000000
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 73760fbb4da..00000000000
--- 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 41225c6fa5a..00000000000
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 bbc72da228c..00000000000
--- 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 00000000000..e1a146570b9
--- /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 00000000000..4883fffcba4
--- /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 00000000000..0edec9c295d
--- /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 00000000000..b8da6c8d3e4
--- /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 00000000000..2db8c4a3173
--- /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 00000000000..fe46827cc2f
--- /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 00000000000..450cf4496e0
--- /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 00000000000..2f20655efdd
--- /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 00000000000..df6d988201b
--- /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 00000000000..7c02a27bd50
--- /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 00000000000..f016ce89c8d
--- /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 00000000000..1c5d811eef1
--- /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 00000000000..38198b363b7
--- /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 00000000000..eeb0c80e147
--- /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 00000000000..1e84cdd3545
--- /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 00000000000..689084de1c0
--- /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 00000000000..ac18f5515ce
--- /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 00000000000..bc0eda085b3
--- /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 00000000000..e84decf7afe
--- /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 00000000000..c020914a935
--- /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 00000000000..6a05dde12cd
--- /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 00000000000..54b41f7dc7a
--- /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 00000000000..e95a70cf9cf
--- /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 00000000000..a24749665fc
--- /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 00000000000..69eb8c537ac
--- /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 00000000000..25ab72a34bd
--- /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 00000000000..9f42ccee844
--- /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 00000000000..804903c75cf
--- /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 00000000000..0bae3004bc1
--- /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 00000000000..529eff4d157
--- /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 08fdabcdc5c..00000000000
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 5f188ca18c8..00000000000
--- 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 fdac73cbb1d..00000000000
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 c2369061957..00000000000
--- 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 ece440e7a61..00000000000
Binary files a/public/emoji/1f469.png and /dev/null differ
diff --git a/public/emoji/1f469.svg b/public/emoji/1f469.svg
index 8a7fada1519..6f7dde41f71 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 26421965791..00000000000
Binary files a/public/emoji/1f46a.png and /dev/null differ
diff --git a/public/emoji/1f46a.svg b/public/emoji/1f46a.svg
index e0fc9893bca..ab47f4abc70 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 960323f3c16..00000000000
Binary files a/public/emoji/1f46b.png and /dev/null differ
diff --git a/public/emoji/1f46b.svg b/public/emoji/1f46b.svg
index 4e7dcce0fd9..8115fe984c2 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 a511fda822a..00000000000
Binary files a/public/emoji/1f46c.png and /dev/null differ
diff --git a/public/emoji/1f46c.svg b/public/emoji/1f46c.svg
index 376a18dddc6..7feab42c0c1 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 b077cd3e40f..00000000000
Binary files a/public/emoji/1f46d.png and /dev/null differ
diff --git a/public/emoji/1f46d.svg b/public/emoji/1f46d.svg
index ed12b05e151..fae1da2d4b3 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 00000000000..58bcfd77a7e
--- /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 00000000000..2bff6d5727b
--- /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 6ccba3879dc..00000000000
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 98a019fff47..2bff6d5727b 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 00000000000..d3d127b3bf4
--- /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 00000000000..873359cd27b
--- /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 7814ea9f52d..00000000000
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 9e443506295..873359cd27b 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 00000000000..b94c792bd37
--- /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 00000000000..b0d9e6ae19b
--- /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 d78e88ec872..00000000000
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 fe8b6f4513f..b0d9e6ae19b 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 00000000000..3e6a0c7ccb8
--- /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 00000000000..1fdabb297f2
--- /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 2e13c508315..00000000000
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 d880766e580..1fdabb297f2 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 00000000000..1b1ffa10754
--- /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 00000000000..f6c19165aac
--- /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 2980d61cc2e..00000000000
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 9ec2135b5ea..f6c19165aac 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 00000000000..79963b5e6b9
--- /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 00000000000..f38c573d01a
--- /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 0b16d7c17b7..00000000000
Binary files a/public/emoji/1f46e.png and /dev/null differ
diff --git a/public/emoji/1f46e.svg b/public/emoji/1f46e.svg
index 3631cdd540e..f38c573d01a 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 00000000000..e3d470d6fef
--- /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 00000000000..d58f55fae0c
--- /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 67e6ffacb76..00000000000
Binary files a/public/emoji/1f46f.png and /dev/null differ
diff --git a/public/emoji/1f46f.svg b/public/emoji/1f46f.svg
index 32985cc36b5..e3d470d6fef 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 c4fb141ae8f..00000000000
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 cb221eee12a..b1eeedb6d77 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 c248769fc06..00000000000
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 b5718397135..09a8ed7e369 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 962c0a6eedb..00000000000
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 6c9874f778b..e5b73e6af49 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 740ca208cd4..00000000000
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 e4ff8c92d83..6fe5fe6076b 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 5cc5598587d..00000000000
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 29633af92db..149a6fc2426 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 eaf4bd97890..00000000000
Binary files a/public/emoji/1f470.png and /dev/null differ
diff --git a/public/emoji/1f470.svg b/public/emoji/1f470.svg
index dc9e6c7301c..3445fc8d6a2 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 00000000000..b112f6a4edf
--- /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 00000000000..b3b6a74d70d
--- /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 7d18ef24445..00000000000
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 eee7e7a2c9a..b3b6a74d70d 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 00000000000..8328828e1e9
--- /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 00000000000..9f0eceb3973
--- /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 dae1307315c..00000000000
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 6bdf8588636..9f0eceb3973 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 00000000000..259f8ccbd51
--- /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 00000000000..e1431d851e1
--- /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 684677e8e5a..00000000000
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 b08ba668482..e1431d851e1 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 00000000000..b4ff0c9916e
--- /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 00000000000..994afaf962f
--- /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 012be0b51f8..00000000000
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 72a38d21889..994afaf962f 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 00000000000..b28b077d2a2
--- /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 00000000000..151970867ab
--- /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 d4ecc4cf44b..00000000000
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 dcfd094c805..151970867ab 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 00000000000..a3f7c199883
--- /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 00000000000..2c49aa3d5a3
--- /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 ad6f01a7dda..00000000000
Binary files a/public/emoji/1f471.png and /dev/null differ
diff --git a/public/emoji/1f471.svg b/public/emoji/1f471.svg
index 2f56b379c96..2c49aa3d5a3 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 5b7b3def19c..00000000000
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 f02094dcbe0..d3c168207f6 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 c8b9cf87f4b..00000000000
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 9933af021d4..652c0041270 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 effdd0c4c84..00000000000
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 f2884ff0a8b..9c8e135cecb 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 f885ff46fa1..00000000000
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 6bb5fad55e0..2a80ac6263f 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 a6d55ca1380..00000000000
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 c28a77da85e..122e20c2b4c 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 7841e13608d..00000000000
Binary files a/public/emoji/1f472.png and /dev/null differ
diff --git a/public/emoji/1f472.svg b/public/emoji/1f472.svg
index 8274a23037f..3f059078c0a 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 00000000000..ffe17f1681c
--- /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 00000000000..9d8c6877271
--- /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 1e12ee4b231..00000000000
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 43c2e9d581d..9d8c6877271 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 00000000000..1487c58f389
--- /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 00000000000..d08a57f69e5
--- /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 37de4cceb23..00000000000
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 86edb085ff5..d08a57f69e5 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 00000000000..8a5a251465a
--- /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 00000000000..1a2a155a35f
--- /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 f607afd3450..00000000000
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 4567f58000f..1a2a155a35f 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 00000000000..be875ee3766
--- /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 00000000000..bca472d816b
--- /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 c05695888af..00000000000
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 ddb3d5beb6c..bca472d816b 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 00000000000..a01f89ddad3
--- /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 00000000000..ca21b96511b
--- /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 4b4ff64720b..00000000000
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 19b2e728f87..ca21b96511b 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 00000000000..ecd3fb021c6
--- /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 00000000000..627d7732141
--- /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 51cf047f966..00000000000
Binary files a/public/emoji/1f473.png and /dev/null differ
diff --git a/public/emoji/1f473.svg b/public/emoji/1f473.svg
index 5112808128b..627d7732141 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 ab459baace8..00000000000
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 77aacc5a934..fd2ff9dcf93 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 f4dfc7694ea..00000000000
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 03c13c515a8..c4f43282b8f 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 5ffd11792f4..00000000000
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 2a73bef9191..4e532e6e253 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 b350a764bfd..00000000000
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 0c9133ecee0..1f19763a294 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 05fe24a1708..00000000000
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 14a6554c361..8d8bc092895 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 4ace4e6f308..00000000000
Binary files a/public/emoji/1f474.png and /dev/null differ
diff --git a/public/emoji/1f474.svg b/public/emoji/1f474.svg
index 79bd197e15a..5f1c83bbc19 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 b49e821402c..00000000000
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 1e1c55669a5..86c69bae924 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 e86bf5ab3b7..00000000000
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 fd7cea0fc17..7207298c853 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 83fc14b0874..00000000000
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 121b50ba095..15c14c1447c 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 e4aa8a424d4..00000000000
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 c1246e568a2..e9950c3857b 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 4009012bb0a..00000000000
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 b1ae7cd6c5a..31cb9f003b2 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 52dc4987143..00000000000
Binary files a/public/emoji/1f475.png and /dev/null differ
diff --git a/public/emoji/1f475.svg b/public/emoji/1f475.svg
index a2ac6131e01..a2d61af9500 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 d20911d40db..00000000000
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 aa85b9bd059..38e1aa8f684 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 b0a9b30ed17..00000000000
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 50f5f8c94d7..d1fc49a2ca2 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 7de5286fac1..00000000000
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 9d3946dcd51..85b9fa85cda 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 9b7a86ac615..00000000000
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 75c1a67471f..3905353f8ab 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 fe1be34cb88..00000000000
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 27a4a6d7f9b..e4807abad5c 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 a4af92c63c7..00000000000
Binary files a/public/emoji/1f476.png and /dev/null differ
diff --git a/public/emoji/1f476.svg b/public/emoji/1f476.svg
index 6bbcb0c2eec..1d661938890 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 00000000000..46f7d640215
--- /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 00000000000..759fd81ba06
--- /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 2f24a2bab24..00000000000
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 1c078948d01..759fd81ba06 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 00000000000..12173b62d21
--- /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 00000000000..6cbec13d82c
--- /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 93c8fec5a75..00000000000
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 2baad928383..6cbec13d82c 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 00000000000..cef8bb79ca1
--- /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 00000000000..5634fa7e1ce
--- /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 abc1f2af2e0..00000000000
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 9bd5a803fe0..5634fa7e1ce 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 00000000000..13ef34ba5e3
--- /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 00000000000..902261cc25f
--- /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 eed83289aeb..00000000000
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 ee7b228237d..902261cc25f 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 00000000000..6e9b84dfab8
--- /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 00000000000..1fc22a6a889
--- /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 acbb220b8bb..00000000000
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 2cfb7cf1b9e..1fc22a6a889 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 00000000000..1d9d18d314f
--- /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 00000000000..cb161f83aa1
--- /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 a9970a89005..00000000000
Binary files a/public/emoji/1f477.png and /dev/null differ
diff --git a/public/emoji/1f477.svg b/public/emoji/1f477.svg
index 56ae64c82c7..cb161f83aa1 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 c28078cdc36..00000000000
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 ded39faa2e3..88cc313912b 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 dcd20e6ecd4..00000000000
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 e815e485a65..8aed00f8039 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 cde6f315c56..00000000000
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 7d5b77783f5..6fdfb919b67 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 c71e69caaef..00000000000
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 18edf0cbc02..f88d49e9f49 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 063e2645910..00000000000
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 6b8053df1b4..19f06ed2f74 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 879e9fa8c5d..00000000000
Binary files a/public/emoji/1f478.png and /dev/null differ
diff --git a/public/emoji/1f478.svg b/public/emoji/1f478.svg
index 939f660d4af..06d437fa6d8 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 fe8670fdaf1..00000000000
Binary files a/public/emoji/1f479.png and /dev/null differ
diff --git a/public/emoji/1f479.svg b/public/emoji/1f479.svg
index 4aa1df93b51..d085499955d 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 515c6a2250e..00000000000
Binary files a/public/emoji/1f47a.png and /dev/null differ
diff --git a/public/emoji/1f47a.svg b/public/emoji/1f47a.svg
index a20c6c44e41..81c1ef39da4 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 5650bc0ed18..00000000000
Binary files a/public/emoji/1f47b.png and /dev/null differ
diff --git a/public/emoji/1f47b.svg b/public/emoji/1f47b.svg
index 37f0680391a..e5a2ee7394a 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 391694dc07e..00000000000
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 b33f37c471b..58a4fe2da4a 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 700cbe6ed2c..00000000000
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 0095920c439..4618465f799 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 be597437d25..00000000000
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 ce453f4b7c1..d6c44bf629c 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 b06d3c853ef..00000000000
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 bbff87d4134..3b861ff0422 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 17bd677e334..00000000000
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 5e7bb9f044a..1be099a01f6 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 66ea97a3b99..00000000000
Binary files a/public/emoji/1f47c.png and /dev/null differ
diff --git a/public/emoji/1f47c.svg b/public/emoji/1f47c.svg
index fd6002a209f..f83cb770430 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 3b90e97433b..00000000000
Binary files a/public/emoji/1f47d.png and /dev/null differ
diff --git a/public/emoji/1f47d.svg b/public/emoji/1f47d.svg
index fff8d2f2bb8..d58d8191203 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 2e73f5f32e5..00000000000
Binary files a/public/emoji/1f47e.png and /dev/null differ
diff --git a/public/emoji/1f47e.svg b/public/emoji/1f47e.svg
index 0d4c47cfeaa..2ac86c206ff 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 9f9a9605539..00000000000
Binary files a/public/emoji/1f47f.png and /dev/null differ
diff --git a/public/emoji/1f47f.svg b/public/emoji/1f47f.svg
index a2bf45a6326..3ceaefa4d35 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 26abb17296a..00000000000
Binary files a/public/emoji/1f480.png and /dev/null differ
diff --git a/public/emoji/1f480.svg b/public/emoji/1f480.svg
index 300fed88851..7097d6ee03a 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 00000000000..579847c43a4
--- /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 00000000000..9fce17c57ee
--- /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 3d9e2247940..00000000000
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 94f0d9fa835..579847c43a4 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 00000000000..873f4dc5df3
--- /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 00000000000..bcf9e0cd9f5
--- /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 879e8b7966d..00000000000
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 4094b088f53..873f4dc5df3 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 00000000000..f22657d8ac1
--- /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 00000000000..ef182a4bdd9
--- /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 307514eab67..00000000000
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 502cf7baae0..f22657d8ac1 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 00000000000..c836fb1d521
--- /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 00000000000..48e59176e90
--- /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 297395dcb3f..00000000000
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 d2338320842..c836fb1d521 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 00000000000..c93ce31f5ad
--- /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 00000000000..1dcc0745c23
--- /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 26f8f22b28b..00000000000
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 64f4c496951..c93ce31f5ad 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 00000000000..a06e256ad8c
--- /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 00000000000..e97a32a3910
--- /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 55fc6294d25..00000000000
Binary files a/public/emoji/1f481.png and /dev/null differ
diff --git a/public/emoji/1f481.svg b/public/emoji/1f481.svg
index 324606f2638..a06e256ad8c 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 00000000000..2662a46e24b
--- /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 00000000000..95a2c5bdccc
--- /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 cea9ba27468..00000000000
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 12ecea3c44d..95a2c5bdccc 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 00000000000..1d07ec5af3b
--- /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 00000000000..9459a537bdc
--- /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 037464e4028..00000000000
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 0a822b81e6c..9459a537bdc 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 00000000000..21368fe456f
--- /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 00000000000..48eef955643
--- /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 0f6726fbe87..00000000000
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 3048f05b89d..48eef955643 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 00000000000..93f02ff998c
--- /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 00000000000..6def55dcf9f
--- /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 85fcf9a3b97..00000000000
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 ece9fd37d91..6def55dcf9f 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 00000000000..92510002751
--- /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 00000000000..41e80851c87
--- /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 e5f9ca7d5a2..00000000000
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 c59625be539..41e80851c87 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 00000000000..11be3310a67
--- /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 00000000000..349a3c03ccd
--- /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 8d7ab3c473c..00000000000
Binary files a/public/emoji/1f482.png and /dev/null differ
diff --git a/public/emoji/1f482.svg b/public/emoji/1f482.svg
index a2828629eea..349a3c03ccd 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 2c7b11c3a6e..00000000000
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 23026b5a5e0..5e28fb0f362 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 cb04b1f907e..00000000000
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 df65e02a364..57ded552836 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 98c5bca7b64..00000000000
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 e4c1d7b9dd8..dc1ff5363a6 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 fdb1e00cbba..00000000000
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 e163cfbc5b8..b80348375a4 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 0e34e0e23f0..00000000000
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 bb4dcfe4941..80f37167d71 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 04b166991cb..00000000000
Binary files a/public/emoji/1f483.png and /dev/null differ
diff --git a/public/emoji/1f483.svg b/public/emoji/1f483.svg
index 25ff89a2cd5..436f9ae58af 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 61a0c084c99..00000000000
Binary files a/public/emoji/1f484.png and /dev/null differ
diff --git a/public/emoji/1f484.svg b/public/emoji/1f484.svg
index 99bc7908bae..86892d2f298 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 26e883dd244..00000000000
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 f31a7a29845..0ca21402e48 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 61257b47ea3..00000000000
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 442102a4bd6..e20634f6c3c 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 29871b05f62..00000000000
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 daa1db1997d..c2d3ade12bd 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 2881de0b17d..00000000000
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 759366904f2..a47022a9226 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 a0b7c0a45a6..00000000000
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 36a0f84030c..3c6a2a135ab 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 aa52af7050d..00000000000
Binary files a/public/emoji/1f485.png and /dev/null differ
diff --git a/public/emoji/1f485.svg b/public/emoji/1f485.svg
index 91fd2c51f39..3f956cbd306 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 00000000000..9a67284b5ad
--- /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 00000000000..68b072cfcd1
--- /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 e0f415d3186..00000000000
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 dc1aef549a7..9a67284b5ad 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 00000000000..9ebc012da57
--- /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 00000000000..1eaa098c1c7
--- /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 0bb244a270b..00000000000
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 ccea5085ed8..9ebc012da57 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 00000000000..52e52636c98
--- /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 00000000000..8852a1efc38
--- /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 a117ee81a22..00000000000
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 245ca4b6d90..52e52636c98 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 00000000000..ad9c254bd89
--- /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 00000000000..caa12c47965
--- /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 6f42ab017f4..00000000000
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 a56ff48dd71..ad9c254bd89 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 00000000000..3fb4f842082
--- /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 00000000000..2242f1b8afb
--- /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 6a388c0d0b5..00000000000
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 bf24cb0684a..3fb4f842082 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 00000000000..39ffd8bdcbb
--- /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 00000000000..e9d1cff1d14
--- /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 b91d845e374..00000000000
Binary files a/public/emoji/1f486.png and /dev/null differ
diff --git a/public/emoji/1f486.svg b/public/emoji/1f486.svg
index 04a27271383..39ffd8bdcbb 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 00000000000..0625e084cfb
--- /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 00000000000..93255366876
--- /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 c743b74abeb..00000000000
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 793781e7ee1..0625e084cfb 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 00000000000..9457987a0dc
--- /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 00000000000..1e91c663a9e
--- /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 f144f8e55ce..00000000000
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 ac7e41cfc1c..9457987a0dc 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 00000000000..607df1e22a9
--- /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 00000000000..5f32e63385c
--- /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 d5ad19563ac..00000000000
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 b581fe54ab2..607df1e22a9 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 00000000000..d0cccfc8fac
--- /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 00000000000..6f4de3161ab
--- /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 244fd3af008..00000000000
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 2c2be850cd7..d0cccfc8fac 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 00000000000..8edd33e3f3c
--- /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 00000000000..4246251e85b
--- /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 20a94a88623..00000000000
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 0d4ee4cb528..8edd33e3f3c 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 00000000000..f6c2fd7d46d
--- /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 00000000000..257d6d08ce3
--- /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 91266b12930..00000000000
Binary files a/public/emoji/1f487.png and /dev/null differ
diff --git a/public/emoji/1f487.svg b/public/emoji/1f487.svg
index 0d345e70b76..f6c2fd7d46d 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 896f4d716cf..00000000000
Binary files a/public/emoji/1f488.png and /dev/null differ
diff --git a/public/emoji/1f488.svg b/public/emoji/1f488.svg
index 8db2bdc7d86..e9ae2255ca4 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 71c1a9528d5..00000000000
Binary files a/public/emoji/1f489.png and /dev/null differ
diff --git a/public/emoji/1f489.svg b/public/emoji/1f489.svg
index 0a2fe966751..9c4caf5c1dd 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 1d4530e77a3..00000000000
Binary files a/public/emoji/1f48a.png and /dev/null differ
diff --git a/public/emoji/1f48a.svg b/public/emoji/1f48a.svg
index ea0a9a8cc81..c7bd6680187 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 85e6dcfc4e8..00000000000
Binary files a/public/emoji/1f48b.png and /dev/null differ
diff --git a/public/emoji/1f48b.svg b/public/emoji/1f48b.svg
index a2d76f20de2..492398c52ba 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 3c3c767e784..00000000000
Binary files a/public/emoji/1f48c.png and /dev/null differ
diff --git a/public/emoji/1f48c.svg b/public/emoji/1f48c.svg
index ae73beac1f9..b2f85697a15 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 87d227adb74..00000000000
Binary files a/public/emoji/1f48d.png and /dev/null differ
diff --git a/public/emoji/1f48d.svg b/public/emoji/1f48d.svg
index 51da1763cb2..8bbab8ac618 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 db122d26a19..00000000000
Binary files a/public/emoji/1f48e.png and /dev/null differ
diff --git a/public/emoji/1f48e.svg b/public/emoji/1f48e.svg
index c7a3719a28f..d89d981903d 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 9aa519da9e8..00000000000
Binary files a/public/emoji/1f48f.png and /dev/null differ
diff --git a/public/emoji/1f48f.svg b/public/emoji/1f48f.svg
index cd4f66f04d5..0bae3004bc1 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 11455af6df4..00000000000
Binary files a/public/emoji/1f490.png and /dev/null differ
diff --git a/public/emoji/1f490.svg b/public/emoji/1f490.svg
index 8f15a96523c..79b996eedd0 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 62111601b36..00000000000
Binary files a/public/emoji/1f491.png and /dev/null differ
diff --git a/public/emoji/1f491.svg b/public/emoji/1f491.svg
index 38085503c01..9ec3083f4d7 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 d0d8aa0bfae..00000000000
Binary files a/public/emoji/1f492.png and /dev/null differ
diff --git a/public/emoji/1f492.svg b/public/emoji/1f492.svg
index e7008d4232e..e2873f71e6d 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 0bcf2d1d567..00000000000
Binary files a/public/emoji/1f493.png and /dev/null differ
diff --git a/public/emoji/1f493.svg b/public/emoji/1f493.svg
index 41388626b9a..1a0a8a054b6 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 718e26ee122..00000000000
Binary files a/public/emoji/1f494.png and /dev/null differ
diff --git a/public/emoji/1f494.svg b/public/emoji/1f494.svg
index a8b9e1b05f9..5236cebce6c 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 4d8c3386042..00000000000
Binary files a/public/emoji/1f495.png and /dev/null differ
diff --git a/public/emoji/1f495.svg b/public/emoji/1f495.svg
index 6f51fbd1ffc..b8e0e292be2 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 6709269454e..00000000000
Binary files a/public/emoji/1f496.png and /dev/null differ
diff --git a/public/emoji/1f496.svg b/public/emoji/1f496.svg
index 27457d5b78d..75a875b3a95 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 d6e694e972f..00000000000
Binary files a/public/emoji/1f497.png and /dev/null differ
diff --git a/public/emoji/1f497.svg b/public/emoji/1f497.svg
index a3da17e1f12..1f586cd4572 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 2df0078ddd1..00000000000
Binary files a/public/emoji/1f498.png and /dev/null differ
diff --git a/public/emoji/1f498.svg b/public/emoji/1f498.svg
index 66b99f3304b..619c6aa24e8 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 bdf1287e55e..00000000000
Binary files a/public/emoji/1f499.png and /dev/null differ
diff --git a/public/emoji/1f499.svg b/public/emoji/1f499.svg
index 6db134a92d6..9d48cbf8920 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 c52d60a58be..00000000000
Binary files a/public/emoji/1f49a.png and /dev/null differ
diff --git a/public/emoji/1f49a.svg b/public/emoji/1f49a.svg
index 2d718b516b8..41990800e52 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 7901a9d0103..00000000000
Binary files a/public/emoji/1f49b.png and /dev/null differ
diff --git a/public/emoji/1f49b.svg b/public/emoji/1f49b.svg
index c642502054c..b6e19786289 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 95c53a9ade6..00000000000
Binary files a/public/emoji/1f49c.png and /dev/null differ
diff --git a/public/emoji/1f49c.svg b/public/emoji/1f49c.svg
index 7adf0793979..29c43004620 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 902ceafe4d1..00000000000
Binary files a/public/emoji/1f49d.png and /dev/null differ
diff --git a/public/emoji/1f49d.svg b/public/emoji/1f49d.svg
index 2e8a4968808..aab714aaf2c 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 7b9d1948f73..00000000000
Binary files a/public/emoji/1f49e.png and /dev/null differ
diff --git a/public/emoji/1f49e.svg b/public/emoji/1f49e.svg
index f90aae90f77..d25ef6ba9ca 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 5443f60bc63..00000000000
Binary files a/public/emoji/1f49f.png and /dev/null differ
diff --git a/public/emoji/1f49f.svg b/public/emoji/1f49f.svg
index 2c1c7d2701d..0276b32a89a 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 2a22a26d1e2..00000000000
Binary files a/public/emoji/1f4a0.png and /dev/null differ
diff --git a/public/emoji/1f4a0.svg b/public/emoji/1f4a0.svg
index 77363d19987..37291c912e2 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 38e32e02d9f..00000000000
Binary files a/public/emoji/1f4a1.png and /dev/null differ
diff --git a/public/emoji/1f4a1.svg b/public/emoji/1f4a1.svg
index 7e44d418a66..dc2aa4d2189 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 d63c2e000e4..00000000000
Binary files a/public/emoji/1f4a2.png and /dev/null differ
diff --git a/public/emoji/1f4a2.svg b/public/emoji/1f4a2.svg
index d816b493466..6ba7cd3a012 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 c7f8f81c939..00000000000
Binary files a/public/emoji/1f4a3.png and /dev/null differ
diff --git a/public/emoji/1f4a3.svg b/public/emoji/1f4a3.svg
index b9a7e0f7474..803d57e9e71 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 9bc72b4469f..00000000000
Binary files a/public/emoji/1f4a4.png and /dev/null differ
diff --git a/public/emoji/1f4a4.svg b/public/emoji/1f4a4.svg
index 625c724827a..83df1a48d19 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 9b0f027b1a8..00000000000
Binary files a/public/emoji/1f4a5.png and /dev/null differ
diff --git a/public/emoji/1f4a5.svg b/public/emoji/1f4a5.svg
index 5ae4d00dbaa..f7d71d3eaea 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 4106117ebc8..00000000000
Binary files a/public/emoji/1f4a6.png and /dev/null differ
diff --git a/public/emoji/1f4a6.svg b/public/emoji/1f4a6.svg
index d33061edc1e..c57213860a7 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 71241ec3061..00000000000
Binary files a/public/emoji/1f4a7.png and /dev/null differ
diff --git a/public/emoji/1f4a7.svg b/public/emoji/1f4a7.svg
index e56136fe517..99699f6f0bd 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 064b8525c12..00000000000
Binary files a/public/emoji/1f4a8.png and /dev/null differ
diff --git a/public/emoji/1f4a8.svg b/public/emoji/1f4a8.svg
index 5807909d14e..13a086ec5c0 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 10b15e72d56..00000000000
Binary files a/public/emoji/1f4a9.png and /dev/null differ
diff --git a/public/emoji/1f4a9.svg b/public/emoji/1f4a9.svg
index 342ac404bcd..ef0d55c1f70 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 1522942ce51..00000000000
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 174dc99d270..97817968961 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 569c6e832ca..00000000000
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 be0b9c70b0f..f572f93a02a 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 0a76b00fa89..00000000000
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 fa50395b98b..1d0ca6d95e7 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 f0cf31328e0..00000000000
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 820211811bd..ae067f1c42f 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 4fda92460e8..00000000000
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 109ded67dc0..30b3fa62623 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 7e67c1880f7..00000000000
Binary files a/public/emoji/1f4aa.png and /dev/null differ
diff --git a/public/emoji/1f4aa.svg b/public/emoji/1f4aa.svg
index 772927cc416..dcf6e9ede1b 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 85f52efad24..00000000000
Binary files a/public/emoji/1f4ab.png and /dev/null differ
diff --git a/public/emoji/1f4ab.svg b/public/emoji/1f4ab.svg
index 6f4ba8a7b29..9df115d2c2a 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 a34ef741733..00000000000
Binary files a/public/emoji/1f4ac.png and /dev/null differ
diff --git a/public/emoji/1f4ac.svg b/public/emoji/1f4ac.svg
index 663533c822f..fa876901878 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 72fe8fa7022..00000000000
Binary files a/public/emoji/1f4ad.png and /dev/null differ
diff --git a/public/emoji/1f4ad.svg b/public/emoji/1f4ad.svg
index b9883d63aa3..6ff056df19f 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 d6af8b60077..00000000000
Binary files a/public/emoji/1f4ae.png and /dev/null differ
diff --git a/public/emoji/1f4ae.svg b/public/emoji/1f4ae.svg
index 3703f53e2e8..be4d9419263 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 6903ff0304a..00000000000
Binary files a/public/emoji/1f4af.png and /dev/null differ
diff --git a/public/emoji/1f4af.svg b/public/emoji/1f4af.svg
index 8bb5a8027dd..80a08e01667 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 b9296be0902..00000000000
Binary files a/public/emoji/1f4b0.png and /dev/null differ
diff --git a/public/emoji/1f4b0.svg b/public/emoji/1f4b0.svg
index 5dcbf7d1cd8..a2325873283 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 4d46c6050e7..00000000000
Binary files a/public/emoji/1f4b1.png and /dev/null differ
diff --git a/public/emoji/1f4b1.svg b/public/emoji/1f4b1.svg
index 350402b9d68..66cee5e038b 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 ef2c2e20590..00000000000
Binary files a/public/emoji/1f4b2.png and /dev/null differ
diff --git a/public/emoji/1f4b2.svg b/public/emoji/1f4b2.svg
index 12419774cbc..12abc53234e 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 372777d5c61..00000000000
Binary files a/public/emoji/1f4b3.png and /dev/null differ
diff --git a/public/emoji/1f4b3.svg b/public/emoji/1f4b3.svg
index 289be20ad4c..2a7941970e7 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 63ee4799d66..00000000000
Binary files a/public/emoji/1f4b4.png and /dev/null differ
diff --git a/public/emoji/1f4b4.svg b/public/emoji/1f4b4.svg
index 73ada09a2f0..6d9d73854d7 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 a9904c28293..00000000000
Binary files a/public/emoji/1f4b5.png and /dev/null differ
diff --git a/public/emoji/1f4b5.svg b/public/emoji/1f4b5.svg
index a6723a2be5a..1288e2638a6 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 a49020820e1..00000000000
Binary files a/public/emoji/1f4b6.png and /dev/null differ
diff --git a/public/emoji/1f4b6.svg b/public/emoji/1f4b6.svg
index 4ab37625bfb..54ca3194d4b 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 a0d4c4099e9..00000000000
Binary files a/public/emoji/1f4b7.png and /dev/null differ
diff --git a/public/emoji/1f4b7.svg b/public/emoji/1f4b7.svg
index 59a5f522aca..c619edaad82 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 f022b04b3c2..00000000000
Binary files a/public/emoji/1f4b8.png and /dev/null differ
diff --git a/public/emoji/1f4b8.svg b/public/emoji/1f4b8.svg
index 8e90f8e501e..f51e8fbb3a6 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 9773f03be22..00000000000
Binary files a/public/emoji/1f4b9.png and /dev/null differ
diff --git a/public/emoji/1f4b9.svg b/public/emoji/1f4b9.svg
index b794bad1cd1..eff7d7351ab 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 a6d72d95adb..00000000000
Binary files a/public/emoji/1f4ba.png and /dev/null differ
diff --git a/public/emoji/1f4ba.svg b/public/emoji/1f4ba.svg
index a961080f265..1ae3854de13 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 c1fee27e3a9..00000000000
Binary files a/public/emoji/1f4bb.png and /dev/null differ
diff --git a/public/emoji/1f4bb.svg b/public/emoji/1f4bb.svg
index de2b1388a81..e995d485610 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 b9912ba2148..00000000000
Binary files a/public/emoji/1f4bc.png and /dev/null differ
diff --git a/public/emoji/1f4bc.svg b/public/emoji/1f4bc.svg
index 16fd4d57221..9556a69ecc7 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 9fa94cfbe74..00000000000
Binary files a/public/emoji/1f4bd.png and /dev/null differ
diff --git a/public/emoji/1f4bd.svg b/public/emoji/1f4bd.svg
index f37c1636ceb..e02677feeb0 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 072a76d3c13..00000000000
Binary files a/public/emoji/1f4be.png and /dev/null differ
diff --git a/public/emoji/1f4be.svg b/public/emoji/1f4be.svg
index 9eba4f910af..4a2be4b03b2 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 e6b01449cd9..00000000000
Binary files a/public/emoji/1f4bf.png and /dev/null differ
diff --git a/public/emoji/1f4bf.svg b/public/emoji/1f4bf.svg
index eac0a2aabe2..78c4bdafd5b 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 045a6f7a08d..00000000000
Binary files a/public/emoji/1f4c0.png and /dev/null differ
diff --git a/public/emoji/1f4c0.svg b/public/emoji/1f4c0.svg
index 2547f71c1be..341784d8e29 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 addedaf0870..00000000000
Binary files a/public/emoji/1f4c1.png and /dev/null differ
diff --git a/public/emoji/1f4c1.svg b/public/emoji/1f4c1.svg
index 8eaf3c99c37..1fd3ac19c6a 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 3993b09222f..00000000000
Binary files a/public/emoji/1f4c2.png and /dev/null differ
diff --git a/public/emoji/1f4c2.svg b/public/emoji/1f4c2.svg
index 85fc741489a..74498396df2 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 06355319c74..00000000000
Binary files a/public/emoji/1f4c3.png and /dev/null differ
diff --git a/public/emoji/1f4c3.svg b/public/emoji/1f4c3.svg
index 46b14fcc865..a275b273520 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 ba4ed757e01..00000000000
Binary files a/public/emoji/1f4c4.png and /dev/null differ
diff --git a/public/emoji/1f4c4.svg b/public/emoji/1f4c4.svg
index b782c614615..3b2d58b31a9 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 f05b3da97b8..00000000000
Binary files a/public/emoji/1f4c5.png and /dev/null differ
diff --git a/public/emoji/1f4c5.svg b/public/emoji/1f4c5.svg
index 5b18759b06b..2defa940588 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 47353b74447..00000000000
Binary files a/public/emoji/1f4c6.png and /dev/null differ
diff --git a/public/emoji/1f4c6.svg b/public/emoji/1f4c6.svg
index a82a5908560..1356a920e03 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 151e11cb3b4..00000000000
Binary files a/public/emoji/1f4c7.png and /dev/null differ
diff --git a/public/emoji/1f4c7.svg b/public/emoji/1f4c7.svg
index 21c4b7730fa..d8f8fb4470f 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 f13cfcf9956..00000000000
Binary files a/public/emoji/1f4c8.png and /dev/null differ
diff --git a/public/emoji/1f4c8.svg b/public/emoji/1f4c8.svg
index 69c80f6b8f5..6500ccbb7cd 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 5222ec72d85..00000000000
Binary files a/public/emoji/1f4c9.png and /dev/null differ
diff --git a/public/emoji/1f4c9.svg b/public/emoji/1f4c9.svg
index 62109700206..1989d48fafc 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 53c89455008..00000000000
Binary files a/public/emoji/1f4ca.png and /dev/null differ
diff --git a/public/emoji/1f4ca.svg b/public/emoji/1f4ca.svg
index 619ce84e4d1..b7aee13b661 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 7edcfc52509..00000000000
Binary files a/public/emoji/1f4cb.png and /dev/null differ
diff --git a/public/emoji/1f4cb.svg b/public/emoji/1f4cb.svg
index 29f1ef7fbfb..b2577d99a16 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 57e07d7f4cc..00000000000
Binary files a/public/emoji/1f4cc.png and /dev/null differ
diff --git a/public/emoji/1f4cc.svg b/public/emoji/1f4cc.svg
index 54037722878..ebc2187e457 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 28b9d72866e..00000000000
Binary files a/public/emoji/1f4cd.png and /dev/null differ
diff --git a/public/emoji/1f4cd.svg b/public/emoji/1f4cd.svg
index fa9f105cf8a..e86e5d8edba 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 8cd8d4f8750..00000000000
Binary files a/public/emoji/1f4ce.png and /dev/null differ
diff --git a/public/emoji/1f4ce.svg b/public/emoji/1f4ce.svg
index 47c8d2c6a0f..7d2e463ec27 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 1017b7433a1..00000000000
Binary files a/public/emoji/1f4cf.png and /dev/null differ
diff --git a/public/emoji/1f4cf.svg b/public/emoji/1f4cf.svg
index 3d66c06746d..50062de145c 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 77dee9ee843..00000000000
Binary files a/public/emoji/1f4d0.png and /dev/null differ
diff --git a/public/emoji/1f4d0.svg b/public/emoji/1f4d0.svg
index 5d4c52db9fc..08704eacf17 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 f8d9e01b428..00000000000
Binary files a/public/emoji/1f4d1.png and /dev/null differ
diff --git a/public/emoji/1f4d1.svg b/public/emoji/1f4d1.svg
index b0ff5864364..573134838ee 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 13e7561a4bd..00000000000
Binary files a/public/emoji/1f4d2.png and /dev/null differ
diff --git a/public/emoji/1f4d2.svg b/public/emoji/1f4d2.svg
index 93fecc88c68..32f4570648b 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 f6c28b4915d..00000000000
Binary files a/public/emoji/1f4d3.png and /dev/null differ
diff --git a/public/emoji/1f4d3.svg b/public/emoji/1f4d3.svg
index 604ba14e9fc..65c7642c2e3 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 03f566b6d2c..00000000000
Binary files a/public/emoji/1f4d4.png and /dev/null differ
diff --git a/public/emoji/1f4d4.svg b/public/emoji/1f4d4.svg
index 211f080c97d..9f269a7e41f 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 6395cf2151e..00000000000
Binary files a/public/emoji/1f4d5.png and /dev/null differ
diff --git a/public/emoji/1f4d5.svg b/public/emoji/1f4d5.svg
index be6b7fa3ccf..821ba574321 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 0f4447ed396..00000000000
Binary files a/public/emoji/1f4d6.png and /dev/null differ
diff --git a/public/emoji/1f4d6.svg b/public/emoji/1f4d6.svg
index 40a387e31f3..47e6ccb63f4 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 e5e411cf3b5..00000000000
Binary files a/public/emoji/1f4d7.png and /dev/null differ
diff --git a/public/emoji/1f4d7.svg b/public/emoji/1f4d7.svg
index 5ef4524b9af..8c5f2c7f788 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 e1e455401cc..00000000000
Binary files a/public/emoji/1f4d8.png and /dev/null differ
diff --git a/public/emoji/1f4d8.svg b/public/emoji/1f4d8.svg
index 3e1ba1c8fa0..e20be569c91 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 ab40e6ae6a2..00000000000
Binary files a/public/emoji/1f4d9.png and /dev/null differ
diff --git a/public/emoji/1f4d9.svg b/public/emoji/1f4d9.svg
index 0758e63e0bb..aa9ac8ac7ed 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 59a8bafeb0d..00000000000
Binary files a/public/emoji/1f4da.png and /dev/null differ
diff --git a/public/emoji/1f4da.svg b/public/emoji/1f4da.svg
index 8469d334ed4..fd830ccbab2 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 ec5ee213e20..00000000000
Binary files a/public/emoji/1f4db.png and /dev/null differ
diff --git a/public/emoji/1f4db.svg b/public/emoji/1f4db.svg
index 616945d2dde..ad86629b795 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 50ee5dcd4b9..00000000000
Binary files a/public/emoji/1f4dc.png and /dev/null differ
diff --git a/public/emoji/1f4dc.svg b/public/emoji/1f4dc.svg
index 6b1d35971c6..b29dfd1d585 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 edc6155e168..00000000000
Binary files a/public/emoji/1f4dd.png and /dev/null differ
diff --git a/public/emoji/1f4dd.svg b/public/emoji/1f4dd.svg
index 5e6f46c8b12..583017b87d9 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 69388316c35..00000000000
Binary files a/public/emoji/1f4de.png and /dev/null differ
diff --git a/public/emoji/1f4de.svg b/public/emoji/1f4de.svg
index a4039435d62..e253cab80f3 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 b24b99306a2..00000000000
Binary files a/public/emoji/1f4df.png and /dev/null differ
diff --git a/public/emoji/1f4df.svg b/public/emoji/1f4df.svg
index a46aa37d0d3..f8a0609f8d1 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 6f929e294c2..00000000000
Binary files a/public/emoji/1f4e0.png and /dev/null differ
diff --git a/public/emoji/1f4e0.svg b/public/emoji/1f4e0.svg
index 7e52dbfd0ea..cf9dfd4f14d 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 db0372795f4..00000000000
Binary files a/public/emoji/1f4e1.png and /dev/null differ
diff --git a/public/emoji/1f4e1.svg b/public/emoji/1f4e1.svg
index f15cb8a0e39..e345be12dbb 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 5fd76a95b82..00000000000
Binary files a/public/emoji/1f4e2.png and /dev/null differ
diff --git a/public/emoji/1f4e2.svg b/public/emoji/1f4e2.svg
index 44179fefca4..e6250d2bf34 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 4e6735188e3..00000000000
Binary files a/public/emoji/1f4e3.png and /dev/null differ
diff --git a/public/emoji/1f4e3.svg b/public/emoji/1f4e3.svg
index 0967abab91c..e217cdaf279 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 46493ed5b2c..00000000000
Binary files a/public/emoji/1f4e4.png and /dev/null differ
diff --git a/public/emoji/1f4e4.svg b/public/emoji/1f4e4.svg
index b7b006630a3..69fce0a9ba7 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 41a6be2b0ee..00000000000
Binary files a/public/emoji/1f4e5.png and /dev/null differ
diff --git a/public/emoji/1f4e5.svg b/public/emoji/1f4e5.svg
index 75df61a63bf..10c940b95d0 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 85431756ad8..00000000000
Binary files a/public/emoji/1f4e6.png and /dev/null differ
diff --git a/public/emoji/1f4e6.svg b/public/emoji/1f4e6.svg
index 95182fd1bfa..d0b8d6d1d42 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 d22e654a20b..00000000000
Binary files a/public/emoji/1f4e7.png and /dev/null differ
diff --git a/public/emoji/1f4e7.svg b/public/emoji/1f4e7.svg
index c296f507041..60b6967621b 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 fd22e88182e..00000000000
Binary files a/public/emoji/1f4e8.png and /dev/null differ
diff --git a/public/emoji/1f4e8.svg b/public/emoji/1f4e8.svg
index 694c04ee940..d2379e22afa 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 7448a6b7673..00000000000
Binary files a/public/emoji/1f4e9.png and /dev/null differ
diff --git a/public/emoji/1f4e9.svg b/public/emoji/1f4e9.svg
index 2e5dd66c454..bde5374d425 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 ddc705db0d8..00000000000
Binary files a/public/emoji/1f4ea.png and /dev/null differ
diff --git a/public/emoji/1f4ea.svg b/public/emoji/1f4ea.svg
index b825c02f226..6c7e0d11453 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 ef5174e40dd..00000000000
Binary files a/public/emoji/1f4eb.png and /dev/null differ
diff --git a/public/emoji/1f4eb.svg b/public/emoji/1f4eb.svg
index fcd20da4992..a48e2210e57 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 5460616a5b1..00000000000
Binary files a/public/emoji/1f4ec.png and /dev/null differ
diff --git a/public/emoji/1f4ec.svg b/public/emoji/1f4ec.svg
index 2393774c733..0ebfec4c596 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 f9aeee6b15a..00000000000
Binary files a/public/emoji/1f4ed.png and /dev/null differ
diff --git a/public/emoji/1f4ed.svg b/public/emoji/1f4ed.svg
index c4fddbace29..ebecab75e0a 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 07c9c4ab3d6..00000000000
Binary files a/public/emoji/1f4ee.png and /dev/null differ
diff --git a/public/emoji/1f4ee.svg b/public/emoji/1f4ee.svg
index 2c53c56e2b6..4806b51ff80 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 c173b8dbd67..00000000000
Binary files a/public/emoji/1f4ef.png and /dev/null differ
diff --git a/public/emoji/1f4ef.svg b/public/emoji/1f4ef.svg
index 6ead0b07b40..e60c3067e47 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 2aa8f060bde..00000000000
Binary files a/public/emoji/1f4f0.png and /dev/null differ
diff --git a/public/emoji/1f4f0.svg b/public/emoji/1f4f0.svg
index 51f9f85a07d..d5a70ea3c8d 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 fd377acf872..00000000000
Binary files a/public/emoji/1f4f1.png and /dev/null differ
diff --git a/public/emoji/1f4f1.svg b/public/emoji/1f4f1.svg
index bbb0684ac53..e0387a1c4ae 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 e2f308f8e46..00000000000
Binary files a/public/emoji/1f4f2.png and /dev/null differ
diff --git a/public/emoji/1f4f2.svg b/public/emoji/1f4f2.svg
index 9f323e496fc..95437b263d3 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 cc46510e48e..00000000000
Binary files a/public/emoji/1f4f3.png and /dev/null differ
diff --git a/public/emoji/1f4f3.svg b/public/emoji/1f4f3.svg
index 7f2e947b18c..5c2e1a4f500 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 8b661ec1c94..00000000000
Binary files a/public/emoji/1f4f4.png and /dev/null differ
diff --git a/public/emoji/1f4f4.svg b/public/emoji/1f4f4.svg
index 3f7fd7f1520..5dc3755689b 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 7b1ae6ea579..00000000000
Binary files a/public/emoji/1f4f5.png and /dev/null differ
diff --git a/public/emoji/1f4f5.svg b/public/emoji/1f4f5.svg
index dfeb0985c85..86b5a5df380 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 ee2b5a4b519..00000000000
Binary files a/public/emoji/1f4f6.png and /dev/null differ
diff --git a/public/emoji/1f4f6.svg b/public/emoji/1f4f6.svg
index f6033621b08..b9eee1d4139 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 0a3429f72ef..00000000000
Binary files a/public/emoji/1f4f7.png and /dev/null differ
diff --git a/public/emoji/1f4f7.svg b/public/emoji/1f4f7.svg
index ed7884b4159..6cc2096beeb 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 27471da2029..00000000000
Binary files a/public/emoji/1f4f8.png and /dev/null differ
diff --git a/public/emoji/1f4f8.svg b/public/emoji/1f4f8.svg
index 7814bdd9293..e9f242d9e68 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 85b300d425c..00000000000
Binary files a/public/emoji/1f4f9.png and /dev/null differ
diff --git a/public/emoji/1f4f9.svg b/public/emoji/1f4f9.svg
index 8c71d01a14a..c279f12e938 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 999f1fb5c6d..00000000000
Binary files a/public/emoji/1f4fa.png and /dev/null differ
diff --git a/public/emoji/1f4fa.svg b/public/emoji/1f4fa.svg
index 3d446fd6e7d..b967aef26ac 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 dec381fa242..00000000000
Binary files a/public/emoji/1f4fb.png and /dev/null differ
diff --git a/public/emoji/1f4fb.svg b/public/emoji/1f4fb.svg
index 4a7bff1725a..88b7b95181e 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 b9eb78ecd92..00000000000
Binary files a/public/emoji/1f4fc.png and /dev/null differ
diff --git a/public/emoji/1f4fc.svg b/public/emoji/1f4fc.svg
index 6b1e3d0c26a..991e95f54b6 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 ce9ab0daa28..00000000000
Binary files a/public/emoji/1f4fd.png and /dev/null differ
diff --git a/public/emoji/1f4fd.svg b/public/emoji/1f4fd.svg
index a440cbfe495..922c71b8d1b 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 a4b6dfcc62e..00000000000
Binary files a/public/emoji/1f4ff.png and /dev/null differ
diff --git a/public/emoji/1f4ff.svg b/public/emoji/1f4ff.svg
index 1fa2a4abf02..b5adfabe4b7 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 5904badde65..00000000000
Binary files a/public/emoji/1f500.png and /dev/null differ
diff --git a/public/emoji/1f500.svg b/public/emoji/1f500.svg
index 81a5389c750..25b1bf27b5d 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 540ce4e0fba..00000000000
Binary files a/public/emoji/1f501.png and /dev/null differ
diff --git a/public/emoji/1f501.svg b/public/emoji/1f501.svg
index fccd8243cf8..2b59af7c2fb 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 9567e83337f..00000000000
Binary files a/public/emoji/1f502.png and /dev/null differ
diff --git a/public/emoji/1f502.svg b/public/emoji/1f502.svg
index 3372590bd8c..7ab33b25f22 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 26e49c38388..00000000000
Binary files a/public/emoji/1f503.png and /dev/null differ
diff --git a/public/emoji/1f503.svg b/public/emoji/1f503.svg
index 3aa0d63ba65..716355f6351 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 8d06d8e0912..00000000000
Binary files a/public/emoji/1f504.png and /dev/null differ
diff --git a/public/emoji/1f504.svg b/public/emoji/1f504.svg
index 2eefda0d3f2..61b0c0459fa 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 543011d3961..00000000000
Binary files a/public/emoji/1f505.png and /dev/null differ
diff --git a/public/emoji/1f505.svg b/public/emoji/1f505.svg
index 206610ecf24..06099627942 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 c41f2d5fd50..00000000000
Binary files a/public/emoji/1f506.png and /dev/null differ
diff --git a/public/emoji/1f506.svg b/public/emoji/1f506.svg
index dc65b9a6d63..251d4ffa7a4 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 7c1788e5075..00000000000
Binary files a/public/emoji/1f507.png and /dev/null differ
diff --git a/public/emoji/1f507.svg b/public/emoji/1f507.svg
index 4d10ceb2485..9dc1fe9037e 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 7bcffb8fc43..00000000000
Binary files a/public/emoji/1f508.png and /dev/null differ
diff --git a/public/emoji/1f508.svg b/public/emoji/1f508.svg
index 9eac4a0d005..33b12bddad3 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 e75ddca53ba..00000000000
Binary files a/public/emoji/1f509.png and /dev/null differ
diff --git a/public/emoji/1f509.svg b/public/emoji/1f509.svg
index 5460d8e9860..7566b83e8db 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 8370033a539..00000000000
Binary files a/public/emoji/1f50a.png and /dev/null differ
diff --git a/public/emoji/1f50a.svg b/public/emoji/1f50a.svg
index eb2e94c838b..8614d3e92af 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 f593e2bdb65..00000000000
Binary files a/public/emoji/1f50b.png and /dev/null differ
diff --git a/public/emoji/1f50b.svg b/public/emoji/1f50b.svg
index 370d5cfe0b8..d8b375c150f 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 31d1eb215b4..00000000000
Binary files a/public/emoji/1f50c.png and /dev/null differ
diff --git a/public/emoji/1f50c.svg b/public/emoji/1f50c.svg
index bbbcf0a5a51..d3ecea9ab83 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 55487156ac6..00000000000
Binary files a/public/emoji/1f50d.png and /dev/null differ
diff --git a/public/emoji/1f50d.svg b/public/emoji/1f50d.svg
index 7f1758d6761..098d5e0818c 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 0f4b1bca876..00000000000
Binary files a/public/emoji/1f50e.png and /dev/null differ
diff --git a/public/emoji/1f50e.svg b/public/emoji/1f50e.svg
index a60c2aa1136..22c9309059d 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 19a07d162fb..00000000000
Binary files a/public/emoji/1f50f.png and /dev/null differ
diff --git a/public/emoji/1f50f.svg b/public/emoji/1f50f.svg
index eb3c3fb4770..a6fbfdbf140 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 1c1cd5d0741..00000000000
Binary files a/public/emoji/1f510.png and /dev/null differ
diff --git a/public/emoji/1f510.svg b/public/emoji/1f510.svg
index 2d9a97df662..0f9f441bfbb 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 319cd1b884c..00000000000
Binary files a/public/emoji/1f511.png and /dev/null differ
diff --git a/public/emoji/1f511.svg b/public/emoji/1f511.svg
index 74b38d18c40..9a720cdf4c9 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 5a739c46644..00000000000
Binary files a/public/emoji/1f512.png and /dev/null differ
diff --git a/public/emoji/1f512.svg b/public/emoji/1f512.svg
index fac55a2f0bc..f0f1bb1534c 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 4a74a693911..00000000000
Binary files a/public/emoji/1f513.png and /dev/null differ
diff --git a/public/emoji/1f513.svg b/public/emoji/1f513.svg
index 4d650b67e49..43332372205 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 5b3b0461999..00000000000
Binary files a/public/emoji/1f514.png and /dev/null differ
diff --git a/public/emoji/1f514.svg b/public/emoji/1f514.svg
index e64706564cb..5210eece675 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 15cb38dd1e7..00000000000
Binary files a/public/emoji/1f515.png and /dev/null differ
diff --git a/public/emoji/1f515.svg b/public/emoji/1f515.svg
index a37acaff3b5..f9cd1368bd4 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 bbb444611f0..00000000000
Binary files a/public/emoji/1f516.png and /dev/null differ
diff --git a/public/emoji/1f516.svg b/public/emoji/1f516.svg
index 555079664e6..a8baaeb5c6a 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 ae20f0f8eec..00000000000
Binary files a/public/emoji/1f517.png and /dev/null differ
diff --git a/public/emoji/1f517.svg b/public/emoji/1f517.svg
index 777545a1724..f34d2025831 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 3a23449d917..00000000000
Binary files a/public/emoji/1f518.png and /dev/null differ
diff --git a/public/emoji/1f518.svg b/public/emoji/1f518.svg
index a894198e860..aa5d9a42908 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 d32c5d4f17f..00000000000
Binary files a/public/emoji/1f519.png and /dev/null differ
diff --git a/public/emoji/1f519.svg b/public/emoji/1f519.svg
index b8fe574e26a..d723bae402a 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 ef3ccd5f367..00000000000
Binary files a/public/emoji/1f51a.png and /dev/null differ
diff --git a/public/emoji/1f51a.svg b/public/emoji/1f51a.svg
index 1925646d18c..27825d360c3 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 a0c371ae21e..00000000000
Binary files a/public/emoji/1f51b.png and /dev/null differ
diff --git a/public/emoji/1f51b.svg b/public/emoji/1f51b.svg
index f9bb3d83325..8e41094fef6 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 8cdfd86690d..00000000000
Binary files a/public/emoji/1f51c.png and /dev/null differ
diff --git a/public/emoji/1f51c.svg b/public/emoji/1f51c.svg
index 62c2ffb2f71..9e308a46681 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 49dea8c08b5..00000000000
Binary files a/public/emoji/1f51d.png and /dev/null differ
diff --git a/public/emoji/1f51d.svg b/public/emoji/1f51d.svg
index cc4db6763df..0fc2ed653ab 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 6dfe6da51e2..00000000000
Binary files a/public/emoji/1f51e.png and /dev/null differ
diff --git a/public/emoji/1f51e.svg b/public/emoji/1f51e.svg
index 19ac9d2bd2c..8a7bd20173b 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 782d4004962..00000000000
Binary files a/public/emoji/1f51f.png and /dev/null differ
diff --git a/public/emoji/1f51f.svg b/public/emoji/1f51f.svg
index f717fa7f06a..40d2560e355 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 fe9482d2d8a..00000000000
Binary files a/public/emoji/1f520.png and /dev/null differ
diff --git a/public/emoji/1f520.svg b/public/emoji/1f520.svg
index 04d626dcd0e..6771c232850 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 0996a870570..00000000000
Binary files a/public/emoji/1f521.png and /dev/null differ
diff --git a/public/emoji/1f521.svg b/public/emoji/1f521.svg
index a127d193433..4cc64b9e7bb 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 248dc7e55b6..00000000000
Binary files a/public/emoji/1f522.png and /dev/null differ
diff --git a/public/emoji/1f522.svg b/public/emoji/1f522.svg
index 5710ed97181..75de7d6daae 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 ac2fc1f358f..00000000000
Binary files a/public/emoji/1f523.png and /dev/null differ
diff --git a/public/emoji/1f523.svg b/public/emoji/1f523.svg
index 7de6af1d7d8..c30182b501b 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 7688de692a9..00000000000
Binary files a/public/emoji/1f524.png and /dev/null differ
diff --git a/public/emoji/1f524.svg b/public/emoji/1f524.svg
index 236a41ce9bb..6f9f763f022 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 bd3775a460b..00000000000
Binary files a/public/emoji/1f525.png and /dev/null differ
diff --git a/public/emoji/1f525.svg b/public/emoji/1f525.svg
index 23dd30a75d4..4c5a36a6f13 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 eee36c25067..00000000000
Binary files a/public/emoji/1f526.png and /dev/null differ
diff --git a/public/emoji/1f526.svg b/public/emoji/1f526.svg
index 1d9dcdfdf94..f934e9d5cce 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 c16b7439697..00000000000
Binary files a/public/emoji/1f527.png and /dev/null differ
diff --git a/public/emoji/1f527.svg b/public/emoji/1f527.svg
index 5ca5cf38e25..26775fd0a5f 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 00736cce47d..00000000000
Binary files a/public/emoji/1f528.png and /dev/null differ
diff --git a/public/emoji/1f528.svg b/public/emoji/1f528.svg
index 0285e2d1a5e..d506977e1cb 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 4b9ae155319..00000000000
Binary files a/public/emoji/1f529.png and /dev/null differ
diff --git a/public/emoji/1f529.svg b/public/emoji/1f529.svg
index b43444715b7..3da1ee73819 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 1acb9f3077b..00000000000
Binary files a/public/emoji/1f52a.png and /dev/null differ
diff --git a/public/emoji/1f52a.svg b/public/emoji/1f52a.svg
index cbf23194912..d260eaf8759 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 89c5c244c7b..00000000000
Binary files a/public/emoji/1f52b.png and /dev/null differ
diff --git a/public/emoji/1f52b.svg b/public/emoji/1f52b.svg
index 7ce6a43f1d5..fa4e11d8823 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 90f5acf6a78..00000000000
Binary files a/public/emoji/1f52c.png and /dev/null differ
diff --git a/public/emoji/1f52c.svg b/public/emoji/1f52c.svg
index 149eb3797bd..511a102e26d 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 d63154614b5..00000000000
Binary files a/public/emoji/1f52d.png and /dev/null differ
diff --git a/public/emoji/1f52d.svg b/public/emoji/1f52d.svg
index e4dc0106ebc..67df6ece7d6 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 485d5c888f1..00000000000
Binary files a/public/emoji/1f52e.png and /dev/null differ
diff --git a/public/emoji/1f52e.svg b/public/emoji/1f52e.svg
index 72eff081e11..1fbcefcb9f1 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 2eb1707458b..00000000000
Binary files a/public/emoji/1f52f.png and /dev/null differ
diff --git a/public/emoji/1f52f.svg b/public/emoji/1f52f.svg
index 5783decc394..e31b3e04c42 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 bc434fb7cb5..00000000000
Binary files a/public/emoji/1f530.png and /dev/null differ
diff --git a/public/emoji/1f530.svg b/public/emoji/1f530.svg
index b0677aae78b..8ed169ae588 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 777a1dad121..00000000000
Binary files a/public/emoji/1f531.png and /dev/null differ
diff --git a/public/emoji/1f531.svg b/public/emoji/1f531.svg
index 09cb93cd89c..ded29627124 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 a78fc2f6b63..00000000000
Binary files a/public/emoji/1f532.png and /dev/null differ
diff --git a/public/emoji/1f532.svg b/public/emoji/1f532.svg
index 4234050bae8..8d17e175762 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 934b1cedfd2..00000000000
Binary files a/public/emoji/1f533.png and /dev/null differ
diff --git a/public/emoji/1f533.svg b/public/emoji/1f533.svg
index 478b8cde779..485afa92081 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 4bef930d92f..00000000000
Binary files a/public/emoji/1f534.png and /dev/null differ
diff --git a/public/emoji/1f534.svg b/public/emoji/1f534.svg
index a8ac9f77dce..fe221ca0048 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 84078ef3127..00000000000
Binary files a/public/emoji/1f535.png and /dev/null differ
diff --git a/public/emoji/1f535.svg b/public/emoji/1f535.svg
index 3df8731d3b3..fc3f6e9a001 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 73ff0ac36c8..00000000000
Binary files a/public/emoji/1f536.png and /dev/null differ
diff --git a/public/emoji/1f536.svg b/public/emoji/1f536.svg
index 351f0db4e52..fdcbdce96f7 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 416a58bd5a8..00000000000
Binary files a/public/emoji/1f537.png and /dev/null differ
diff --git a/public/emoji/1f537.svg b/public/emoji/1f537.svg
index 2d351444865..3ef69732f41 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 e1c6ed9b2f8..00000000000
Binary files a/public/emoji/1f538.png and /dev/null differ
diff --git a/public/emoji/1f538.svg b/public/emoji/1f538.svg
index 10ba0449aa5..7b78e0bd829 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 b86b5bc4db3..00000000000
Binary files a/public/emoji/1f539.png and /dev/null differ
diff --git a/public/emoji/1f539.svg b/public/emoji/1f539.svg
index 344ca595602..9798bdd6242 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 785887c195a..00000000000
Binary files a/public/emoji/1f53a.png and /dev/null differ
diff --git a/public/emoji/1f53a.svg b/public/emoji/1f53a.svg
index 321041237a8..11a872d9e45 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 a83beff1914..00000000000
Binary files a/public/emoji/1f53b.png and /dev/null differ
diff --git a/public/emoji/1f53b.svg b/public/emoji/1f53b.svg
index 57d6ad46768..2e6655267ef 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 20a13dcd5cd..00000000000
Binary files a/public/emoji/1f53c.png and /dev/null differ
diff --git a/public/emoji/1f53c.svg b/public/emoji/1f53c.svg
index 6836e6e049b..08d218b67e0 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 5870b9a2241..00000000000
Binary files a/public/emoji/1f53d.png and /dev/null differ
diff --git a/public/emoji/1f53d.svg b/public/emoji/1f53d.svg
index a624cea78e3..47ef8e021a6 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 a35c63c459c..00000000000
Binary files a/public/emoji/1f549.png and /dev/null differ
diff --git a/public/emoji/1f549.svg b/public/emoji/1f549.svg
index f068cd7397c..cb310e36279 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 9580c4917d7..00000000000
Binary files a/public/emoji/1f54a.png and /dev/null differ
diff --git a/public/emoji/1f54a.svg b/public/emoji/1f54a.svg
index 37fa3aaf1b3..ac560ea6623 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 1778c1138e4..00000000000
Binary files a/public/emoji/1f54b.png and /dev/null differ
diff --git a/public/emoji/1f54b.svg b/public/emoji/1f54b.svg
index 687e4d776a1..92bc70f83a7 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 ef770b26d96..00000000000
Binary files a/public/emoji/1f54c.png and /dev/null differ
diff --git a/public/emoji/1f54c.svg b/public/emoji/1f54c.svg
index 071b498d39b..446c3c6f114 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 ee347904c80..00000000000
Binary files a/public/emoji/1f54d.png and /dev/null differ
diff --git a/public/emoji/1f54d.svg b/public/emoji/1f54d.svg
index e3348550707..5f33b368b04 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 b4297362869..00000000000
Binary files a/public/emoji/1f54e.png and /dev/null differ
diff --git a/public/emoji/1f54e.svg b/public/emoji/1f54e.svg
index 82e1ca33856..aa69dd7e1ef 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 d6e34941f23..00000000000
Binary files a/public/emoji/1f550.png and /dev/null differ
diff --git a/public/emoji/1f550.svg b/public/emoji/1f550.svg
index bd5bb075bd8..3b8391d079e 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 a54253d7d57..00000000000
Binary files a/public/emoji/1f551.png and /dev/null differ
diff --git a/public/emoji/1f551.svg b/public/emoji/1f551.svg
index 2e551771202..9094bf4ff14 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 27ec4b1f514..00000000000
Binary files a/public/emoji/1f552.png and /dev/null differ
diff --git a/public/emoji/1f552.svg b/public/emoji/1f552.svg
index 834d2ddc5bb..d7627919efe 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 60a1ef4cc13..00000000000
Binary files a/public/emoji/1f553.png and /dev/null differ
diff --git a/public/emoji/1f553.svg b/public/emoji/1f553.svg
index 9f67b695812..c8825cbab0c 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 c9382d1e094..00000000000
Binary files a/public/emoji/1f554.png and /dev/null differ
diff --git a/public/emoji/1f554.svg b/public/emoji/1f554.svg
index 073f85721ae..1002512b49e 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 8fd5d3f5bd7..00000000000
Binary files a/public/emoji/1f555.png and /dev/null differ
diff --git a/public/emoji/1f555.svg b/public/emoji/1f555.svg
index 0fc34642b94..8f4cf5d8a91 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 8c7084036f2..00000000000
Binary files a/public/emoji/1f556.png and /dev/null differ
diff --git a/public/emoji/1f556.svg b/public/emoji/1f556.svg
index 52891906725..b160ba8dee0 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 fcddf722e95..00000000000
Binary files a/public/emoji/1f557.png and /dev/null differ
diff --git a/public/emoji/1f557.svg b/public/emoji/1f557.svg
index f5bc3aff5ae..bf351fd0818 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 dfbe0117981..00000000000
Binary files a/public/emoji/1f558.png and /dev/null differ
diff --git a/public/emoji/1f558.svg b/public/emoji/1f558.svg
index 7e4eda38658..ff38ea75b9f 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 e62b245cdbe..00000000000
Binary files a/public/emoji/1f559.png and /dev/null differ
diff --git a/public/emoji/1f559.svg b/public/emoji/1f559.svg
index 21e380e6259..e341eb5cc1f 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 0983345273b..00000000000
Binary files a/public/emoji/1f55a.png and /dev/null differ
diff --git a/public/emoji/1f55a.svg b/public/emoji/1f55a.svg
index 6d7a3531c8a..0f916d26d02 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 e61caa4b3e2..00000000000
Binary files a/public/emoji/1f55b.png and /dev/null differ
diff --git a/public/emoji/1f55b.svg b/public/emoji/1f55b.svg
index 1381b3bc679..1e990360698 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 86b7689b84e..00000000000
Binary files a/public/emoji/1f55c.png and /dev/null differ
diff --git a/public/emoji/1f55c.svg b/public/emoji/1f55c.svg
index 9972f542ddb..d98c2888483 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 7a787e018e6..00000000000
Binary files a/public/emoji/1f55d.png and /dev/null differ
diff --git a/public/emoji/1f55d.svg b/public/emoji/1f55d.svg
index 86f24116ec6..efdbe5ca451 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 c6860395cec..00000000000
Binary files a/public/emoji/1f55e.png and /dev/null differ
diff --git a/public/emoji/1f55e.svg b/public/emoji/1f55e.svg
index da977996848..e8a5b47a848 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 3c05b362122..00000000000
Binary files a/public/emoji/1f55f.png and /dev/null differ
diff --git a/public/emoji/1f55f.svg b/public/emoji/1f55f.svg
index 8185d206be6..46d2f6098d7 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 c21fa926db2..00000000000
Binary files a/public/emoji/1f560.png and /dev/null differ
diff --git a/public/emoji/1f560.svg b/public/emoji/1f560.svg
index 54ef72628be..6b1eeabaa72 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 2aec87fefcf..00000000000
Binary files a/public/emoji/1f561.png and /dev/null differ
diff --git a/public/emoji/1f561.svg b/public/emoji/1f561.svg
index fea0cde9510..5510c23754a 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 f7a1135e03f..00000000000
Binary files a/public/emoji/1f562.png and /dev/null differ
diff --git a/public/emoji/1f562.svg b/public/emoji/1f562.svg
index 5cf968fb8c4..d600d0e1954 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 799b4aebc08..00000000000
Binary files a/public/emoji/1f563.png and /dev/null differ
diff --git a/public/emoji/1f563.svg b/public/emoji/1f563.svg
index ce973153f5c..7b1bf93598e 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 4a2092ee6f0..00000000000
Binary files a/public/emoji/1f564.png and /dev/null differ
diff --git a/public/emoji/1f564.svg b/public/emoji/1f564.svg
index d7d214fa1ca..1ee190a6320 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 0802b3c65b9..00000000000
Binary files a/public/emoji/1f565.png and /dev/null differ
diff --git a/public/emoji/1f565.svg b/public/emoji/1f565.svg
index d7d8b48d141..e68c2eb3ab9 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 d970d03b809..00000000000
Binary files a/public/emoji/1f566.png and /dev/null differ
diff --git a/public/emoji/1f566.svg b/public/emoji/1f566.svg
index 77030c048a2..67e850cbf8c 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 f2b1d261721..00000000000
Binary files a/public/emoji/1f567.png and /dev/null differ
diff --git a/public/emoji/1f567.svg b/public/emoji/1f567.svg
index 02e81326a35..b5bb0e0a694 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 0b56444e355..00000000000
Binary files a/public/emoji/1f56f.png and /dev/null differ
diff --git a/public/emoji/1f56f.svg b/public/emoji/1f56f.svg
index af4c60634a2..8264304352c 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 ffdb451e3a8..00000000000
Binary files a/public/emoji/1f570.png and /dev/null differ
diff --git a/public/emoji/1f570.svg b/public/emoji/1f570.svg
index c2808cbacc5..40863345989 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 517d2ae0deb..00000000000
Binary files a/public/emoji/1f573.png and /dev/null differ
diff --git a/public/emoji/1f573.svg b/public/emoji/1f573.svg
index 4ccc4369f4a..d45030a3038 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 00000000000..557e7da46e9
--- /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 00000000000..e7934589d1e
--- /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 00000000000..e0fc839fa69
--- /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 00000000000..ea17439972a
--- /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 00000000000..bae73e20502
--- /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 3dc315a3d91..00000000000
Binary files a/public/emoji/1f574.png and /dev/null differ
diff --git a/public/emoji/1f574.svg b/public/emoji/1f574.svg
index cfaf2a78964..cf6aa4b7ee0 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 00000000000..22d2265a6bf
--- /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 00000000000..87429276e76
--- /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 2d1c022caee..00000000000
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 9e0d53872e6..87429276e76 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 00000000000..110603c4791
--- /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 00000000000..a76aeba5183
--- /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 548b9c26f5d..00000000000
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 1eb13a65ecc..a76aeba5183 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 00000000000..5ed697977a3
--- /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 00000000000..85821083d55
--- /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 b023f4b18e1..00000000000
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 6eaa233c32d..85821083d55 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 00000000000..4099bdc92aa
--- /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 00000000000..917dc17774f
--- /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 d8300af492d..00000000000
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 f3f11e430fa..917dc17774f 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 00000000000..f1e2b8c5e14
--- /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 00000000000..04dc79582a1
--- /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 ca1462595fa..00000000000
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 5fc55754695..04dc79582a1 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 00000000000..625c83007bf
--- /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 00000000000..89e86fd2c68
--- /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 a729e9584d6..00000000000
Binary files a/public/emoji/1f575.png and /dev/null differ
diff --git a/public/emoji/1f575.svg b/public/emoji/1f575.svg
index 9612edafbcb..89e86fd2c68 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 b1b6db0acff..00000000000
Binary files a/public/emoji/1f576.png and /dev/null differ
diff --git a/public/emoji/1f576.svg b/public/emoji/1f576.svg
index 3f1075ec432..07dfcf04583 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 3849fa90b94..00000000000
Binary files a/public/emoji/1f577.png and /dev/null differ
diff --git a/public/emoji/1f577.svg b/public/emoji/1f577.svg
index 21bb0890135..35c53883bf9 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 ba448ee7fba..00000000000
Binary files a/public/emoji/1f578.png and /dev/null differ
diff --git a/public/emoji/1f578.svg b/public/emoji/1f578.svg
index 8a5a4195923..a09fb444aad 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 1ee1905434e..00000000000
Binary files a/public/emoji/1f579.png and /dev/null differ
diff --git a/public/emoji/1f579.svg b/public/emoji/1f579.svg
index b2e6440130c..a8290299beb 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 e0b9f82d905..00000000000
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 fc47b48f688..4e375b9f1d6 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 a5beed56e2e..00000000000
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 289dcb68af7..f88efc75124 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 2fa20180a6e..00000000000
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 0356c2ac96a..b2e430355b2 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 bd3528c83ba..00000000000
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 70bb51fb95f..efec3c0e4a8 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 41fd4f880c9..00000000000
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 61633d21d7d..f8b9c9c0fcd 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 ccff3bede5a..00000000000
Binary files a/public/emoji/1f57a.png and /dev/null differ
diff --git a/public/emoji/1f57a.svg b/public/emoji/1f57a.svg
index 11d2247c7de..6dd77100580 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 76021e8c705..00000000000
Binary files a/public/emoji/1f587.png and /dev/null differ
diff --git a/public/emoji/1f587.svg b/public/emoji/1f587.svg
index b2dafc18b59..8f33de38d64 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 6ef7a342433..00000000000
Binary files a/public/emoji/1f58a.png and /dev/null differ
diff --git a/public/emoji/1f58a.svg b/public/emoji/1f58a.svg
index 1b61284ce00..88dafbf5cb9 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 3ca4bd2c231..00000000000
Binary files a/public/emoji/1f58b.png and /dev/null differ
diff --git a/public/emoji/1f58b.svg b/public/emoji/1f58b.svg
index a15d1aa50ee..a73b058839b 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 28bffbaa3c9..00000000000
Binary files a/public/emoji/1f58c.png and /dev/null differ
diff --git a/public/emoji/1f58c.svg b/public/emoji/1f58c.svg
index 25a69166012..ccff7f8f614 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 8d7b427aaa3..00000000000
Binary files a/public/emoji/1f58d.png and /dev/null differ
diff --git a/public/emoji/1f58d.svg b/public/emoji/1f58d.svg
index 5a76528b55d..69bc06e7594 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 a7888e6bd23..00000000000
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 5154c0bb03d..bd1bf5aaebf 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 cc10fbc272d..00000000000
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 00e624a29e0..9082d2b6848 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 707236ae8a4..00000000000
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 79c96440897..1eaeadc2936 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 1430df9c61f..00000000000
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 1e01c773baa..1fe6d0be70f 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 80bec971b6b..00000000000
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 feae919776d..5a2ece62cad 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 fb5ae8ebb5a..00000000000
Binary files a/public/emoji/1f590.png and /dev/null differ
diff --git a/public/emoji/1f590.svg b/public/emoji/1f590.svg
index daefb13e626..5d7b83f4644 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 61ef12a1548..00000000000
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 74a6b8c4017..29cb0ad89c0 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 c31a69be9af..00000000000
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 57bccaa7898..b8a18628edf 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 73ac216ce63..00000000000
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 8ae95508b38..35a676a2042 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 80b8ab7706d..00000000000
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 b571c155329..0f3c877bc8a 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 a8826b196e8..00000000000
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 63062da9a47..a5592dda933 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 697f7a25eb2..00000000000
Binary files a/public/emoji/1f595.png and /dev/null differ
diff --git a/public/emoji/1f595.svg b/public/emoji/1f595.svg
index a4247910c95..2ca84e3bae4 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 8aff5d8fa16..00000000000
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 73de3c32db1..1a7d5d6d574 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 82b7ad519b4..00000000000
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 acd4f53b640..da22363826a 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 d1400e1dd28..00000000000
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 ab308598efd..c688db96acf 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 47e2b280148..00000000000
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 6104d999dfd..2fc051573ec 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 60b5c6077be..00000000000
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 e936d88aaa7..88198839715 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 54728bcaf5c..00000000000
Binary files a/public/emoji/1f596.png and /dev/null differ
diff --git a/public/emoji/1f596.svg b/public/emoji/1f596.svg
index b2fb218f741..8126598d258 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 b4068c3e6e8..00000000000
Binary files a/public/emoji/1f5a4.png and /dev/null differ
diff --git a/public/emoji/1f5a4.svg b/public/emoji/1f5a4.svg
index 5cedc5fb2f7..8d3556c4eba 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 909bd42b5e1..00000000000
Binary files a/public/emoji/1f5a5.png and /dev/null differ
diff --git a/public/emoji/1f5a5.svg b/public/emoji/1f5a5.svg
index 852287cf99a..36b9da1feb5 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 027c830f0fe..00000000000
Binary files a/public/emoji/1f5a8.png and /dev/null differ
diff --git a/public/emoji/1f5a8.svg b/public/emoji/1f5a8.svg
index 4eb491f2e32..a34359e13fb 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 e84e96ff6e8..00000000000
Binary files a/public/emoji/1f5b1.png and /dev/null differ
diff --git a/public/emoji/1f5b1.svg b/public/emoji/1f5b1.svg
index ed83ffe0fa3..cbad4fd06ca 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 3bea84ad7ce..00000000000
Binary files a/public/emoji/1f5b2.png and /dev/null differ
diff --git a/public/emoji/1f5b2.svg b/public/emoji/1f5b2.svg
index 35468b2c8d3..fd464c09647 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 9fe84607bfd..00000000000
Binary files a/public/emoji/1f5bc.png and /dev/null differ
diff --git a/public/emoji/1f5bc.svg b/public/emoji/1f5bc.svg
index a0f89d0d62c..8d935157a75 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 46a7e403f9d..00000000000
Binary files a/public/emoji/1f5c2.png and /dev/null differ
diff --git a/public/emoji/1f5c2.svg b/public/emoji/1f5c2.svg
index d2046e806fd..b63f3914cf2 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 f2e764ce59d..00000000000
Binary files a/public/emoji/1f5c3.png and /dev/null differ
diff --git a/public/emoji/1f5c3.svg b/public/emoji/1f5c3.svg
index 4ab8e1b1cf0..743f964e64c 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 fddc65dde96..00000000000
Binary files a/public/emoji/1f5c4.png and /dev/null differ
diff --git a/public/emoji/1f5c4.svg b/public/emoji/1f5c4.svg
index e27bdf1b3d3..d3986817f0c 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 2b3c484b498..00000000000
Binary files a/public/emoji/1f5d1.png and /dev/null differ
diff --git a/public/emoji/1f5d1.svg b/public/emoji/1f5d1.svg
index a83f728e25d..d9ea71a0606 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 85faa10d8ea..00000000000
Binary files a/public/emoji/1f5d2.png and /dev/null differ
diff --git a/public/emoji/1f5d2.svg b/public/emoji/1f5d2.svg
index edfd8d0e63d..61e735eb94f 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 dec8d49bfa8..00000000000
Binary files a/public/emoji/1f5d3.png and /dev/null differ
diff --git a/public/emoji/1f5d3.svg b/public/emoji/1f5d3.svg
index abe8a941037..cd3ce275774 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 d7eda7f362a..00000000000
Binary files a/public/emoji/1f5dc.png and /dev/null differ
diff --git a/public/emoji/1f5dc.svg b/public/emoji/1f5dc.svg
index 7d7fcab04f8..412bf6bf708 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 e11d706c6c8..00000000000
Binary files a/public/emoji/1f5dd.png and /dev/null differ
diff --git a/public/emoji/1f5dd.svg b/public/emoji/1f5dd.svg
index 9bbf4f2acdd..bd1d995814b 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 f64748df2b2..00000000000
Binary files a/public/emoji/1f5de.png and /dev/null differ
diff --git a/public/emoji/1f5de.svg b/public/emoji/1f5de.svg
index fc378863367..f99430638d5 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 66e97b0aa25..00000000000
Binary files a/public/emoji/1f5e1.png and /dev/null differ
diff --git a/public/emoji/1f5e1.svg b/public/emoji/1f5e1.svg
index 8802fe08c1e..9f4d1b5da16 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 2df93aaae09..00000000000
Binary files a/public/emoji/1f5e3.png and /dev/null differ
diff --git a/public/emoji/1f5e3.svg b/public/emoji/1f5e3.svg
index 9ba8a6ca6a9..ded1caa6130 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 00c05959bcd..00000000000
Binary files a/public/emoji/1f5e8.png and /dev/null differ
diff --git a/public/emoji/1f5e8.svg b/public/emoji/1f5e8.svg
index b8c77e41150..d158c6e251d 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 f5c97c4d297..00000000000
Binary files a/public/emoji/1f5ef.png and /dev/null differ
diff --git a/public/emoji/1f5ef.svg b/public/emoji/1f5ef.svg
index ed829009882..f9f4c9be127 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 9b6767aea9e..00000000000
Binary files a/public/emoji/1f5f3.png and /dev/null differ
diff --git a/public/emoji/1f5f3.svg b/public/emoji/1f5f3.svg
index c0cfc830742..4aa277eb0a4 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 15efe32c798..00000000000
Binary files a/public/emoji/1f5fa.png and /dev/null differ
diff --git a/public/emoji/1f5fa.svg b/public/emoji/1f5fa.svg
index 182a68f7f54..b6e48a7c177 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 88a54752458..00000000000
Binary files a/public/emoji/1f5fb.png and /dev/null differ
diff --git a/public/emoji/1f5fb.svg b/public/emoji/1f5fb.svg
index 17545f8cc30..68b542bc1e7 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 37df7fc65b1..00000000000
Binary files a/public/emoji/1f5fc.png and /dev/null differ
diff --git a/public/emoji/1f5fc.svg b/public/emoji/1f5fc.svg
index cb64daa5f24..40ee1e93bf1 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 05df8289b59..00000000000
Binary files a/public/emoji/1f5fd.png and /dev/null differ
diff --git a/public/emoji/1f5fd.svg b/public/emoji/1f5fd.svg
index fc4d8345960..bbdd9f727c6 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 d86d0a59e12..00000000000
Binary files a/public/emoji/1f5fe.png and /dev/null differ
diff --git a/public/emoji/1f5fe.svg b/public/emoji/1f5fe.svg
index 2b86ffcad1b..02b5e88d60f 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 e6a7779c45b..00000000000
Binary files a/public/emoji/1f5ff.png and /dev/null differ
diff --git a/public/emoji/1f5ff.svg b/public/emoji/1f5ff.svg
index 3b6c02afd59..ebe17919294 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 3e8e0dab78c..00000000000
Binary files a/public/emoji/1f600.png and /dev/null differ
diff --git a/public/emoji/1f600.svg b/public/emoji/1f600.svg
index 33a476929cd..d7e74f2d726 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 418d94c811b..00000000000
Binary files a/public/emoji/1f601.png and /dev/null differ
diff --git a/public/emoji/1f601.svg b/public/emoji/1f601.svg
index e3939db53ce..5f3b93ea05d 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 0ba3b1859d8..00000000000
Binary files a/public/emoji/1f602.png and /dev/null differ
diff --git a/public/emoji/1f602.svg b/public/emoji/1f602.svg
index ad3522a9d6a..09650895a8b 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 30957a65968..00000000000
Binary files a/public/emoji/1f603.png and /dev/null differ
diff --git a/public/emoji/1f603.svg b/public/emoji/1f603.svg
index a526b1541bc..3b0f5413f1b 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 aa47ffe978c..00000000000
Binary files a/public/emoji/1f604.png and /dev/null differ
diff --git a/public/emoji/1f604.svg b/public/emoji/1f604.svg
index 9d3a8409e1d..c0d62c68da3 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 cb18d9c899b..00000000000
Binary files a/public/emoji/1f605.png and /dev/null differ
diff --git a/public/emoji/1f605.svg b/public/emoji/1f605.svg
index da208754522..2d9c1104c7f 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 d94e9505ba1..00000000000
Binary files a/public/emoji/1f606.png and /dev/null differ
diff --git a/public/emoji/1f606.svg b/public/emoji/1f606.svg
index a16e007eb48..b802bce3e0e 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 57f5151124f..00000000000
Binary files a/public/emoji/1f607.png and /dev/null differ
diff --git a/public/emoji/1f607.svg b/public/emoji/1f607.svg
index 7109c837122..c5139cb9de2 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 cc2c5f1ec72..00000000000
Binary files a/public/emoji/1f608.png and /dev/null differ
diff --git a/public/emoji/1f608.svg b/public/emoji/1f608.svg
index bdf4236168e..770f118d927 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 7ea7810a37d..00000000000
Binary files a/public/emoji/1f609.png and /dev/null differ
diff --git a/public/emoji/1f609.svg b/public/emoji/1f609.svg
index 2e4509e57ea..0a7bf7fb816 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 aac1a424ad4..00000000000
Binary files a/public/emoji/1f60a.png and /dev/null differ
diff --git a/public/emoji/1f60a.svg b/public/emoji/1f60a.svg
index 797c06386d8..ad888b58114 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 2df15753ca1..00000000000
Binary files a/public/emoji/1f60b.png and /dev/null differ
diff --git a/public/emoji/1f60b.svg b/public/emoji/1f60b.svg
index 932ca7d7ce5..1439ed01e31 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 715ad0bf53f..00000000000
Binary files a/public/emoji/1f60c.png and /dev/null differ
diff --git a/public/emoji/1f60c.svg b/public/emoji/1f60c.svg
index 4af17f14409..bad14b74ffb 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 73fbee29d4e..00000000000
Binary files a/public/emoji/1f60d.png and /dev/null differ
diff --git a/public/emoji/1f60d.svg b/public/emoji/1f60d.svg
index 4237d7e3f61..ea5dce36a6a 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 20011735110..00000000000
Binary files a/public/emoji/1f60e.png and /dev/null differ
diff --git a/public/emoji/1f60e.svg b/public/emoji/1f60e.svg
index 945ae68db65..4dfb1d675e1 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 87852109988..00000000000
Binary files a/public/emoji/1f60f.png and /dev/null differ
diff --git a/public/emoji/1f60f.svg b/public/emoji/1f60f.svg
index 68a3db63b78..886ea2e1b4f 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 065d193afe4..00000000000
Binary files a/public/emoji/1f610.png and /dev/null differ
diff --git a/public/emoji/1f610.svg b/public/emoji/1f610.svg
index 23a11f7c55e..69a7a3816fb 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 2954017f6c2..00000000000
Binary files a/public/emoji/1f611.png and /dev/null differ
diff --git a/public/emoji/1f611.svg b/public/emoji/1f611.svg
index 7938d2c1d85..71a6155a5b0 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 25e3677f2eb..00000000000
Binary files a/public/emoji/1f612.png and /dev/null differ
diff --git a/public/emoji/1f612.svg b/public/emoji/1f612.svg
index e557627484c..bc67b3aa0b6 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 f0dae7b7893..00000000000
Binary files a/public/emoji/1f613.png and /dev/null differ
diff --git a/public/emoji/1f613.svg b/public/emoji/1f613.svg
index 607726762c3..82838f41980 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 490fb566954..00000000000
Binary files a/public/emoji/1f614.png and /dev/null differ
diff --git a/public/emoji/1f614.svg b/public/emoji/1f614.svg
index 28de02f2482..5125d919a32 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 502b6bf0e0b..00000000000
Binary files a/public/emoji/1f615.png and /dev/null differ
diff --git a/public/emoji/1f615.svg b/public/emoji/1f615.svg
index 534330c3b24..0c29da5c271 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 aa4b29e9375..00000000000
Binary files a/public/emoji/1f616.png and /dev/null differ
diff --git a/public/emoji/1f616.svg b/public/emoji/1f616.svg
index 5f038264f7a..cbdeaa055d6 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 39d325fd8e3..00000000000
Binary files a/public/emoji/1f617.png and /dev/null differ
diff --git a/public/emoji/1f617.svg b/public/emoji/1f617.svg
index be878012b8c..4b0b62d8bab 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 0ff808fd614..00000000000
Binary files a/public/emoji/1f618.png and /dev/null differ
diff --git a/public/emoji/1f618.svg b/public/emoji/1f618.svg
index 983b37b47e5..2d920d99f1f 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 e181f17099d..00000000000
Binary files a/public/emoji/1f619.png and /dev/null differ
diff --git a/public/emoji/1f619.svg b/public/emoji/1f619.svg
index 1ac00e32f91..e265c02f193 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 b684d7d4d6c..00000000000
Binary files a/public/emoji/1f61a.png and /dev/null differ
diff --git a/public/emoji/1f61a.svg b/public/emoji/1f61a.svg
index 7a3cf76044f..414193a78c2 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 25757341f96..00000000000
Binary files a/public/emoji/1f61b.png and /dev/null differ
diff --git a/public/emoji/1f61b.svg b/public/emoji/1f61b.svg
index ccef634ecb4..eb39b552613 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 4817eaa3dc6..00000000000
Binary files a/public/emoji/1f61c.png and /dev/null differ
diff --git a/public/emoji/1f61c.svg b/public/emoji/1f61c.svg
index 413c3d2a8cb..20dd42d4266 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 5c0401e9b1d..00000000000
Binary files a/public/emoji/1f61d.png and /dev/null differ
diff --git a/public/emoji/1f61d.svg b/public/emoji/1f61d.svg
index 5157da93772..8d5e50cc797 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 efe4e67e23c..00000000000
Binary files a/public/emoji/1f61e.png and /dev/null differ
diff --git a/public/emoji/1f61e.svg b/public/emoji/1f61e.svg
index 143c2f43194..8ebcdf39831 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 7074afcf5b7..00000000000
Binary files a/public/emoji/1f61f.png and /dev/null differ
diff --git a/public/emoji/1f61f.svg b/public/emoji/1f61f.svg
index a1eec054ec9..0ac3e37e1e9 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 cfc4a6ecde5..00000000000
Binary files a/public/emoji/1f620.png and /dev/null differ
diff --git a/public/emoji/1f620.svg b/public/emoji/1f620.svg
index a32acbcdd07..70cc96a7300 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 9d739bd40ad..00000000000
Binary files a/public/emoji/1f621.png and /dev/null differ
diff --git a/public/emoji/1f621.svg b/public/emoji/1f621.svg
index f7c72270fae..8913846df29 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 b7877f8a173..00000000000
Binary files a/public/emoji/1f622.png and /dev/null differ
diff --git a/public/emoji/1f622.svg b/public/emoji/1f622.svg
index e39209c80e0..2d960b5695e 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 646a05fe908..00000000000
Binary files a/public/emoji/1f623.png and /dev/null differ
diff --git a/public/emoji/1f623.svg b/public/emoji/1f623.svg
index 94826839a80..69e670b15a4 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 0be7a501969..00000000000
Binary files a/public/emoji/1f624.png and /dev/null differ
diff --git a/public/emoji/1f624.svg b/public/emoji/1f624.svg
index fe5de95fc9e..a3b73f63efe 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 aef864d2b3d..00000000000
Binary files a/public/emoji/1f625.png and /dev/null differ
diff --git a/public/emoji/1f625.svg b/public/emoji/1f625.svg
index c52759e691b..1d06587ec5b 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 43ab6b0a1c1..00000000000
Binary files a/public/emoji/1f626.png and /dev/null differ
diff --git a/public/emoji/1f626.svg b/public/emoji/1f626.svg
index c037c085a45..11a2a0bf67b 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 f99026a3bc7..00000000000
Binary files a/public/emoji/1f627.png and /dev/null differ
diff --git a/public/emoji/1f627.svg b/public/emoji/1f627.svg
index b97c18b3aa2..94aee7d3c1e 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 eb8b347cef9..00000000000
Binary files a/public/emoji/1f628.png and /dev/null differ
diff --git a/public/emoji/1f628.svg b/public/emoji/1f628.svg
index 38cfe0bb285..d4cc4aa7c39 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 98bfbd24a16..00000000000
Binary files a/public/emoji/1f629.png and /dev/null differ
diff --git a/public/emoji/1f629.svg b/public/emoji/1f629.svg
index 248da5b2e07..200c69f7daa 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 836b4107717..00000000000
Binary files a/public/emoji/1f62a.png and /dev/null differ
diff --git a/public/emoji/1f62a.svg b/public/emoji/1f62a.svg
index d2dd9f7b430..26f5e93a3a8 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 4e01eff5b23..00000000000
Binary files a/public/emoji/1f62b.png and /dev/null differ
diff --git a/public/emoji/1f62b.svg b/public/emoji/1f62b.svg
index 3ba1a6c02f0..094fd685d56 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 871b2f071c9..00000000000
Binary files a/public/emoji/1f62c.png and /dev/null differ
diff --git a/public/emoji/1f62c.svg b/public/emoji/1f62c.svg
index 75c5b7dcb42..6ef38ff1c48 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 52e3517a1ee..00000000000
Binary files a/public/emoji/1f62d.png and /dev/null differ
diff --git a/public/emoji/1f62d.svg b/public/emoji/1f62d.svg
index 0fb4ba9bd63..87a656b31e2 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 a62cd27e148..00000000000
Binary files a/public/emoji/1f62e.png and /dev/null differ
diff --git a/public/emoji/1f62e.svg b/public/emoji/1f62e.svg
index 855b53c66c7..4b54e4c742c 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 cad0e23132e..00000000000
Binary files a/public/emoji/1f62f.png and /dev/null differ
diff --git a/public/emoji/1f62f.svg b/public/emoji/1f62f.svg
index d9b0801f72b..192838a675d 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 85b2231bbf6..00000000000
Binary files a/public/emoji/1f630.png and /dev/null differ
diff --git a/public/emoji/1f630.svg b/public/emoji/1f630.svg
index 9ae7444e71e..3463630bc39 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 c3bea9f2510..00000000000
Binary files a/public/emoji/1f631.png and /dev/null differ
diff --git a/public/emoji/1f631.svg b/public/emoji/1f631.svg
index 686c9835554..cd901c7c154 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 bd0ac55ec8e..00000000000
Binary files a/public/emoji/1f632.png and /dev/null differ
diff --git a/public/emoji/1f632.svg b/public/emoji/1f632.svg
index 703ddf123d0..6c07237f425 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 829220bc470..00000000000
Binary files a/public/emoji/1f633.png and /dev/null differ
diff --git a/public/emoji/1f633.svg b/public/emoji/1f633.svg
index 8be56d39a9a..b4a717fabc9 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 9ecf600d6d8..00000000000
Binary files a/public/emoji/1f634.png and /dev/null differ
diff --git a/public/emoji/1f634.svg b/public/emoji/1f634.svg
index 41beef906ae..53b486a9df6 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 3120316ab5e..00000000000
Binary files a/public/emoji/1f635.png and /dev/null differ
diff --git a/public/emoji/1f635.svg b/public/emoji/1f635.svg
index 6556452471d..45a8bbed732 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 b642f6c1172..00000000000
Binary files a/public/emoji/1f636.png and /dev/null differ
diff --git a/public/emoji/1f636.svg b/public/emoji/1f636.svg
index 9ad70bc5170..3eb385b1dc8 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 1e800acd1c0..00000000000
Binary files a/public/emoji/1f637.png and /dev/null differ
diff --git a/public/emoji/1f637.svg b/public/emoji/1f637.svg
index 2fcc6b50f83..c2de94b08d9 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 6f25f11dd3a..00000000000
Binary files a/public/emoji/1f638.png and /dev/null differ
diff --git a/public/emoji/1f638.svg b/public/emoji/1f638.svg
index 6e8aa84356a..470dd726600 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 aac353179aa..00000000000
Binary files a/public/emoji/1f639.png and /dev/null differ
diff --git a/public/emoji/1f639.svg b/public/emoji/1f639.svg
index 1eb62f35c7f..4cd1a535a0d 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 163b57a3427..00000000000
Binary files a/public/emoji/1f63a.png and /dev/null differ
diff --git a/public/emoji/1f63a.svg b/public/emoji/1f63a.svg
index c708d746e0b..c5d85658deb 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 bc5a833f9a1..00000000000
Binary files a/public/emoji/1f63b.png and /dev/null differ
diff --git a/public/emoji/1f63b.svg b/public/emoji/1f63b.svg
index b7388254b87..7fbf39f0b00 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 9ac5954c199..00000000000
Binary files a/public/emoji/1f63c.png and /dev/null differ
diff --git a/public/emoji/1f63c.svg b/public/emoji/1f63c.svg
index 7cebf3d67c2..496d0bfea07 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 6e0bcc77540..00000000000
Binary files a/public/emoji/1f63d.png and /dev/null differ
diff --git a/public/emoji/1f63d.svg b/public/emoji/1f63d.svg
index 8d029f96051..147c3e5c030 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 41ddfeab42b..00000000000
Binary files a/public/emoji/1f63e.png and /dev/null differ
diff --git a/public/emoji/1f63e.svg b/public/emoji/1f63e.svg
index aa7be0f6440..edb262e0f68 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 b4f49715e00..00000000000
Binary files a/public/emoji/1f63f.png and /dev/null differ
diff --git a/public/emoji/1f63f.svg b/public/emoji/1f63f.svg
index 5b17e952381..1a0b5017ee6 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 15803ad8e6e..00000000000
Binary files a/public/emoji/1f640.png and /dev/null differ
diff --git a/public/emoji/1f640.svg b/public/emoji/1f640.svg
index 5c1c25786af..95462021ac0 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 b2f1d983d36..00000000000
Binary files a/public/emoji/1f641.png and /dev/null differ
diff --git a/public/emoji/1f641.svg b/public/emoji/1f641.svg
index aeb3b4f24f8..af09e8205b2 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 ddd7d65dd3d..00000000000
Binary files a/public/emoji/1f642.png and /dev/null differ
diff --git a/public/emoji/1f642.svg b/public/emoji/1f642.svg
index 753ef7c23f8..0eab08c539c 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 128f31c9828..00000000000
Binary files a/public/emoji/1f643.png and /dev/null differ
diff --git a/public/emoji/1f643.svg b/public/emoji/1f643.svg
index bdb24a7e518..b44e813c770 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 2f77b9fc3b9..00000000000
Binary files a/public/emoji/1f644.png and /dev/null differ
diff --git a/public/emoji/1f644.svg b/public/emoji/1f644.svg
index dcb222cefb3..0d6bfd35434 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 00000000000..74f9b85fdb4
--- /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 00000000000..71db02cbab9
--- /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 5c1a3cbb884..00000000000
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 ac2255ef78f..74f9b85fdb4 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 00000000000..af386803eac
--- /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 00000000000..67aae6cd5ef
--- /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 80d8021f8fe..00000000000
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 621160c36db..af386803eac 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 00000000000..420a4d31816
--- /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 00000000000..d6d2b153b42
--- /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 635e6a00815..00000000000
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 446067544ef..420a4d31816 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 00000000000..fb7d1118b61
--- /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 00000000000..ee5efbf77f1
--- /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 b96e412a374..00000000000
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 2a99eabc2eb..fb7d1118b61 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 00000000000..4bd472200f7
--- /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 00000000000..ff3880c728d
--- /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 9a7084afa0a..00000000000
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 b32480b4a1d..4bd472200f7 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 00000000000..4d88d71eb4a
--- /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 00000000000..eae7e5fdb66
--- /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 ed577100322..00000000000
Binary files a/public/emoji/1f645.png and /dev/null differ
diff --git a/public/emoji/1f645.svg b/public/emoji/1f645.svg
index d735d25d781..4d88d71eb4a 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 00000000000..df103cc7a9d
--- /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 00000000000..0838f2dde9f
--- /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 c99543e785b..00000000000
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 b8d8dfddb7b..df103cc7a9d 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 00000000000..271cf8fd0b6
--- /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 00000000000..3a1069e0b86
--- /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 ad5fae813db..00000000000
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 f16fa5a953e..271cf8fd0b6 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 00000000000..16995b6a81a
--- /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 00000000000..910658dd277
--- /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 51bf4fab406..00000000000
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 9bc563c6b58..16995b6a81a 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 00000000000..7ddb98d58ba
--- /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 00000000000..125caa0c677
--- /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 ee3f9dc640a..00000000000
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 5392c737534..7ddb98d58ba 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 00000000000..2d91be69f82
--- /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 00000000000..964fa298276
--- /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 62a9d9237f7..00000000000
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 6a43d0b1a5e..2d91be69f82 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 00000000000..6f357f8e708
--- /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 00000000000..236602e9fa4
--- /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 90a2c7469c4..00000000000
Binary files a/public/emoji/1f646.png and /dev/null differ
diff --git a/public/emoji/1f646.svg b/public/emoji/1f646.svg
index 8a9a9648e4b..6f357f8e708 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 00000000000..fee297b9cdd
--- /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 00000000000..8b367d523f8
--- /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 87afb7b54cf..00000000000
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 bce8d4babdc..8b367d523f8 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 00000000000..a6e77cca7af
--- /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 00000000000..43f2bcb9c5a
--- /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 3ccf7dc0850..00000000000
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 c492d09783f..43f2bcb9c5a 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 00000000000..8ee53b81672
--- /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 00000000000..4b07a088272
--- /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 8b9eb64f926..00000000000
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 e615034036f..4b07a088272 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 00000000000..fc989b227df
--- /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 00000000000..851dae93d64
--- /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 683795ff40d..00000000000
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 090651faac9..851dae93d64 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 00000000000..1d3cfa1f1a6
--- /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 00000000000..8fea01051f4
--- /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 7969d971752..00000000000
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 f726d47a806..8fea01051f4 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 00000000000..f4353ee985a
--- /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 00000000000..da2f281d4b2
--- /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 d8f793088dc..00000000000
Binary files a/public/emoji/1f647.png and /dev/null differ
diff --git a/public/emoji/1f647.svg b/public/emoji/1f647.svg
index e5dedddd30a..da2f281d4b2 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 5187e474531..00000000000
Binary files a/public/emoji/1f648.png and /dev/null differ
diff --git a/public/emoji/1f648.svg b/public/emoji/1f648.svg
index b8b51161e4e..1d1f0924e31 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 74b6be0c6c5..00000000000
Binary files a/public/emoji/1f649.png and /dev/null differ
diff --git a/public/emoji/1f649.svg b/public/emoji/1f649.svg
index ab6b6844c80..db494cc26df 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 9d9e07c974b..00000000000
Binary files a/public/emoji/1f64a.png and /dev/null differ
diff --git a/public/emoji/1f64a.svg b/public/emoji/1f64a.svg
index 47df40a8c86..7c87f05eb88 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 00000000000..231fcade40e
--- /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 00000000000..ef3c817b00f
--- /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 1c90e3e2689..00000000000
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 e9e7e3b3af2..231fcade40e 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 00000000000..7157d7421d0
--- /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 00000000000..a0915c07127
--- /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 82c3ef2bfc5..00000000000
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 9e6ac9c2ca1..7157d7421d0 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 00000000000..45eb562ca90
--- /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 00000000000..c9634b8d64d
--- /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 1b1da2aa0ca..00000000000
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 d4e4a75f81b..45eb562ca90 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 00000000000..7d3b14a3872
--- /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 00000000000..7b2c719bd54
--- /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 e453855c01f..00000000000
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 39a11500087..7d3b14a3872 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 00000000000..1dd14746a2b
--- /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 00000000000..ce0d45a1d25
--- /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 b86200fd844..00000000000
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 f8cb017efde..1dd14746a2b 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 00000000000..e1a2f19dc7d
--- /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 00000000000..9f9aea0bf4f
--- /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 2880708c0cc..00000000000
Binary files a/public/emoji/1f64b.png and /dev/null differ
diff --git a/public/emoji/1f64b.svg b/public/emoji/1f64b.svg
index d221b1846d0..e1a2f19dc7d 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 1168b8236b6..00000000000
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 2bec077d903..4a0b194f13b 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 322de622903..00000000000
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 f90b8825c17..077ea85a029 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 2aa24e05ae1..00000000000
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 0b0ed18ce43..8b2e1e9ebdd 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 f31bf0db992..00000000000
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 413708003b0..e5b98fcfca7 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 5e95067f98b..00000000000
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 e13a1d7b3b9..65e7f1b2dcb 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 c0155f728e7..00000000000
Binary files a/public/emoji/1f64c.png and /dev/null differ
diff --git a/public/emoji/1f64c.svg b/public/emoji/1f64c.svg
index 0f7f86cfd6f..4ff308a9de7 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 00000000000..ba732333000
--- /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 00000000000..174369312a7
--- /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 21d3bb43923..00000000000
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 7a858ef2c84..ba732333000 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 00000000000..31ad900f61b
--- /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 00000000000..461dd9dc174
--- /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 973f5fc8382..00000000000
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 10458b13f4e..31ad900f61b 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 00000000000..46f7a8c8d90
--- /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 00000000000..aa1741bc7ae
--- /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 41fbcc78816..00000000000
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 f9842d0e4c7..46f7a8c8d90 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 00000000000..5e2e2fb7a80
--- /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 00000000000..2fb851f37aa
--- /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 5a37c741030..00000000000
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 57de38b9193..5e2e2fb7a80 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 00000000000..e6acfa6f622
--- /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 00000000000..3a24ff123b4
--- /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 e08141f3efe..00000000000
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 64af62a9b60..e6acfa6f622 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 00000000000..293e6e48c4a
--- /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 00000000000..2ae727a4aaa
--- /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 579324959a1..00000000000
Binary files a/public/emoji/1f64d.png and /dev/null differ
diff --git a/public/emoji/1f64d.svg b/public/emoji/1f64d.svg
index 6309a63219a..293e6e48c4a 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 00000000000..08dd179a049
--- /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 00000000000..262ae3afec1
--- /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 57e826b75a4..00000000000
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 8d869fd6e42..08dd179a049 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 00000000000..497b5f03b69
--- /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 00000000000..b6acfce325d
--- /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 3f317c0c25f..00000000000
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 2dfd81c70d2..497b5f03b69 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 00000000000..d034260afc5
--- /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 00000000000..206cae502e3
--- /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 d2fbb6c20bf..00000000000
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 7cf16e68134..d034260afc5 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 00000000000..88f0cbf5245
--- /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 00000000000..f66526e39f0
--- /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 643ceb4a5c5..00000000000
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 84d91ba6a4a..88f0cbf5245 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 00000000000..2adddb911a0
--- /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 00000000000..8bc4352d580
--- /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 b2eb6859c32..00000000000
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 00882dd2faa..2adddb911a0 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 00000000000..f63e4da8537
--- /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 00000000000..5f5c1e1d9f8
--- /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 10eb0571078..00000000000
Binary files a/public/emoji/1f64e.png and /dev/null differ
diff --git a/public/emoji/1f64e.svg b/public/emoji/1f64e.svg
index b23b54491b0..f63e4da8537 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 060ef257172..00000000000
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 eddfe82f002..15e30c292eb 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 56dc607c07a..00000000000
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 05011796d33..24fc1b49476 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 0f33b862008..00000000000
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 40c74cf9067..00a919804a3 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 2ea8dc11657..00000000000
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 1e8149f5201..f18b44e1405 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 2128a6c4703..00000000000
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 3c7a1b6cb93..f92564f7fe3 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 8347f2435be..00000000000
Binary files a/public/emoji/1f64f.png and /dev/null differ
diff --git a/public/emoji/1f64f.svg b/public/emoji/1f64f.svg
index a6b0bca0480..085c2c97264 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 0d8da089a37..00000000000
Binary files a/public/emoji/1f680.png and /dev/null differ
diff --git a/public/emoji/1f680.svg b/public/emoji/1f680.svg
index 4ba418a05ad..b26ded5ccb6 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 7ec5f39a51a..00000000000
Binary files a/public/emoji/1f681.png and /dev/null differ
diff --git a/public/emoji/1f681.svg b/public/emoji/1f681.svg
index fa2ce38e449..cf0480df525 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 9ac0d999c4c..00000000000
Binary files a/public/emoji/1f682.png and /dev/null differ
diff --git a/public/emoji/1f682.svg b/public/emoji/1f682.svg
index 829f6e2aa2b..2ea090c6f16 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 a9acbf13008..00000000000
Binary files a/public/emoji/1f683.png and /dev/null differ
diff --git a/public/emoji/1f683.svg b/public/emoji/1f683.svg
index 8042882656f..30f3c027bee 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 ed61c67bf07..00000000000
Binary files a/public/emoji/1f684.png and /dev/null differ
diff --git a/public/emoji/1f684.svg b/public/emoji/1f684.svg
index 291c00a185b..e2c14f916f4 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 4f698e056fa..00000000000
Binary files a/public/emoji/1f685.png and /dev/null differ
diff --git a/public/emoji/1f685.svg b/public/emoji/1f685.svg
index e6e4a7a6ac0..cc80bc4aaa6 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 367c7bc5d39..00000000000
Binary files a/public/emoji/1f686.png and /dev/null differ
diff --git a/public/emoji/1f686.svg b/public/emoji/1f686.svg
index 15d5e1ebbec..647ab081530 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 1de8f0551f3..00000000000
Binary files a/public/emoji/1f687.png and /dev/null differ
diff --git a/public/emoji/1f687.svg b/public/emoji/1f687.svg
index 5f075abdaeb..60c3d8268ba 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 a64829f5078..00000000000
Binary files a/public/emoji/1f688.png and /dev/null differ
diff --git a/public/emoji/1f688.svg b/public/emoji/1f688.svg
index f5fc3b02b4f..cb6e6d42b3d 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 5c26fee529c..00000000000
Binary files a/public/emoji/1f689.png and /dev/null differ
diff --git a/public/emoji/1f689.svg b/public/emoji/1f689.svg
index 6c3953aa303..1c5c465c005 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 b6f0e69038f..00000000000
Binary files a/public/emoji/1f68a.png and /dev/null differ
diff --git a/public/emoji/1f68a.svg b/public/emoji/1f68a.svg
index e98a079b011..829df7f8d45 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 3c80321f7e8..00000000000
Binary files a/public/emoji/1f68b.png and /dev/null differ
diff --git a/public/emoji/1f68b.svg b/public/emoji/1f68b.svg
index 8c64b51112a..5cb3696fd61 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 641ddc56ca7..00000000000
Binary files a/public/emoji/1f68c.png and /dev/null differ
diff --git a/public/emoji/1f68c.svg b/public/emoji/1f68c.svg
index 99862d51161..8b5db4e4b4b 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 ad91e256c7f..00000000000
Binary files a/public/emoji/1f68d.png and /dev/null differ
diff --git a/public/emoji/1f68d.svg b/public/emoji/1f68d.svg
index d2d2f59c747..7bde4113e3a 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 139a9931b52..00000000000
Binary files a/public/emoji/1f68e.png and /dev/null differ
diff --git a/public/emoji/1f68e.svg b/public/emoji/1f68e.svg
index ec3e927f81c..bac04094af5 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 b2b62208bfd..00000000000
Binary files a/public/emoji/1f68f.png and /dev/null differ
diff --git a/public/emoji/1f68f.svg b/public/emoji/1f68f.svg
index 3e9cb1d116c..e224dbc7e72 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 c60dd8f47ab..00000000000
Binary files a/public/emoji/1f690.png and /dev/null differ
diff --git a/public/emoji/1f690.svg b/public/emoji/1f690.svg
index 5357258cc36..b2a3b1cc139 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 6fb8076d766..00000000000
Binary files a/public/emoji/1f691.png and /dev/null differ
diff --git a/public/emoji/1f691.svg b/public/emoji/1f691.svg
index 2bcbcffa609..7c969bef880 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 2cd45b7cf7e..00000000000
Binary files a/public/emoji/1f692.png and /dev/null differ
diff --git a/public/emoji/1f692.svg b/public/emoji/1f692.svg
index d82b2548336..a7672c43df7 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 3da4253de7e..00000000000
Binary files a/public/emoji/1f693.png and /dev/null differ
diff --git a/public/emoji/1f693.svg b/public/emoji/1f693.svg
index 7964668dffd..3241874c6c2 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 c9109c85b5d..00000000000
Binary files a/public/emoji/1f694.png and /dev/null differ
diff --git a/public/emoji/1f694.svg b/public/emoji/1f694.svg
index 680a0975959..91e5aea9c96 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 55f4cc84797..00000000000
Binary files a/public/emoji/1f695.png and /dev/null differ
diff --git a/public/emoji/1f695.svg b/public/emoji/1f695.svg
index c6bdad8ba9d..0d7a21a7c02 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 fea14e45846..00000000000
Binary files a/public/emoji/1f696.png and /dev/null differ
diff --git a/public/emoji/1f696.svg b/public/emoji/1f696.svg
index 6a02e812fd0..da0c6c583f7 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 b3e6a774dea..00000000000
Binary files a/public/emoji/1f697.png and /dev/null differ
diff --git a/public/emoji/1f697.svg b/public/emoji/1f697.svg
index da85c344d29..03e094c257b 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 3c7e1d52e63..00000000000
Binary files a/public/emoji/1f698.png and /dev/null differ
diff --git a/public/emoji/1f698.svg b/public/emoji/1f698.svg
index cd0a8881ad5..9adc06efb3e 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 e8ba817d393..00000000000
Binary files a/public/emoji/1f699.png and /dev/null differ
diff --git a/public/emoji/1f699.svg b/public/emoji/1f699.svg
index 12d1b6d10db..18d132b01de 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 130de047f8b..00000000000
Binary files a/public/emoji/1f69a.png and /dev/null differ
diff --git a/public/emoji/1f69a.svg b/public/emoji/1f69a.svg
index c543e986251..8a0d04a4aee 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 c8217317132..00000000000
Binary files a/public/emoji/1f69b.png and /dev/null differ
diff --git a/public/emoji/1f69b.svg b/public/emoji/1f69b.svg
index 5f0fbc1ca64..b5b3522a34f 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 c1bf8cae44f..00000000000
Binary files a/public/emoji/1f69c.png and /dev/null differ
diff --git a/public/emoji/1f69c.svg b/public/emoji/1f69c.svg
index 794c2d369e7..3c2d4ff5b89 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 11eb1f574bf..00000000000
Binary files a/public/emoji/1f69d.png and /dev/null differ
diff --git a/public/emoji/1f69d.svg b/public/emoji/1f69d.svg
index 4244515a240..f7cd69eea44 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 ade2218e469..00000000000
Binary files a/public/emoji/1f69e.png and /dev/null differ
diff --git a/public/emoji/1f69e.svg b/public/emoji/1f69e.svg
index 2bbbd3a0205..edab9bc152b 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 a59d5f48c24..00000000000
Binary files a/public/emoji/1f69f.png and /dev/null differ
diff --git a/public/emoji/1f69f.svg b/public/emoji/1f69f.svg
index 9f1974860fb..f98920fd2ea 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 1dea73ca53b..00000000000
Binary files a/public/emoji/1f6a0.png and /dev/null differ
diff --git a/public/emoji/1f6a0.svg b/public/emoji/1f6a0.svg
index e8eb108975f..58ce005cda1 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 3eb4b61bf1d..00000000000
Binary files a/public/emoji/1f6a1.png and /dev/null differ
diff --git a/public/emoji/1f6a1.svg b/public/emoji/1f6a1.svg
index 84de8fddf05..c06e2d34a99 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 62d54f7d6c9..00000000000
Binary files a/public/emoji/1f6a2.png and /dev/null differ
diff --git a/public/emoji/1f6a2.svg b/public/emoji/1f6a2.svg
index 032a22c98f9..015a830cbb0 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 00000000000..dc8b2470e1f
--- /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 00000000000..373293e11e7
--- /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 5e5d18548cb..00000000000
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 a97ed61b216..373293e11e7 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 00000000000..cbf40885440
--- /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 00000000000..afcfc9d1129
--- /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 9b123ef8871..00000000000
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 4579d7f9980..afcfc9d1129 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 00000000000..dfb4cc90c9f
--- /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 00000000000..a68a297358d
--- /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 8ebd89a55f5..00000000000
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 30f40ace808..a68a297358d 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 00000000000..b8125596f89
--- /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 00000000000..4a0bdc0fd82
--- /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 2b0d04f8725..00000000000
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 3b64992808e..4a0bdc0fd82 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 00000000000..ef0025a7fd2
--- /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 00000000000..11b8650dd1c
--- /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 b346f2dfc84..00000000000
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 57bd8c0febf..11b8650dd1c 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 00000000000..923ed2b0771
--- /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 00000000000..fb16b9148c2
--- /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 dd4dfc095d9..00000000000
Binary files a/public/emoji/1f6a3.png and /dev/null differ
diff --git a/public/emoji/1f6a3.svg b/public/emoji/1f6a3.svg
index 89eb387dc91..fb16b9148c2 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 74059d12de1..00000000000
Binary files a/public/emoji/1f6a4.png and /dev/null differ
diff --git a/public/emoji/1f6a4.svg b/public/emoji/1f6a4.svg
index 70aa1adc203..796817aa3e4 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 6b312285b00..00000000000
Binary files a/public/emoji/1f6a5.png and /dev/null differ
diff --git a/public/emoji/1f6a5.svg b/public/emoji/1f6a5.svg
index 30aa0d09233..d720e004341 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 8085973eecf..00000000000
Binary files a/public/emoji/1f6a6.png and /dev/null differ
diff --git a/public/emoji/1f6a6.svg b/public/emoji/1f6a6.svg
index 7f6e697b409..9949ca92758 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 ef8db5f471c..00000000000
Binary files a/public/emoji/1f6a7.png and /dev/null differ
diff --git a/public/emoji/1f6a7.svg b/public/emoji/1f6a7.svg
index c48a759c1e1..39dbfd5af33 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 cad66b0afef..00000000000
Binary files a/public/emoji/1f6a8.png and /dev/null differ
diff --git a/public/emoji/1f6a8.svg b/public/emoji/1f6a8.svg
index 2a00519110e..dce1260baa8 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 c12d8b06886..00000000000
Binary files a/public/emoji/1f6a9.png and /dev/null differ
diff --git a/public/emoji/1f6a9.svg b/public/emoji/1f6a9.svg
index d07347b59ae..44a68cf2077 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 36ae3e27494..00000000000
Binary files a/public/emoji/1f6aa.png and /dev/null differ
diff --git a/public/emoji/1f6aa.svg b/public/emoji/1f6aa.svg
index ac7fa2f073b..6743f42f6a2 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 d2efd65e74b..00000000000
Binary files a/public/emoji/1f6ab.png and /dev/null differ
diff --git a/public/emoji/1f6ab.svg b/public/emoji/1f6ab.svg
index 1877e1d63de..deecfc9d541 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 910f648c8f9..00000000000
Binary files a/public/emoji/1f6ac.png and /dev/null differ
diff --git a/public/emoji/1f6ac.svg b/public/emoji/1f6ac.svg
index 2f44e929deb..19d8f162db2 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 586b8d29d05..00000000000
Binary files a/public/emoji/1f6ad.png and /dev/null differ
diff --git a/public/emoji/1f6ad.svg b/public/emoji/1f6ad.svg
index f02dd41b38e..504d2aaf382 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 82a84f9a375..00000000000
Binary files a/public/emoji/1f6ae.png and /dev/null differ
diff --git a/public/emoji/1f6ae.svg b/public/emoji/1f6ae.svg
index 54cbd381e15..1a5d6ae557e 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 341d2575f4f..00000000000
Binary files a/public/emoji/1f6af.png and /dev/null differ
diff --git a/public/emoji/1f6af.svg b/public/emoji/1f6af.svg
index bfc991b0787..1e311893a16 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 2c610049459..00000000000
Binary files a/public/emoji/1f6b0.png and /dev/null differ
diff --git a/public/emoji/1f6b0.svg b/public/emoji/1f6b0.svg
index 504d3cec073..19c4240e902 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 827d4193f4e..00000000000
Binary files a/public/emoji/1f6b1.png and /dev/null differ
diff --git a/public/emoji/1f6b1.svg b/public/emoji/1f6b1.svg
index 0eec893e11a..de985691e72 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 556ed70f1a7..00000000000
Binary files a/public/emoji/1f6b2.png and /dev/null differ
diff --git a/public/emoji/1f6b2.svg b/public/emoji/1f6b2.svg
index 0a4447d6cd4..e5638ad79f0 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 19c85421ce9..00000000000
Binary files a/public/emoji/1f6b3.png and /dev/null differ
diff --git a/public/emoji/1f6b3.svg b/public/emoji/1f6b3.svg
index 320cc23716c..0b1eee9703a 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 00000000000..c949abec108
--- /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 00000000000..4a6d96ff9cb
--- /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 decc2f728fe..00000000000
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 23c64dcb0f9..4a6d96ff9cb 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 00000000000..10144b26f5c
--- /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 00000000000..0916f96a4b9
--- /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 0067717b80a..00000000000
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 3451fe9ba5e..0916f96a4b9 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 00000000000..a14652605a8
--- /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 00000000000..488a0859f98
--- /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 a4f7b5e2776..00000000000
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 a5b9598664b..488a0859f98 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 00000000000..f667db53e7a
--- /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 00000000000..e3989ddb8ba
--- /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 a3c8a797db4..00000000000
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 1dcaae86218..e3989ddb8ba 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 00000000000..d0be70885e5
--- /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 00000000000..1c37cb11072
--- /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 1606a874051..00000000000
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 44fc622fed1..1c37cb11072 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 00000000000..69480c83104
--- /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 00000000000..68ec2c479a3
--- /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 9274da11048..00000000000
Binary files a/public/emoji/1f6b4.png and /dev/null differ
diff --git a/public/emoji/1f6b4.svg b/public/emoji/1f6b4.svg
index d66ad5c6ceb..68ec2c479a3 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 00000000000..86185f8508e
--- /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 00000000000..f65d701a412
--- /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 e9f1daf5e40..00000000000
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 5ce96f5b248..f65d701a412 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 00000000000..f876528ea13
--- /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 00000000000..82785c12e16
--- /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 555b9e29d4d..00000000000
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 9b088b9f7de..82785c12e16 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 00000000000..29711f85fb5
--- /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 00000000000..19f190291cd
--- /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 7df5508ec8c..00000000000
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 561ba2d1cb8..19f190291cd 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 00000000000..89b33acec4d
--- /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 00000000000..c57df8b116b
--- /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 f94b3450697..00000000000
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 a1153c343f3..c57df8b116b 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 00000000000..46b9a620692
--- /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 00000000000..86402bd907c
--- /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 16a45861e1f..00000000000
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 ca9993afc31..86402bd907c 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 00000000000..fa1a7a3984f
--- /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 00000000000..ec9d2b0e169
--- /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 41d3dc3ac6f..00000000000
Binary files a/public/emoji/1f6b5.png and /dev/null differ
diff --git a/public/emoji/1f6b5.svg b/public/emoji/1f6b5.svg
index 0d5eb712dfd..ec9d2b0e169 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 00000000000..6680792c36c
--- /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 00000000000..b1ba4589123
--- /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 4e391b45a0b..00000000000
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 b4d3ddee2d7..b1ba4589123 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 00000000000..a6d74f765a0
--- /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 00000000000..5376c071712
--- /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 31f94a1bce1..00000000000
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 8c15b9be799..5376c071712 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 00000000000..cab4ccb79d6
--- /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 00000000000..0bb556b9893
--- /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 f7ed8e39c2e..00000000000
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 69ef31ca4f9..0bb556b9893 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 00000000000..3930cfc7308
--- /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 00000000000..a1cc9c8222f
--- /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 e58dc04c7b2..00000000000
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 82b4e83346f..a1cc9c8222f 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 00000000000..dcc4ea187a5
--- /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 00000000000..a1b476a853b
--- /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 ba4e1b58fcb..00000000000
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 454b2a99d74..a1b476a853b 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 00000000000..8299d1af045
--- /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 00000000000..db08fa81efc
--- /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 06dc169a3fd..00000000000
Binary files a/public/emoji/1f6b6.png and /dev/null differ
diff --git a/public/emoji/1f6b6.svg b/public/emoji/1f6b6.svg
index 8ba1d285560..db08fa81efc 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 286aa577a23..00000000000
Binary files a/public/emoji/1f6b7.png and /dev/null differ
diff --git a/public/emoji/1f6b7.svg b/public/emoji/1f6b7.svg
index ff92a91ca02..c857019e429 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 fa4c091c7c3..00000000000
Binary files a/public/emoji/1f6b8.png and /dev/null differ
diff --git a/public/emoji/1f6b8.svg b/public/emoji/1f6b8.svg
index 8b9b118396a..0c007f61387 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 f5a1e1ba0cd..00000000000
Binary files a/public/emoji/1f6b9.png and /dev/null differ
diff --git a/public/emoji/1f6b9.svg b/public/emoji/1f6b9.svg
index 962b0940074..2cea4e4edd9 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 d4ecc22e7b3..00000000000
Binary files a/public/emoji/1f6ba.png and /dev/null differ
diff --git a/public/emoji/1f6ba.svg b/public/emoji/1f6ba.svg
index b98439e3805..354a204c48f 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 9588e0f0ef7..00000000000
Binary files a/public/emoji/1f6bb.png and /dev/null differ
diff --git a/public/emoji/1f6bb.svg b/public/emoji/1f6bb.svg
index 8ece75fe5b8..851ec0cf03e 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 64a10b71710..00000000000
Binary files a/public/emoji/1f6bc.png and /dev/null differ
diff --git a/public/emoji/1f6bc.svg b/public/emoji/1f6bc.svg
index 47411174190..8c6a12e03f5 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 1392f761835..00000000000
Binary files a/public/emoji/1f6bd.png and /dev/null differ
diff --git a/public/emoji/1f6bd.svg b/public/emoji/1f6bd.svg
index 5a108e201c5..7caf812079b 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 aa433e84ba6..00000000000
Binary files a/public/emoji/1f6be.png and /dev/null differ
diff --git a/public/emoji/1f6be.svg b/public/emoji/1f6be.svg
index 71390fb19f2..791c1012224 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 156776a2e52..00000000000
Binary files a/public/emoji/1f6bf.png and /dev/null differ
diff --git a/public/emoji/1f6bf.svg b/public/emoji/1f6bf.svg
index dd21474ebdf..e4bf5e2236d 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 2152eabf2f5..00000000000
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 fa9921fc402..8f47a3cfaf6 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 2102e6133e3..00000000000
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 62648e5590f..958169f37f8 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 fae66181e9f..00000000000
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 4c4957f24f2..2975ade6030 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 1f8959d0d99..00000000000
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 43c665f0947..30a4a8cd3b0 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 c8a08e84f25..00000000000
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 c03631844c9..15ae1a6e426 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 43fba5c8a28..00000000000
Binary files a/public/emoji/1f6c0.png and /dev/null differ
diff --git a/public/emoji/1f6c0.svg b/public/emoji/1f6c0.svg
index 6985f1feef6..be47a8dda6c 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 9a5f09361eb..00000000000
Binary files a/public/emoji/1f6c1.png and /dev/null differ
diff --git a/public/emoji/1f6c1.svg b/public/emoji/1f6c1.svg
index cef7b67c384..baa62d48e27 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 079e34ee4d4..00000000000
Binary files a/public/emoji/1f6c2.png and /dev/null differ
diff --git a/public/emoji/1f6c2.svg b/public/emoji/1f6c2.svg
index f29b9c724ad..cb55bd48822 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 21b7ce2c69e..00000000000
Binary files a/public/emoji/1f6c3.png and /dev/null differ
diff --git a/public/emoji/1f6c3.svg b/public/emoji/1f6c3.svg
index 618ee799a06..95062ee8736 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 409b593e78a..00000000000
Binary files a/public/emoji/1f6c4.png and /dev/null differ
diff --git a/public/emoji/1f6c4.svg b/public/emoji/1f6c4.svg
index b7c8c1cb539..9a0ce13dd95 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 887b23f3f25..00000000000
Binary files a/public/emoji/1f6c5.png and /dev/null differ
diff --git a/public/emoji/1f6c5.svg b/public/emoji/1f6c5.svg
index dea7416552c..c8396313c17 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 27b19b13bb0..00000000000
Binary files a/public/emoji/1f6cb.png and /dev/null differ
diff --git a/public/emoji/1f6cb.svg b/public/emoji/1f6cb.svg
index a33ada16bb3..c452194bcdf 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 00000000000..f1b16416938
--- /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 00000000000..cdae6beb8aa
--- /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 00000000000..c13dd711fcc
--- /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 00000000000..0bde531d05b
--- /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 00000000000..cddf398acc7
--- /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 c739e7fb69b..00000000000
Binary files a/public/emoji/1f6cc.png and /dev/null differ
diff --git a/public/emoji/1f6cc.svg b/public/emoji/1f6cc.svg
index 8446d6d7c9d..cf6a9fac9f1 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 99f2a2b13ac..00000000000
Binary files a/public/emoji/1f6cd.png and /dev/null differ
diff --git a/public/emoji/1f6cd.svg b/public/emoji/1f6cd.svg
index 1daf857d80c..0ca3ece26c1 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 6b3297ceaf7..00000000000
Binary files a/public/emoji/1f6ce.png and /dev/null differ
diff --git a/public/emoji/1f6ce.svg b/public/emoji/1f6ce.svg
index 96f9fef0b69..dab1704eefe 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 86f964e245d..00000000000
Binary files a/public/emoji/1f6cf.png and /dev/null differ
diff --git a/public/emoji/1f6cf.svg b/public/emoji/1f6cf.svg
index f2fb4aad66e..59bc17175ac 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 207d59cce85..00000000000
Binary files a/public/emoji/1f6d0.png and /dev/null differ
diff --git a/public/emoji/1f6d0.svg b/public/emoji/1f6d0.svg
index 65314e5f641..0ec8b1a12d0 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 5ed61004045..00000000000
Binary files a/public/emoji/1f6d1.png and /dev/null differ
diff --git a/public/emoji/1f6d1.svg b/public/emoji/1f6d1.svg
index 4107a857f1b..96da3bba8b1 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 1086fe6e456..00000000000
Binary files a/public/emoji/1f6d2.png and /dev/null differ
diff --git a/public/emoji/1f6d2.svg b/public/emoji/1f6d2.svg
index b820572d75d..fa7ec4adfd0 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 3c6049273a9..00000000000
Binary files a/public/emoji/1f6e0.png and /dev/null differ
diff --git a/public/emoji/1f6e0.svg b/public/emoji/1f6e0.svg
index af26bdb17b6..f7ac133b596 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 610bf033ce0..00000000000
Binary files a/public/emoji/1f6e1.png and /dev/null differ
diff --git a/public/emoji/1f6e1.svg b/public/emoji/1f6e1.svg
index e9a41aa3a1e..1f0c881fb45 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 c4c4d42da8b..00000000000
Binary files a/public/emoji/1f6e2.png and /dev/null differ
diff --git a/public/emoji/1f6e2.svg b/public/emoji/1f6e2.svg
index c5a60a82c16..9405fe36d0e 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 8c3d3d03e3f..00000000000
Binary files a/public/emoji/1f6e3.png and /dev/null differ
diff --git a/public/emoji/1f6e3.svg b/public/emoji/1f6e3.svg
index 2ccec72c45a..69e58f85047 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 e1a7a0d1430..00000000000
Binary files a/public/emoji/1f6e4.png and /dev/null differ
diff --git a/public/emoji/1f6e4.svg b/public/emoji/1f6e4.svg
index 4828d4248fc..f6a4a6b3166 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 0506db1a40f..00000000000
Binary files a/public/emoji/1f6e5.png and /dev/null differ
diff --git a/public/emoji/1f6e5.svg b/public/emoji/1f6e5.svg
index db896dbc981..50e7c3d365b 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 b731b15e3a8..00000000000
Binary files a/public/emoji/1f6e9.png and /dev/null differ
diff --git a/public/emoji/1f6e9.svg b/public/emoji/1f6e9.svg
index 191a1140947..2f42c60bf14 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 a5766f9f4ae..00000000000
Binary files a/public/emoji/1f6eb.png and /dev/null differ
diff --git a/public/emoji/1f6eb.svg b/public/emoji/1f6eb.svg
index 5220fb3a722..5a76b58c215 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 d66841962f2..00000000000
Binary files a/public/emoji/1f6ec.png and /dev/null differ
diff --git a/public/emoji/1f6ec.svg b/public/emoji/1f6ec.svg
index c170f90af87..0493a97eb8b 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 4ba55d6e297..00000000000
Binary files a/public/emoji/1f6f0.png and /dev/null differ
diff --git a/public/emoji/1f6f0.svg b/public/emoji/1f6f0.svg
index 1d11f7aa782..d3b7ec6d43b 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 19d4acbe40c..00000000000
Binary files a/public/emoji/1f6f3.png and /dev/null differ
diff --git a/public/emoji/1f6f3.svg b/public/emoji/1f6f3.svg
index 81b10ac4901..cede9fbc3d4 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 4ab7ef59cd2..00000000000
Binary files a/public/emoji/1f6f4.png and /dev/null differ
diff --git a/public/emoji/1f6f4.svg b/public/emoji/1f6f4.svg
index a0f4a49abe8..d23b8a07700 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 c5afa72d807..00000000000
Binary files a/public/emoji/1f6f5.png and /dev/null differ
diff --git a/public/emoji/1f6f5.svg b/public/emoji/1f6f5.svg
index 7d7f7383b64..d7b49c603f4 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 e26cdb9da69..00000000000
Binary files a/public/emoji/1f6f6.png and /dev/null differ
diff --git a/public/emoji/1f6f6.svg b/public/emoji/1f6f6.svg
index 3d861645331..9ec5a06c673 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 00000000000..91f56537300
--- /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 00000000000..5cc00c6a0f4
--- /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 f8ced2502a7..00000000000
Binary files a/public/emoji/1f910.png and /dev/null differ
diff --git a/public/emoji/1f910.svg b/public/emoji/1f910.svg
index 51851ff0145..0c238b55feb 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 75fd1e90cb0..00000000000
Binary files a/public/emoji/1f911.png and /dev/null differ
diff --git a/public/emoji/1f911.svg b/public/emoji/1f911.svg
index 19404ab8eca..c3c3f6b6f35 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 8fc57387563..00000000000
Binary files a/public/emoji/1f912.png and /dev/null differ
diff --git a/public/emoji/1f912.svg b/public/emoji/1f912.svg
index 2b9d9b0bebb..37e1ee294ce 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 7820bd581dc..00000000000
Binary files a/public/emoji/1f913.png and /dev/null differ
diff --git a/public/emoji/1f913.svg b/public/emoji/1f913.svg
index 1dc83d76462..50cbdd2ba58 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 c18f6fd14ad..00000000000
Binary files a/public/emoji/1f914.png and /dev/null differ
diff --git a/public/emoji/1f914.svg b/public/emoji/1f914.svg
index 3b5fe136f61..a7a571aa68e 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 0be723085e0..00000000000
Binary files a/public/emoji/1f915.png and /dev/null differ
diff --git a/public/emoji/1f915.svg b/public/emoji/1f915.svg
index 26dfd8cf442..16bec115fd5 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 7cc62612c6a..00000000000
Binary files a/public/emoji/1f916.png and /dev/null differ
diff --git a/public/emoji/1f916.svg b/public/emoji/1f916.svg
index 047eae18ff8..9a9cf4b3ec4 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 5bba6dc6d51..00000000000
Binary files a/public/emoji/1f917.png and /dev/null differ
diff --git a/public/emoji/1f917.svg b/public/emoji/1f917.svg
index 238b5a7825d..cc3524873e8 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 c080d2addbd..00000000000
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 2ac3beae057..bcc91553a88 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 12313529bcf..00000000000
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 edbd0b20892..25497767f3b 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 ca9be6ae67b..00000000000
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 39f8819a5aa..4dbb31ef345 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 abe28cbf890..00000000000
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 b8b1f4500ab..e74fe32567e 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 0c6b5dd34ed..00000000000
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 1dfaceff897..8727eccb9cd 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 4aa6e7e0a44..00000000000
Binary files a/public/emoji/1f918.png and /dev/null differ
diff --git a/public/emoji/1f918.svg b/public/emoji/1f918.svg
index 125c338544a..ba3822b96f9 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 2c93201181a..00000000000
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 6798a545f6d..231703d3031 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 c39f45a41ed..00000000000
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 1c604faa35c..1e096efd4db 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 83a57f63c29..00000000000
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 72706380428..ee2567aa0bd 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 65b3468fe44..00000000000
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 c7d9afa184f..b6301bf75b5 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 94ef68ff3b3..00000000000
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 7f958198623..a4126d45e02 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 a10c59ba711..00000000000
Binary files a/public/emoji/1f919.png and /dev/null differ
diff --git a/public/emoji/1f919.svg b/public/emoji/1f919.svg
index 84df19cce07..05c6e76d3b4 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 813d28499b5..00000000000
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 7a7baa85408..d7767b7b580 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 192ff795e37..00000000000
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 7343906b1cf..beb8fc5d742 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 61a727abe6b..00000000000
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 55f936d152d..1c62d98f581 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 2e83da511f5..00000000000
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 6dc3b2210d4..1026fca8deb 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 d7a5b95a02c..00000000000
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 d27a387c6d4..0a6024a203f 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 479234294b4..00000000000
Binary files a/public/emoji/1f91a.png and /dev/null differ
diff --git a/public/emoji/1f91a.svg b/public/emoji/1f91a.svg
index 74d0015f653..8579efff7a0 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 1262a6b4b69..00000000000
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 00f854072d6..2eb0c149a09 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 40bf70b82b2..00000000000
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 92dd89993e5..10dd4d02a4b 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 93f58145111..00000000000
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 6254ca9ae98..3b4cd2153dc 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 d82b5ec91f0..00000000000
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 074eca34800..66bccaef202 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 09ae4cd492b..00000000000
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 163866bbac1..2324d4aeee8 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 a9d9fd8d59c..00000000000
Binary files a/public/emoji/1f91b.png and /dev/null differ
diff --git a/public/emoji/1f91b.svg b/public/emoji/1f91b.svg
index ea97a80a0b6..c554fffc596 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 33ded2f61a6..00000000000
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 d3c0de370f4..3207b4b5849 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 88054e335c7..00000000000
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 9459974002f..678d3db7354 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 84b9f5da7f7..00000000000
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 c540bb048ae..c619612bdcc 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 e741cfea68b..00000000000
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 c3a410c28c0..e1dc9efa9a0 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 cf66d760c1f..00000000000
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 1ff1b64f36d..a7b1723c052 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 754ed066d2c..00000000000
Binary files a/public/emoji/1f91c.png and /dev/null differ
diff --git a/public/emoji/1f91c.svg b/public/emoji/1f91c.svg
index 80a75c9cded..a320968b29f 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 8f8fbb9bdca..00000000000
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 bc7cf60e8c1..00000000000
--- 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 336a77a6d78..00000000000
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 c13f18ba6e3..00000000000
--- 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 95f62d4fecd..00000000000
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 76871fcba75..00000000000
--- 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 2b0a6433886..00000000000
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 45a6c8204b3..00000000000
--- 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 40189ee68e4..00000000000
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 44444267010..00000000000
--- 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 c5d35fd8138..00000000000
Binary files a/public/emoji/1f91d.png and /dev/null differ
diff --git a/public/emoji/1f91d.svg b/public/emoji/1f91d.svg
index 185bf3bc70a..d6b87a93f66 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 dd2384a6cd5..00000000000
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 aa4cd73ac16..571240a9ffc 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 6228401befe..00000000000
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 bf4eff677bd..b38874554fe 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 b1074da15f5..00000000000
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 5562818e400..6afd877e797 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 75e05e4d332..00000000000
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 5067aaebaae..62816622dc8 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 761aebdc30f..00000000000
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 741dc664083..00b44e88ddb 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 4cd18514ea3..00000000000
Binary files a/public/emoji/1f91e.png and /dev/null differ
diff --git a/public/emoji/1f91e.svg b/public/emoji/1f91e.svg
index 574dcc17f97..ee5f2430d41 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 00000000000..24b951fc119
--- /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 00000000000..0dff66ba449
--- /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 00000000000..0140134559a
--- /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 00000000000..74b318c0c64
--- /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 00000000000..c059eb6e52a
--- /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 00000000000..8f935186557
--- /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 70dd5d0d9d1..00000000000
Binary files a/public/emoji/1f920.png and /dev/null differ
diff --git a/public/emoji/1f920.svg b/public/emoji/1f920.svg
index 11437ce6dd0..a240ae0b504 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 02b7ff70049..00000000000
Binary files a/public/emoji/1f921.png and /dev/null differ
diff --git a/public/emoji/1f921.svg b/public/emoji/1f921.svg
index 63812e73110..f0786613206 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 a566c109c28..00000000000
Binary files a/public/emoji/1f922.png and /dev/null differ
diff --git a/public/emoji/1f922.svg b/public/emoji/1f922.svg
index 893e564de5a..1815d4965a2 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 b1736fedfeb..00000000000
Binary files a/public/emoji/1f923.png and /dev/null differ
diff --git a/public/emoji/1f923.svg b/public/emoji/1f923.svg
index e029257016f..1ca89f33aef 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 a5460532597..00000000000
Binary files a/public/emoji/1f924.png and /dev/null differ
diff --git a/public/emoji/1f924.svg b/public/emoji/1f924.svg
index 4e30304dfc0..c81e62d6c5b 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 02827e2628b..00000000000
Binary files a/public/emoji/1f925.png and /dev/null differ
diff --git a/public/emoji/1f925.svg b/public/emoji/1f925.svg
index 7446d3f45fa..a78baff89da 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 00000000000..61cab88bec3
--- /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 00000000000..45a0c293d44
--- /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 2f4b010bb40..00000000000
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 60e2089a4b9..61cab88bec3 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 00000000000..9d28aecc957
--- /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 00000000000..55f32a525a6
--- /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 97fb6831687..00000000000
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 a5fc0ae04c3..9d28aecc957 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 00000000000..a23fe91cc13
--- /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 00000000000..0c349e099c5
--- /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 b5b5c1e5306..00000000000
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 ea86bb8cba6..a23fe91cc13 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 00000000000..6ec0c9edbaf
--- /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 00000000000..af75656a570
--- /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 2840b113483..00000000000
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 27bb43a42b4..6ec0c9edbaf 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 00000000000..e4ba1179b45
--- /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 00000000000..cc2122284de
--- /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 6f070db98be..00000000000
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 2f704437591..e4ba1179b45 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 00000000000..9e134f05d2a
--- /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 00000000000..1e51ec0459a
--- /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 defc796cf16..00000000000
Binary files a/public/emoji/1f926.png and /dev/null differ
diff --git a/public/emoji/1f926.svg b/public/emoji/1f926.svg
index bff8effe6bd..9e134f05d2a 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 ccf07d4b64d..00000000000
Binary files a/public/emoji/1f927.png and /dev/null differ
diff --git a/public/emoji/1f927.svg b/public/emoji/1f927.svg
index 1c513dd2809..ad0eb94a524 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 00000000000..5b7fda886ff
--- /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 00000000000..cd16d001e7f
--- /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 00000000000..579fb1c9db0
--- /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 00000000000..819a7c792aa
--- /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 00000000000..e19b92f4522
--- /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 00000000000..ee9649f89e7
--- /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 00000000000..dbf0ad3ff5e
--- /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 00000000000..03198605d19
--- /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 a78703b33aa..00000000000
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 4b1d23ff297..324864905a2 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 0068c6c4a77..00000000000
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 b1683589282..f7771ab08c0 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 3206296b684..00000000000
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 dbb32eac3af..34000f5a248 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 120fda5cd8c..00000000000
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 a3bab2cba49..3a6ac0c1f4f 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 569bfdf05ce..00000000000
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 ad37b4b16f6..5ca9e492fe0 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 084e83a414a..00000000000
Binary files a/public/emoji/1f930.png and /dev/null differ
diff --git a/public/emoji/1f930.svg b/public/emoji/1f930.svg
index 768b902b88e..b5820f4f3e8 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 00000000000..988b5d57d52
--- /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 00000000000..2883d9ef565
--- /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 00000000000..b42dc9fb5f8
--- /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 00000000000..41c6f1c75eb
--- /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 00000000000..428a21dcb02
--- /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 00000000000..6533abf711b
--- /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 00000000000..8d826d97519
--- /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 00000000000..5ab9964ff38
--- /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 00000000000..e64b1fba47d
--- /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 00000000000..34728c5ab9b
--- /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 00000000000..dff0c8e43eb
--- /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 00000000000..457e04c2c03
--- /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 290e075b56f..00000000000
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 891ddd13229..1f0bbf5b462 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 fcd9595b643..00000000000
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 8e9e6544449..db84bbe0886 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 f3a22fdf435..00000000000
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 d40f5f75d0d..34d5842fecd 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 cdecf6d9f4e..00000000000
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 d19b5ea811b..1d313cf1833 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 86acbb6c202..00000000000
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 3be274394fc..8badf905fc9 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 6a1ba75c7e3..00000000000
Binary files a/public/emoji/1f933.png and /dev/null differ
diff --git a/public/emoji/1f933.svg b/public/emoji/1f933.svg
index 009221c6abb..c031fc001e4 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 849930c8887..00000000000
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 9688cead970..841a50ec3ff 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 23d8b3b1285..00000000000
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 cc27b532deb..7624b4dae55 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 db6dfff0647..00000000000
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 44a0524d41c..43ee1573ef8 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 8e10f8be6a8..00000000000
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 71c66cb95ef..d2d890f8288 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 138d4ea7048..00000000000
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 d45a0f05aa6..845726b1b01 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 38d69344c84..00000000000
Binary files a/public/emoji/1f934.png and /dev/null differ
diff --git a/public/emoji/1f934.svg b/public/emoji/1f934.svg
index a075a6b44cf..700e4dd8ee1 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 7b6b3acd99b..00000000000
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 b5259d659d9..76431d58f8d 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 7975191b360..00000000000
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 d57750ac502..af8c199d5bd 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 a2816f600ae..00000000000
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 9c816e30331..3d796d873e0 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 ea8291760f9..00000000000
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 e15d1765727..bdfbf85df36 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 c743e05fc5e..00000000000
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 f8655dbe7b5..da7f013d0da 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 5f7e9303f89..00000000000
Binary files a/public/emoji/1f935.png and /dev/null differ
diff --git a/public/emoji/1f935.svg b/public/emoji/1f935.svg
index 228b84a0a44..14d2a46ae46 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 d8a695d7035..00000000000
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 42ba4e63395..de4f37f67b4 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 0e17e8c51f3..00000000000
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 039a5766144..b1a535d2fca 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 c3ee4d1dfae..00000000000
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 a28a074bba6..f99d06457c0 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 68a556da2fe..00000000000
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 bac1e4678a6..44bbb6b573a 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 ccab3c40ff2..00000000000
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 bd8eb1babde..b972cf0b23b 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 9cf2458df1a..00000000000
Binary files a/public/emoji/1f936.png and /dev/null differ
diff --git a/public/emoji/1f936.svg b/public/emoji/1f936.svg
index c2c0e9862eb..aad36267b07 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 00000000000..3fb8aa608ae
--- /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 00000000000..6fa8b486080
--- /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 1c895e64468..00000000000
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 e654bcd6a74..3fb8aa608ae 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 00000000000..df88b238b4b
--- /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 00000000000..9690008e39a
--- /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 4e3ca8f8bac..00000000000
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 8686bdf2bd3..df88b238b4b 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 00000000000..38047209f52
--- /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 00000000000..7a7807e03bf
--- /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 d1b16a19bb5..00000000000
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 ee50fbbd747..38047209f52 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 00000000000..d7c4702e3e2
--- /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 00000000000..8f2eb7f48fc
--- /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 5fbef3f2255..00000000000
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 4a7bc965e38..d7c4702e3e2 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 00000000000..769929c569f
--- /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 00000000000..7384bbb3203
--- /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 4af2e28bc5c..00000000000
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 25bfd9ef717..769929c569f 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 00000000000..4277e9ddb4f
--- /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 00000000000..d202027282f
--- /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 76e63bfac77..00000000000
Binary files a/public/emoji/1f937.png and /dev/null differ
diff --git a/public/emoji/1f937.svg b/public/emoji/1f937.svg
index c2ab59fe017..4277e9ddb4f 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 00000000000..11c961dfdec
--- /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 00000000000..beb1698b000
--- /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 db6d65895fb..00000000000
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 41bb168869a..11c961dfdec 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 00000000000..5e568ea2511
--- /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 00000000000..136338d4abd
--- /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 e00ffbc27a8..00000000000
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 17ccde4bb5f..5e568ea2511 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 00000000000..86abb59e3c8
--- /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 00000000000..e580c1f446a
--- /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 49321be391f..00000000000
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 e76db7a6ea2..86abb59e3c8 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 00000000000..06c5f27ce36
--- /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 00000000000..ee81b8e943c
--- /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 d4562b5e3dd..00000000000
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 83a3dd3bd78..06c5f27ce36 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 00000000000..492866a6d9e
--- /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 00000000000..3846f7e8146
--- /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 6e09a870767..00000000000
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 347df3bc0ea..492866a6d9e 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 00000000000..d4108d7067b
--- /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 00000000000..1335d4f0a4e
--- /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 cbcaa578253..00000000000
Binary files a/public/emoji/1f938.png and /dev/null differ
diff --git a/public/emoji/1f938.svg b/public/emoji/1f938.svg
index d3c2a1ad834..d4108d7067b 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 00000000000..ecbe04f58d4
--- /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 00000000000..cc2e8f3dcc6
--- /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 c18eda40031..00000000000
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 db37b39a0b1..cc2e8f3dcc6 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 00000000000..54b97ed10f2
--- /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 00000000000..883eb1cde95
--- /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 de3b7a555b6..00000000000
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 bb834f73f8d..883eb1cde95 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 00000000000..b49b5d176b0
--- /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 00000000000..1675762c870
--- /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 74ab6d85458..00000000000
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 8c2b703d85d..1675762c870 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 00000000000..9fa47f6ed3f
--- /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 00000000000..fa0ea01556c
--- /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 1c57823203f..00000000000
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 fcf09920858..fa0ea01556c 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 00000000000..e2128cc2e11
--- /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 00000000000..ec09828104b
--- /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 c343d6ee98a..00000000000
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 b1d6168a075..ec09828104b 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 00000000000..c2f071c5bea
--- /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 00000000000..532cd15cf61
--- /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 a37f6224a42..00000000000
Binary files a/public/emoji/1f939.png and /dev/null differ
diff --git a/public/emoji/1f939.svg b/public/emoji/1f939.svg
index 3859ff275fa..532cd15cf61 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 5288c920eb9..00000000000
Binary files a/public/emoji/1f93a.png and /dev/null differ
diff --git a/public/emoji/1f93a.svg b/public/emoji/1f93a.svg
index f566e0605ce..663bae152a9 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 379070fd03b..00000000000
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 107ff2667e2..00000000000
--- 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 6863ea9209d..00000000000
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 e417df2d856..00000000000
--- 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 b7e62910127..00000000000
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 5b897f9dbb6..00000000000
--- 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 750f9589233..00000000000
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 7f342502175..00000000000
--- 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 36ab9bb3f42..00000000000
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 a4e5ecc507e..00000000000
--- 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 00000000000..2380abf71e5
--- /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 00000000000..d568b453c0d
--- /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 71e67cfad85..00000000000
Binary files a/public/emoji/1f93c.png and /dev/null differ
diff --git a/public/emoji/1f93c.svg b/public/emoji/1f93c.svg
index 694ce766243..d568b453c0d 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 00000000000..c725abbce32
--- /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 00000000000..a7515d5dbcd
--- /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 bed1a908d6a..00000000000
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 ab8d140df03..a7515d5dbcd 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 00000000000..80bc3501b1a
--- /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 00000000000..b304277916a
--- /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 ec5a43b4d4a..00000000000
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 85395e007b4..b304277916a 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 00000000000..cf169c961be
--- /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 00000000000..2e55ad5707b
--- /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 b081a4a5a96..00000000000
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 3977b737737..2e55ad5707b 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 00000000000..605d328d9b4
--- /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 00000000000..5459f0f98b6
--- /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 82cfbc3b0c7..00000000000
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 d25f2bfb0c9..5459f0f98b6 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 00000000000..c01fa423bdb
--- /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 00000000000..c84f230dce1
--- /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 bd3366eb06c..00000000000
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 16cd1bbe494..c84f230dce1 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 00000000000..4f22a638fcc
--- /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 00000000000..1cbe1e8e384
--- /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 cb44576780d..00000000000
Binary files a/public/emoji/1f93d.png and /dev/null differ
diff --git a/public/emoji/1f93d.svg b/public/emoji/1f93d.svg
index 1ba0ab89ed1..1cbe1e8e384 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 00000000000..cc9a5e83775
--- /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 00000000000..b7f07e45f9c
--- /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 c26cac2df98..00000000000
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 58ad79fadd3..cc9a5e83775 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 00000000000..8c0d7576f3a
--- /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 00000000000..2d25b7a5bd7
--- /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 7baaf95a9a2..00000000000
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 fb609bac76f..8c0d7576f3a 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 00000000000..1aa9f7d2d24
--- /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 00000000000..e270a92f945
--- /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 0e3a37c3d40..00000000000
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 facf15d7799..1aa9f7d2d24 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 00000000000..0d46f89068e
--- /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 00000000000..5e0c9714057
--- /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 e1233f38266..00000000000
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 2b3023fce5d..0d46f89068e 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 00000000000..34be64b0161
--- /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 00000000000..a868dcc3199
--- /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 6b1eb9b64b0..00000000000
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 65220a53948..34be64b0161 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 00000000000..817bb49f597
--- /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 00000000000..4dfcc53762b
--- /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 1152f1344c7..00000000000
Binary files a/public/emoji/1f93e.png and /dev/null differ
diff --git a/public/emoji/1f93e.svg b/public/emoji/1f93e.svg
index d3a20ac8a20..817bb49f597 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 62412b143ae..00000000000
Binary files a/public/emoji/1f940.png and /dev/null differ
diff --git a/public/emoji/1f940.svg b/public/emoji/1f940.svg
index dda76b81bcd..08d5986def0 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 b038727cc99..00000000000
Binary files a/public/emoji/1f941.png and /dev/null differ
diff --git a/public/emoji/1f941.svg b/public/emoji/1f941.svg
index 3a07224db34..7a7027b7e3e 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 31937ae9392..00000000000
Binary files a/public/emoji/1f942.png and /dev/null differ
diff --git a/public/emoji/1f942.svg b/public/emoji/1f942.svg
index 41384a1ac31..1540a6b852f 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 7bf09229879..00000000000
Binary files a/public/emoji/1f943.png and /dev/null differ
diff --git a/public/emoji/1f943.svg b/public/emoji/1f943.svg
index 025cd0b8a33..dc49c48728d 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 3c4da766aee..00000000000
Binary files a/public/emoji/1f944.png and /dev/null differ
diff --git a/public/emoji/1f944.svg b/public/emoji/1f944.svg
index f69528ca7a4..d17ec31ca4f 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 df3a53da0fb..00000000000
Binary files a/public/emoji/1f945.png and /dev/null differ
diff --git a/public/emoji/1f945.svg b/public/emoji/1f945.svg
index 181c8522440..6e1648f3085 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 15612b66492..00000000000
Binary files a/public/emoji/1f947.png and /dev/null differ
diff --git a/public/emoji/1f947.svg b/public/emoji/1f947.svg
index abb7620a09f..6403a347123 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 17b011268b6..00000000000
Binary files a/public/emoji/1f948.png and /dev/null differ
diff --git a/public/emoji/1f948.svg b/public/emoji/1f948.svg
index 2da21e1386c..75283797e1c 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 636e04a5950..00000000000
Binary files a/public/emoji/1f949.png and /dev/null differ
diff --git a/public/emoji/1f949.svg b/public/emoji/1f949.svg
index 1322b555feb..d3f5f03f8b8 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 9838f24e51a..00000000000
Binary files a/public/emoji/1f94a.png and /dev/null differ
diff --git a/public/emoji/1f94a.svg b/public/emoji/1f94a.svg
index 752af12e30a..9821f08b972 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 8d6114761f6..00000000000
Binary files a/public/emoji/1f94b.png and /dev/null differ
diff --git a/public/emoji/1f94b.svg b/public/emoji/1f94b.svg
index 44fc92b840d..f4c48eaf79a 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 00000000000..1d4067c6af8
--- /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 fb33feb1a38..00000000000
Binary files a/public/emoji/1f950.png and /dev/null differ
diff --git a/public/emoji/1f950.svg b/public/emoji/1f950.svg
index 184e56c4662..4c325029a1e 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 06f0d124aed..00000000000
Binary files a/public/emoji/1f951.png and /dev/null differ
diff --git a/public/emoji/1f951.svg b/public/emoji/1f951.svg
index b8c26d2a415..093bf6984d5 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 500807059d2..00000000000
Binary files a/public/emoji/1f952.png and /dev/null differ
diff --git a/public/emoji/1f952.svg b/public/emoji/1f952.svg
index d72b1ceba0c..72e66de084f 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 f38a485fbe4..00000000000
Binary files a/public/emoji/1f953.png and /dev/null differ
diff --git a/public/emoji/1f953.svg b/public/emoji/1f953.svg
index d702dc50c45..9617ade964d 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 70350ca2c0a..00000000000
Binary files a/public/emoji/1f954.png and /dev/null differ
diff --git a/public/emoji/1f954.svg b/public/emoji/1f954.svg
index 15d99ff4714..4f3744519e4 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 c68829b58e7..00000000000
Binary files a/public/emoji/1f955.png and /dev/null differ
diff --git a/public/emoji/1f955.svg b/public/emoji/1f955.svg
index 468c7a216b5..cf125d4f119 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 4c2c5639822..00000000000
Binary files a/public/emoji/1f956.png and /dev/null differ
diff --git a/public/emoji/1f956.svg b/public/emoji/1f956.svg
index dc1e86fc379..4e00b5746fc 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 c89f9341158..00000000000
Binary files a/public/emoji/1f957.png and /dev/null differ
diff --git a/public/emoji/1f957.svg b/public/emoji/1f957.svg
index e0a2a01edb3..6368a14b469 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 663a1006acd..00000000000
Binary files a/public/emoji/1f958.png and /dev/null differ
diff --git a/public/emoji/1f958.svg b/public/emoji/1f958.svg
index 2062eae7fba..a90551e1c29 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 a2e10df40a5..00000000000
Binary files a/public/emoji/1f959.png and /dev/null differ
diff --git a/public/emoji/1f959.svg b/public/emoji/1f959.svg
index 8be63ab158f..dcf10698f8b 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 c171974d993..00000000000
Binary files a/public/emoji/1f95a.png and /dev/null differ
diff --git a/public/emoji/1f95a.svg b/public/emoji/1f95a.svg
index 005e3e6af01..292ed7e8ef3 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 e4fcf2e64f3..00000000000
Binary files a/public/emoji/1f95b.png and /dev/null differ
diff --git a/public/emoji/1f95b.svg b/public/emoji/1f95b.svg
index 877c0521c6d..7157c078b88 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 b64fadad010..00000000000
Binary files a/public/emoji/1f95c.png and /dev/null differ
diff --git a/public/emoji/1f95c.svg b/public/emoji/1f95c.svg
index 3866204ec25..3f8f0244fd9 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 dfbd8258074..00000000000
Binary files a/public/emoji/1f95d.png and /dev/null differ
diff --git a/public/emoji/1f95d.svg b/public/emoji/1f95d.svg
index d60d50f87ef..f25a06289ee 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 6223d1a28e9..00000000000
Binary files a/public/emoji/1f95e.png and /dev/null differ
diff --git a/public/emoji/1f95e.svg b/public/emoji/1f95e.svg
index 603a3470d70..1a1769b0c07 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 00000000000..9044b39980e
--- /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 00000000000..bc2052056f7
--- /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 00000000000..81fbe98f579
--- /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 00000000000..fc03175484b
--- /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 00000000000..c5d61ee6c96
--- /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 00000000000..a229dbbcdfb
--- /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 00000000000..d80d0d9f45d
--- /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 00000000000..e0ae9476d27
--- /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 00000000000..e4c0fc39a72
--- /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 00000000000..7aaef3251c7
--- /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 00000000000..3b9d7741d52
--- /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 00000000000..c708089af15
--- /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 00000000000..bef3815b1e8
--- /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 19f3047ab61..00000000000
Binary files a/public/emoji/1f980.png and /dev/null differ
diff --git a/public/emoji/1f980.svg b/public/emoji/1f980.svg
index 1f7936f4a7c..5c98af4a57a 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 5062ab47ecf..00000000000
Binary files a/public/emoji/1f981.png and /dev/null differ
diff --git a/public/emoji/1f981.svg b/public/emoji/1f981.svg
index 965e4ef2102..51707e184af 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 449a6b281c9..00000000000
Binary files a/public/emoji/1f982.png and /dev/null differ
diff --git a/public/emoji/1f982.svg b/public/emoji/1f982.svg
index a1afc315cd6..c6c3fe93ff0 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 344af94c9ec..00000000000
Binary files a/public/emoji/1f983.png and /dev/null differ
diff --git a/public/emoji/1f983.svg b/public/emoji/1f983.svg
index 59cc30fe369..c35118cc4aa 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 05a97969f7e..00000000000
Binary files a/public/emoji/1f984.png and /dev/null differ
diff --git a/public/emoji/1f984.svg b/public/emoji/1f984.svg
index 507937d7a03..a996b386149 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 4f277debeef..00000000000
Binary files a/public/emoji/1f985.png and /dev/null differ
diff --git a/public/emoji/1f985.svg b/public/emoji/1f985.svg
index afba6f983fc..c96b06e7afd 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 74330b77ca3..00000000000
Binary files a/public/emoji/1f986.png and /dev/null differ
diff --git a/public/emoji/1f986.svg b/public/emoji/1f986.svg
index ee80f71d87f..d047b47cb5c 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 3152c047e00..00000000000
Binary files a/public/emoji/1f987.png and /dev/null differ
diff --git a/public/emoji/1f987.svg b/public/emoji/1f987.svg
index 77c26c98423..2a730479268 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 c75076d57d8..00000000000
Binary files a/public/emoji/1f988.png and /dev/null differ
diff --git a/public/emoji/1f988.svg b/public/emoji/1f988.svg
index c1fffcd291f..81409bbc4d1 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 fa6815480c3..00000000000
Binary files a/public/emoji/1f989.png and /dev/null differ
diff --git a/public/emoji/1f989.svg b/public/emoji/1f989.svg
index bde42fe1c93..10a2cbaa254 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 1ab339bf054..00000000000
Binary files a/public/emoji/1f98a.png and /dev/null differ
diff --git a/public/emoji/1f98a.svg b/public/emoji/1f98a.svg
index 28f9072f55d..8603d9180e9 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 5631fe99226..00000000000
Binary files a/public/emoji/1f98b.png and /dev/null differ
diff --git a/public/emoji/1f98b.svg b/public/emoji/1f98b.svg
index 794e94d395c..457b722a524 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 d8698195ff0..00000000000
Binary files a/public/emoji/1f98c.png and /dev/null differ
diff --git a/public/emoji/1f98c.svg b/public/emoji/1f98c.svg
index a70a64169e1..5a753e0d1b1 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 acc51e13622..00000000000
Binary files a/public/emoji/1f98d.png and /dev/null differ
diff --git a/public/emoji/1f98d.svg b/public/emoji/1f98d.svg
index 2c27214fd64..8cf5a02bba2 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 8363876050e..00000000000
Binary files a/public/emoji/1f98e.png and /dev/null differ
diff --git a/public/emoji/1f98e.svg b/public/emoji/1f98e.svg
index 4f15955dbc6..21f1b5d27a7 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 12f4e0d9d9b..00000000000
Binary files a/public/emoji/1f98f.png and /dev/null differ
diff --git a/public/emoji/1f98f.svg b/public/emoji/1f98f.svg
index 7329b384e61..cda2c04d035 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 49eff28a71e..00000000000
Binary files a/public/emoji/1f990.png and /dev/null differ
diff --git a/public/emoji/1f990.svg b/public/emoji/1f990.svg
index 7cf07ad10bc..741d889d718 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 d2af223f0cb..00000000000
Binary files a/public/emoji/1f991.png and /dev/null differ
diff --git a/public/emoji/1f991.svg b/public/emoji/1f991.svg
index c7e876402e6..8ef80f8ff90 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 00000000000..5e43bb4a8eb
--- /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 00000000000..afec3170d60
--- /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 00000000000..52361720cef
--- /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 00000000000..c424c6a2e32
--- /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 00000000000..71bb2c5f9b3
--- /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 00000000000..91ab418c954
--- /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 00e99762286..00000000000
Binary files a/public/emoji/1f9c0.png and /dev/null differ
diff --git a/public/emoji/1f9c0.svg b/public/emoji/1f9c0.svg
index 3cbd8096881..a9ebf6cccc1 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 00000000000..e07680481b8
--- /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 00000000000..915e1417105
--- /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 00000000000..9872b9b8955
--- /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 00000000000..87ad5b5329c
--- /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 00000000000..f63bc5a2a26
--- /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 00000000000..199a8bf4473
--- /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 00000000000..18aae372f5b
--- /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 00000000000..ee17b4cbede
--- /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 00000000000..eb8dc7832bc
--- /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 00000000000..6a202d60e31
--- /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 00000000000..b4cd560c46a
--- /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 00000000000..b805d80a999
--- /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 00000000000..f352b41dda6
--- /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 00000000000..6721beb4ae9
--- /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 00000000000..ba61f7f1624
--- /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 00000000000..78868e3e02a
--- /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 00000000000..472ee9c7bfc
--- /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 00000000000..efaff91a816
--- /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 00000000000..3576010394f
--- /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 00000000000..f4583cc92d5
--- /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 00000000000..0b6de72fdb7
--- /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 00000000000..413b79b825d
--- /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 00000000000..9f6dbcad71d
--- /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 00000000000..7da8277651d
--- /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 00000000000..8dc1733562e
--- /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 00000000000..c41266b7c31
--- /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 00000000000..0ee84dfcfdb
--- /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 00000000000..bc4cac0dc59
--- /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 00000000000..aa5081bae43
--- /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 00000000000..827bfaf9dea
--- /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 00000000000..6ddfb5a4995
--- /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 00000000000..9a65636b362
--- /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 00000000000..5a623944af6
--- /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 00000000000..9a65636b362
--- /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 00000000000..435e88fe985
--- /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 00000000000..d6f1beb07b8
--- /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 00000000000..435e88fe985
--- /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 00000000000..b7392561aa9
--- /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 00000000000..515cb688dde
--- /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 00000000000..b7392561aa9
--- /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 00000000000..6d101a5692d
--- /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 00000000000..e43dde27a82
--- /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 00000000000..6d101a5692d
--- /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 00000000000..205eb574725
--- /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 00000000000..f271c855f66
--- /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 00000000000..205eb574725
--- /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 00000000000..fea6a9391e8
--- /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 00000000000..d9c9c1534bd
--- /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 00000000000..fea6a9391e8
--- /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 00000000000..fca1a442ab5
--- /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 00000000000..144d2f4f525
--- /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 00000000000..144d2f4f525
--- /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 00000000000..570da6962b3
--- /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 00000000000..fd28bf2f421
--- /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 00000000000..fd28bf2f421
--- /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 00000000000..8da25887ccf
--- /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 00000000000..c4a08dab1e8
--- /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 00000000000..c4a08dab1e8
--- /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 00000000000..e0b694853cf
--- /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 00000000000..470762e1f5b
--- /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 00000000000..470762e1f5b
--- /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 00000000000..8856dc16e0e
--- /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 00000000000..4bff5107177
--- /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 00000000000..4bff5107177
--- /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 00000000000..36f14c8ccb7
--- /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 00000000000..95db1647f74
--- /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 00000000000..95db1647f74
--- /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 00000000000..8bd6178dc1b
--- /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 00000000000..6a65728f4c4
--- /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 00000000000..8bd6178dc1b
--- /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 00000000000..25eb489e3ee
--- /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 00000000000..426c5de9536
--- /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 00000000000..25eb489e3ee
--- /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 00000000000..0f015f02dca
--- /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 00000000000..8a15c254547
--- /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 00000000000..0f015f02dca
--- /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 00000000000..71f6a958d5d
--- /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 00000000000..ea2cd80cf1f
--- /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 00000000000..71f6a958d5d
--- /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 00000000000..0fcf4b16b39
--- /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 00000000000..bfbf1da807d
--- /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 00000000000..0fcf4b16b39
--- /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 00000000000..344e7ce05c7
--- /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 00000000000..6e6ffdd6204
--- /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 00000000000..344e7ce05c7
--- /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 00000000000..b0960fa6e1e
--- /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 00000000000..4710995116b
--- /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 00000000000..4710995116b
--- /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 00000000000..111b4d80f89
--- /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 00000000000..d82ff1c2d02
--- /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 00000000000..d82ff1c2d02
--- /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 00000000000..0899b523c6c
--- /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 00000000000..05564a9bff6
--- /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 00000000000..05564a9bff6
--- /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 00000000000..6bfe7c68f84
--- /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 00000000000..9db5339945b
--- /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 00000000000..9db5339945b
--- /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 00000000000..4c4a326d02e
--- /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 00000000000..2967e532fa5
--- /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 00000000000..2967e532fa5
--- /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 00000000000..95b8b5f7b11
--- /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 00000000000..814783e13c5
--- /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 00000000000..814783e13c5
--- /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 00000000000..ca2a9a0218c
--- /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 00000000000..a2a8c0ec327
--- /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 00000000000..ca2a9a0218c
--- /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 00000000000..e7a26571712
--- /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 00000000000..f832ccb7add
--- /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 00000000000..e7a26571712
--- /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 00000000000..1cf49450faf
--- /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 00000000000..11393bdf7ea
--- /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 00000000000..1cf49450faf
--- /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 00000000000..c79b2ff9c5c
--- /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 00000000000..7393eedaa79
--- /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 00000000000..c79b2ff9c5c
--- /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 00000000000..fa73e9e7909
--- /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 00000000000..7b23d046ae3
--- /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 00000000000..fa73e9e7909
--- /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 00000000000..9a0b3b4c501
--- /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 00000000000..3634760fc81
--- /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 00000000000..9a0b3b4c501
--- /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 00000000000..b32bfd5ba4c
--- /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 00000000000..6a2e57e6cb0
--- /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 00000000000..6a2e57e6cb0
--- /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 00000000000..5b45c6a5d6c
--- /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 00000000000..977d0402026
--- /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 00000000000..977d0402026
--- /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 00000000000..f4b3aea671b
--- /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 00000000000..97a93aac063
--- /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 00000000000..97a93aac063
--- /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 00000000000..70aa844e99c
--- /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 00000000000..6afba45ce8d
--- /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 00000000000..6afba45ce8d
--- /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 00000000000..532b32ce166
--- /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 00000000000..30adcd86463
--- /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 00000000000..30adcd86463
--- /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 00000000000..d0aa04d0daf
--- /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 00000000000..9719a1de4f6
--- /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 00000000000..9719a1de4f6
--- /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 00000000000..e237ae29299
--- /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 00000000000..c6d8341d51a
--- /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 00000000000..e237ae29299
--- /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 00000000000..31981688255
--- /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 00000000000..fd1d1b6ddd8
--- /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 00000000000..31981688255
--- /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 00000000000..29ae6e9a266
--- /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 00000000000..c71ebcaf03c
--- /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 00000000000..29ae6e9a266
--- /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 00000000000..4d74cce5c8a
--- /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 00000000000..33a7228537f
--- /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 00000000000..4d74cce5c8a
--- /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 00000000000..abdd82796fb
--- /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 00000000000..51b1d082e27
--- /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 00000000000..abdd82796fb
--- /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 00000000000..ce3976137e3
--- /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 00000000000..2fc5df5240d
--- /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 00000000000..ce3976137e3
--- /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 00000000000..5214ac009ac
--- /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 00000000000..84d9dd8f5c0
--- /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 00000000000..84d9dd8f5c0
--- /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 00000000000..fe418bcac5f
--- /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 00000000000..3399fdde42d
--- /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 00000000000..3399fdde42d
--- /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 00000000000..fc11d24c6f1
--- /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 00000000000..181feba5a73
--- /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 00000000000..181feba5a73
--- /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 00000000000..5c0123f832f
--- /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 00000000000..f7b2c321e4a
--- /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 00000000000..f7b2c321e4a
--- /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 00000000000..9b6f37fb014
--- /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 00000000000..c05267d4b51
--- /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 00000000000..c05267d4b51
--- /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 00000000000..49c6a4ba986
--- /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 00000000000..c9714d2a901
--- /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 00000000000..c9714d2a901
--- /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 00000000000..dfcd6d61c40
--- /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 00000000000..0301523635e
--- /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 00000000000..0301523635e
--- /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 00000000000..deb582f5621
--- /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 00000000000..60e086314ed
--- /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 00000000000..60e086314ed
--- /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 00000000000..df291e74055
--- /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 00000000000..2a35e7788ca
--- /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 00000000000..68e9079ffe6
--- /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 00000000000..09643e41a26
--- /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 00000000000..4f34ac5650e
--- /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 00000000000..778d9dc8737
--- /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 00000000000..a9ccf1e848d
--- /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 58a9c528fca..00000000000
Binary files a/public/emoji/203c.png and /dev/null differ
diff --git a/public/emoji/203c.svg b/public/emoji/203c.svg
index 7d2d0dfd1d3..955e9dc6a4d 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 509813e9bb2..00000000000
Binary files a/public/emoji/2049.png and /dev/null differ
diff --git a/public/emoji/2049.svg b/public/emoji/2049.svg
index b39038bb0ac..457aab8ea49 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 7a0c44a2c2b..00000000000
Binary files a/public/emoji/2122.png and /dev/null differ
diff --git a/public/emoji/2122.svg b/public/emoji/2122.svg
index 321c2026e36..554777689cd 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 871f2db9314..00000000000
Binary files a/public/emoji/2139.png and /dev/null differ
diff --git a/public/emoji/2139.svg b/public/emoji/2139.svg
index 93e13a8aaf7..cc2df8c6959 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 7937f24f2ac..00000000000
Binary files a/public/emoji/2194.png and /dev/null differ
diff --git a/public/emoji/2194.svg b/public/emoji/2194.svg
index 8ffc7d1db76..7f97d90c9ce 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 dfa32b97186..00000000000
Binary files a/public/emoji/2195.png and /dev/null differ
diff --git a/public/emoji/2195.svg b/public/emoji/2195.svg
index 803b79d385b..afe63739c9f 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 f38718fbe34..00000000000
Binary files a/public/emoji/2196.png and /dev/null differ
diff --git a/public/emoji/2196.svg b/public/emoji/2196.svg
index 7049c485f29..9c3ce342cdb 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 c43e12d0f64..00000000000
Binary files a/public/emoji/2197.png and /dev/null differ
diff --git a/public/emoji/2197.svg b/public/emoji/2197.svg
index 73cc6a7e5fa..4982e3790ad 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 7e807da7392..00000000000
Binary files a/public/emoji/2198.png and /dev/null differ
diff --git a/public/emoji/2198.svg b/public/emoji/2198.svg
index 7a5e9677f3f..92a86388449 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 88b37716078..00000000000
Binary files a/public/emoji/2199.png and /dev/null differ
diff --git a/public/emoji/2199.svg b/public/emoji/2199.svg
index 29c9464255e..a0753f6be36 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 ba45c2ad9e9..00000000000
Binary files a/public/emoji/21a9.png and /dev/null differ
diff --git a/public/emoji/21a9.svg b/public/emoji/21a9.svg
index 03a61def71a..b9a5f59915f 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 e7258ad3268..00000000000
Binary files a/public/emoji/21aa.png and /dev/null differ
diff --git a/public/emoji/21aa.svg b/public/emoji/21aa.svg
index fd4773fd23a..d7ecd3656c5 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 00000000000..6ec37502465
--- /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 64819bc6e21..00000000000
Binary files a/public/emoji/231a.png and /dev/null differ
diff --git a/public/emoji/231a.svg b/public/emoji/231a.svg
index 31cbd09c990..21836090115 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 a5db2d1d3f4..00000000000
Binary files a/public/emoji/231b.png and /dev/null differ
diff --git a/public/emoji/231b.svg b/public/emoji/231b.svg
index 18acf0a3ec4..4c001222d60 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 75027cb9af7..00000000000
Binary files a/public/emoji/2328.png and /dev/null differ
diff --git a/public/emoji/2328.svg b/public/emoji/2328.svg
index c282cf73f8b..1004347b07a 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 ec5cfc48973..00000000000
Binary files a/public/emoji/23cf.png and /dev/null differ
diff --git a/public/emoji/23cf.svg b/public/emoji/23cf.svg
index 2229e4437f2..c85f114fa57 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 c406fedfdb1..00000000000
Binary files a/public/emoji/23e9.png and /dev/null differ
diff --git a/public/emoji/23e9.svg b/public/emoji/23e9.svg
index 60d4f822a74..9bbfc6fcbaf 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 e22e2bd3da5..00000000000
Binary files a/public/emoji/23ea.png and /dev/null differ
diff --git a/public/emoji/23ea.svg b/public/emoji/23ea.svg
index 2530af199cc..65c35a904e6 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 13543d5eef2..00000000000
Binary files a/public/emoji/23eb.png and /dev/null differ
diff --git a/public/emoji/23eb.svg b/public/emoji/23eb.svg
index fcc82a94eb1..b045d903524 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 90193bfcb40..00000000000
Binary files a/public/emoji/23ec.png and /dev/null differ
diff --git a/public/emoji/23ec.svg b/public/emoji/23ec.svg
index 17d697dfe86..8c258ce4626 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 f8880d33bab..00000000000
Binary files a/public/emoji/23ed.png and /dev/null differ
diff --git a/public/emoji/23ed.svg b/public/emoji/23ed.svg
index 4202a012d92..179100aa3b0 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 1ffd0566cfc..00000000000
Binary files a/public/emoji/23ee.png and /dev/null differ
diff --git a/public/emoji/23ee.svg b/public/emoji/23ee.svg
index e8d3c4ffe08..7c69b690b8f 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 a9f857139ac..00000000000
Binary files a/public/emoji/23ef.png and /dev/null differ
diff --git a/public/emoji/23ef.svg b/public/emoji/23ef.svg
index 2fc2c46d049..bdf3a2f046a 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 cdbc2fbb950..00000000000
Binary files a/public/emoji/23f0.png and /dev/null differ
diff --git a/public/emoji/23f0.svg b/public/emoji/23f0.svg
index fe986122022..5c9c6c9f77f 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 8fae1c9a898..00000000000
Binary files a/public/emoji/23f1.png and /dev/null differ
diff --git a/public/emoji/23f1.svg b/public/emoji/23f1.svg
index 051d3d5499a..f7bab6c11c1 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 8a3be574c24..00000000000
Binary files a/public/emoji/23f2.png and /dev/null differ
diff --git a/public/emoji/23f2.svg b/public/emoji/23f2.svg
index c8f4446e0a2..d5fd91b47a1 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 b93b15ed6d8..00000000000
Binary files a/public/emoji/23f3.png and /dev/null differ
diff --git a/public/emoji/23f3.svg b/public/emoji/23f3.svg
index 803f932307d..cab22a1f1bd 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 4f07e7ebfd7..00000000000
Binary files a/public/emoji/23f8.png and /dev/null differ
diff --git a/public/emoji/23f8.svg b/public/emoji/23f8.svg
index 3247d55a89a..9e8995e4ce8 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 cfa99988ac2..00000000000
Binary files a/public/emoji/23f9.png and /dev/null differ
diff --git a/public/emoji/23f9.svg b/public/emoji/23f9.svg
index 874ad6dbc2b..608fd561fac 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 ada52830fce..00000000000
Binary files a/public/emoji/23fa.png and /dev/null differ
diff --git a/public/emoji/23fa.svg b/public/emoji/23fa.svg
index 668d6828907..4583b10da86 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 8a3506fc1d7..00000000000
Binary files a/public/emoji/24c2.png and /dev/null differ
diff --git a/public/emoji/24c2.svg b/public/emoji/24c2.svg
index fbbf6f8eedc..bd4ca96a7e4 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 48595d3e1a9..00000000000
Binary files a/public/emoji/25aa.png and /dev/null differ
diff --git a/public/emoji/25aa.svg b/public/emoji/25aa.svg
index 2d0fa0a3947..9d8c004aa76 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 d7ebdb0c0ed..00000000000
Binary files a/public/emoji/25ab.png and /dev/null differ
diff --git a/public/emoji/25ab.svg b/public/emoji/25ab.svg
index ab1ec4d2e38..2da27bef38a 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 4e2b682857c..00000000000
Binary files a/public/emoji/25b6.png and /dev/null differ
diff --git a/public/emoji/25b6.svg b/public/emoji/25b6.svg
index f7ac18377a8..a208b0ec8a7 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 ee38e3b038e..00000000000
Binary files a/public/emoji/25c0.png and /dev/null differ
diff --git a/public/emoji/25c0.svg b/public/emoji/25c0.svg
index d67bffccfbc..99baa87e31c 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 8daacf57059..00000000000
Binary files a/public/emoji/25fb.png and /dev/null differ
diff --git a/public/emoji/25fb.svg b/public/emoji/25fb.svg
index c3dd9d3f2b7..44c97a58fb1 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 05a30a6aa2d..00000000000
Binary files a/public/emoji/25fc.png and /dev/null differ
diff --git a/public/emoji/25fc.svg b/public/emoji/25fc.svg
index bf2f0301614..b3cbc0ab322 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 ae874126750..00000000000
Binary files a/public/emoji/25fd.png and /dev/null differ
diff --git a/public/emoji/25fd.svg b/public/emoji/25fd.svg
index 5f5ab3f58bf..0d86db1716f 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 39765bba610..00000000000
Binary files a/public/emoji/25fe.png and /dev/null differ
diff --git a/public/emoji/25fe.svg b/public/emoji/25fe.svg
index b2a4c8150cb..0224ef0aeea 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 fd521ae31a7..00000000000
Binary files a/public/emoji/2600.png and /dev/null differ
diff --git a/public/emoji/2600.svg b/public/emoji/2600.svg
index aec6212d720..734d6d2341f 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 5b4f57f77ba..00000000000
Binary files a/public/emoji/2601.png and /dev/null differ
diff --git a/public/emoji/2601.svg b/public/emoji/2601.svg
index 3df7fa6e300..76dd8ef5bbd 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 97fe859e74f..00000000000
Binary files a/public/emoji/2602.png and /dev/null differ
diff --git a/public/emoji/2602.svg b/public/emoji/2602.svg
index 2105cf10ab0..6712133473d 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 896f28502af..00000000000
Binary files a/public/emoji/2603.png and /dev/null differ
diff --git a/public/emoji/2603.svg b/public/emoji/2603.svg
index 8bfcae8fe66..0e3ce22606b 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 a99751f79be..00000000000
Binary files a/public/emoji/2604.png and /dev/null differ
diff --git a/public/emoji/2604.svg b/public/emoji/2604.svg
index 7ad1c661d59..3d525c4c554 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 a1e69f566bc..00000000000
Binary files a/public/emoji/260e.png and /dev/null differ
diff --git a/public/emoji/260e.svg b/public/emoji/260e.svg
index 2be32eb0aaf..f71c5595da6 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 284d9573847..00000000000
Binary files a/public/emoji/2611.png and /dev/null differ
diff --git a/public/emoji/2611.svg b/public/emoji/2611.svg
index 42ff8d45545..719f46c1044 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 5b35b7ff6a4..00000000000
Binary files a/public/emoji/2614.png and /dev/null differ
diff --git a/public/emoji/2614.svg b/public/emoji/2614.svg
index 01ad0ed439a..bdeb12e6457 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 553061471b1..00000000000
Binary files a/public/emoji/2615.png and /dev/null differ
diff --git a/public/emoji/2615.svg b/public/emoji/2615.svg
index cd98ff4a235..97426120826 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 f202aecfe6f..00000000000
Binary files a/public/emoji/2618.png and /dev/null differ
diff --git a/public/emoji/2618.svg b/public/emoji/2618.svg
index d9a9acd4711..f4b39ae449e 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 6a9db21d64c..00000000000
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 6a8b95a1044..52bf74379c2 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 15aa9ea0e05..00000000000
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 d43f1a7b3ac..1c188d0e378 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 652b73a9c5d..00000000000
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 c548d5dbb5f..b377f9f81b2 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 692bad926e9..00000000000
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 4b63a6b24f9..324f88f9cb2 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 1e1b10fb71c..00000000000
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 e422854ac67..1522274150f 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 f4978ff0f00..00000000000
Binary files a/public/emoji/261d.png and /dev/null differ
diff --git a/public/emoji/261d.svg b/public/emoji/261d.svg
index 2d47296e536..8d0720ac909 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 b459df9227a..00000000000
Binary files a/public/emoji/2620.png and /dev/null differ
diff --git a/public/emoji/2620.svg b/public/emoji/2620.svg
index c8858de6ef2..6275f091d89 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 3b46199fe37..00000000000
Binary files a/public/emoji/2622.png and /dev/null differ
diff --git a/public/emoji/2622.svg b/public/emoji/2622.svg
index b2068336e16..22fe96a7bfe 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 007b4fc2d85..00000000000
Binary files a/public/emoji/2623.png and /dev/null differ
diff --git a/public/emoji/2623.svg b/public/emoji/2623.svg
index 60a22e51b72..2240cd6d924 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 0530e33a4d4..00000000000
Binary files a/public/emoji/2626.png and /dev/null differ
diff --git a/public/emoji/2626.svg b/public/emoji/2626.svg
index cc62ecdb01b..a1fccfed450 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 e182636457d..00000000000
Binary files a/public/emoji/262a.png and /dev/null differ
diff --git a/public/emoji/262a.svg b/public/emoji/262a.svg
index 87fd9c7040d..478d46894f8 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 86033faf477..00000000000
Binary files a/public/emoji/262e.png and /dev/null differ
diff --git a/public/emoji/262e.svg b/public/emoji/262e.svg
index 01a035a5567..7ff833d39cf 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 f2900f6338f..00000000000
Binary files a/public/emoji/262f.png and /dev/null differ
diff --git a/public/emoji/262f.svg b/public/emoji/262f.svg
index e232b66922f..48aec61aeb1 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 3666db0016b..00000000000
Binary files a/public/emoji/2638.png and /dev/null differ
diff --git a/public/emoji/2638.svg b/public/emoji/2638.svg
index 8c09aa21ad3..c65083aade0 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 6ae71f233b9..00000000000
Binary files a/public/emoji/2639.png and /dev/null differ
diff --git a/public/emoji/2639.svg b/public/emoji/2639.svg
index ead0eb5b3b1..b6f0b04a267 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 e9e53c03d45..00000000000
Binary files a/public/emoji/263a.png and /dev/null differ
diff --git a/public/emoji/263a.svg b/public/emoji/263a.svg
index f8a5cb762d0..2b358e7dc9a 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 00000000000..9605f802340
--- /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 00000000000..2eb7e7fc035
--- /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 21a189d0ede..00000000000
Binary files a/public/emoji/2648.png and /dev/null differ
diff --git a/public/emoji/2648.svg b/public/emoji/2648.svg
index f85279e5735..bc556d9f4f6 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 b2a370df42b..00000000000
Binary files a/public/emoji/2649.png and /dev/null differ
diff --git a/public/emoji/2649.svg b/public/emoji/2649.svg
index a569cb32ba3..eca8d4a547f 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 1a09698cf00..00000000000
Binary files a/public/emoji/264a.png and /dev/null differ
diff --git a/public/emoji/264a.svg b/public/emoji/264a.svg
index f87603f68e4..954e211dcd8 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 a64af07cb5f..00000000000
Binary files a/public/emoji/264b.png and /dev/null differ
diff --git a/public/emoji/264b.svg b/public/emoji/264b.svg
index 703fda7ffe0..f8f82b780f0 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 30158d34de9..00000000000
Binary files a/public/emoji/264c.png and /dev/null differ
diff --git a/public/emoji/264c.svg b/public/emoji/264c.svg
index e5a2ad1c494..8529aac4e86 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 a6b56c2cb5e..00000000000
Binary files a/public/emoji/264d.png and /dev/null differ
diff --git a/public/emoji/264d.svg b/public/emoji/264d.svg
index 24f569cc707..74919add455 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 8fd133a357c..00000000000
Binary files a/public/emoji/264e.png and /dev/null differ
diff --git a/public/emoji/264e.svg b/public/emoji/264e.svg
index a7c8e0a7106..3879b8a685b 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 c31a9920455..00000000000
Binary files a/public/emoji/264f.png and /dev/null differ
diff --git a/public/emoji/264f.svg b/public/emoji/264f.svg
index 78de283a6b7..b8a7bf8d67f 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 f8d94ff2923..00000000000
Binary files a/public/emoji/2650.png and /dev/null differ
diff --git a/public/emoji/2650.svg b/public/emoji/2650.svg
index 0e7fcde6e60..a4d391290b5 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 6293d31d4b1..00000000000
Binary files a/public/emoji/2651.png and /dev/null differ
diff --git a/public/emoji/2651.svg b/public/emoji/2651.svg
index d6320965567..7eabb46aae2 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 641a4f68889..00000000000
Binary files a/public/emoji/2652.png and /dev/null differ
diff --git a/public/emoji/2652.svg b/public/emoji/2652.svg
index 7b262f869dc..8644b787e39 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 7f6f646a95c..00000000000
Binary files a/public/emoji/2653.png and /dev/null differ
diff --git a/public/emoji/2653.svg b/public/emoji/2653.svg
index d50acfc8938..c529897f806 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 f822f184cb0..00000000000
Binary files a/public/emoji/2660.png and /dev/null differ
diff --git a/public/emoji/2660.svg b/public/emoji/2660.svg
index 0d9699bd5f4..687a3c15047 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 4f2abf791ca..00000000000
Binary files a/public/emoji/2663.png and /dev/null differ
diff --git a/public/emoji/2663.svg b/public/emoji/2663.svg
index 2ee52dd62f8..d1afd90e124 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 393c3ed5267..00000000000
Binary files a/public/emoji/2665.png and /dev/null differ
diff --git a/public/emoji/2665.svg b/public/emoji/2665.svg
index 6659eb13c85..a4d85a5123e 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 1f25f51f97a..00000000000
Binary files a/public/emoji/2666.png and /dev/null differ
diff --git a/public/emoji/2666.svg b/public/emoji/2666.svg
index 654b2f4b632..561a85b2f94 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 3d9df2d9475..00000000000
Binary files a/public/emoji/2668.png and /dev/null differ
diff --git a/public/emoji/2668.svg b/public/emoji/2668.svg
index e65cbcb1a0e..8aa2f4b6b66 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 9221f095c37..00000000000
Binary files a/public/emoji/267b.png and /dev/null differ
diff --git a/public/emoji/267b.svg b/public/emoji/267b.svg
index 7d80b6fe73f..118b9a7b977 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 4e5b2698eac..00000000000
Binary files a/public/emoji/267f.png and /dev/null differ
diff --git a/public/emoji/267f.svg b/public/emoji/267f.svg
index 3ee86eb6cad..a082dbd57b2 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 3bee30ec588..00000000000
Binary files a/public/emoji/2692.png and /dev/null differ
diff --git a/public/emoji/2692.svg b/public/emoji/2692.svg
index 10516b7bf53..0bb18a1ab02 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 b036f70a00b..00000000000
Binary files a/public/emoji/2693.png and /dev/null differ
diff --git a/public/emoji/2693.svg b/public/emoji/2693.svg
index b5f5418d10a..752c9d2427a 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 907e9607134..00000000000
Binary files a/public/emoji/2694.png and /dev/null differ
diff --git a/public/emoji/2694.svg b/public/emoji/2694.svg
index 368fdc05415..3fe031fe88d 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 00000000000..636f7ed26b3
--- /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 0757eda1684..00000000000
Binary files a/public/emoji/2696.png and /dev/null differ
diff --git a/public/emoji/2696.svg b/public/emoji/2696.svg
index c8042bbcbc0..77d5349abaf 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 307a7324249..00000000000
Binary files a/public/emoji/2697.png and /dev/null differ
diff --git a/public/emoji/2697.svg b/public/emoji/2697.svg
index 6e63dacb8f7..3e8b73d51dc 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 2a1cc2c0ff4..00000000000
Binary files a/public/emoji/2699.png and /dev/null differ
diff --git a/public/emoji/2699.svg b/public/emoji/2699.svg
index 9230ed01a4a..616e7960f99 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 5f4567aa093..00000000000
Binary files a/public/emoji/269b.png and /dev/null differ
diff --git a/public/emoji/269b.svg b/public/emoji/269b.svg
index 0b02d3cd4cb..67f33674f10 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 c9250d27fa7..00000000000
Binary files a/public/emoji/269c.png and /dev/null differ
diff --git a/public/emoji/269c.svg b/public/emoji/269c.svg
index ce5bad9515f..da380fdb089 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 35691c2ed97..00000000000
Binary files a/public/emoji/26a0.png and /dev/null differ
diff --git a/public/emoji/26a0.svg b/public/emoji/26a0.svg
index e6b14203c28..81952f7d5c9 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 47e68e48e49..00000000000
Binary files a/public/emoji/26a1.png and /dev/null differ
diff --git a/public/emoji/26a1.svg b/public/emoji/26a1.svg
index ac811c568ce..2e816f43755 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 c19e15684dd..00000000000
Binary files a/public/emoji/26aa.png and /dev/null differ
diff --git a/public/emoji/26aa.svg b/public/emoji/26aa.svg
index fb39d3ebbd4..edf7f097934 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 b62b87170e8..00000000000
Binary files a/public/emoji/26ab.png and /dev/null differ
diff --git a/public/emoji/26ab.svg b/public/emoji/26ab.svg
index 137a56b1f5e..c7f93882cbe 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 fb2932aa5f6..00000000000
Binary files a/public/emoji/26b0.png and /dev/null differ
diff --git a/public/emoji/26b0.svg b/public/emoji/26b0.svg
index 8fb8eb11776..fb6a2527600 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 6b5b3503438..00000000000
Binary files a/public/emoji/26b1.png and /dev/null differ
diff --git a/public/emoji/26b1.svg b/public/emoji/26b1.svg
index a752a318320..2bbe1e997ad 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 28cfa218d6d..00000000000
Binary files a/public/emoji/26bd.png and /dev/null differ
diff --git a/public/emoji/26bd.svg b/public/emoji/26bd.svg
index dc2380edd38..5aad1297f3e 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 f8463f1538b..00000000000
Binary files a/public/emoji/26be.png and /dev/null differ
diff --git a/public/emoji/26be.svg b/public/emoji/26be.svg
index efe314bc6ac..6e7f410280a 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 20c177c2aff..00000000000
Binary files a/public/emoji/26c4.png and /dev/null differ
diff --git a/public/emoji/26c4.svg b/public/emoji/26c4.svg
index 3d083f6ce6f..f202eaea4c4 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 a55e59c344c..00000000000
Binary files a/public/emoji/26c5.png and /dev/null differ
diff --git a/public/emoji/26c5.svg b/public/emoji/26c5.svg
index ea9730cc161..d8d053b71ca 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 31a26a1b6ee..00000000000
Binary files a/public/emoji/26c8.png and /dev/null differ
diff --git a/public/emoji/26c8.svg b/public/emoji/26c8.svg
index 03409bb69c2..86e3c01caa5 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 0a780a700da..00000000000
Binary files a/public/emoji/26ce.png and /dev/null differ
diff --git a/public/emoji/26ce.svg b/public/emoji/26ce.svg
index bacb7e3e8af..9fc2d99ce8e 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 6370fe6d791..00000000000
Binary files a/public/emoji/26cf.png and /dev/null differ
diff --git a/public/emoji/26cf.svg b/public/emoji/26cf.svg
index 3c30f7f3c96..5e434df6159 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 7140a676038..00000000000
Binary files a/public/emoji/26d1.png and /dev/null differ
diff --git a/public/emoji/26d1.svg b/public/emoji/26d1.svg
index bcdd92d6836..3ab886e577d 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 57f46139a06..00000000000
Binary files a/public/emoji/26d3.png and /dev/null differ
diff --git a/public/emoji/26d3.svg b/public/emoji/26d3.svg
index a34973b8c2b..636fc4edcc0 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 476800fc5c6..00000000000
Binary files a/public/emoji/26d4.png and /dev/null differ
diff --git a/public/emoji/26d4.svg b/public/emoji/26d4.svg
index 61545291b14..433994c942c 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 5a344975bf3..00000000000
Binary files a/public/emoji/26e9.png and /dev/null differ
diff --git a/public/emoji/26e9.svg b/public/emoji/26e9.svg
index 570b46d8995..28a4e20e441 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 8242fd272b3..00000000000
Binary files a/public/emoji/26ea.png and /dev/null differ
diff --git a/public/emoji/26ea.svg b/public/emoji/26ea.svg
index 6d8236c253a..66daae97314 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 6722ebdd294..00000000000
Binary files a/public/emoji/26f0.png and /dev/null differ
diff --git a/public/emoji/26f0.svg b/public/emoji/26f0.svg
index ae954cfb076..25a3d7608c2 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 220a74f8132..00000000000
Binary files a/public/emoji/26f1.png and /dev/null differ
diff --git a/public/emoji/26f1.svg b/public/emoji/26f1.svg
index 641b4551d0d..582dceb0d1c 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 293f5d91c0f..00000000000
Binary files a/public/emoji/26f2.png and /dev/null differ
diff --git a/public/emoji/26f2.svg b/public/emoji/26f2.svg
index 377ecf84299..b12362cbf68 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 f65a21d8a46..00000000000
Binary files a/public/emoji/26f3.png and /dev/null differ
diff --git a/public/emoji/26f3.svg b/public/emoji/26f3.svg
index cd35a12deba..380db9ad117 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 41816b3ae34..00000000000
Binary files a/public/emoji/26f4.png and /dev/null differ
diff --git a/public/emoji/26f4.svg b/public/emoji/26f4.svg
index 306970ebc32..ecdfb117e7c 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 772ef11da5d..00000000000
Binary files a/public/emoji/26f5.png and /dev/null differ
diff --git a/public/emoji/26f5.svg b/public/emoji/26f5.svg
index e69f924b9d5..7cc9620fdcf 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 00000000000..fb061e61435
--- /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 00000000000..2dd9d8b6a21
--- /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 00000000000..74313649bbb
--- /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 00000000000..665d80d24ce
--- /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 00000000000..125156eca1e
--- /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 2eb3bdce2af..00000000000
Binary files a/public/emoji/26f7.png and /dev/null differ
diff --git a/public/emoji/26f7.svg b/public/emoji/26f7.svg
index a9fb9b84df2..24a5ee2d748 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 8c449b0c039..00000000000
Binary files a/public/emoji/26f8.png and /dev/null differ
diff --git a/public/emoji/26f8.svg b/public/emoji/26f8.svg
index 60adcaf3c61..081c919469e 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 00000000000..aaa5e9b8d36
--- /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 00000000000..e54effa5032
--- /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 cd12c7ab9bf..00000000000
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 480994ca90b..e54effa5032 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 00000000000..dcfff64d7de
--- /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 00000000000..41e49a818d5
--- /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 f892fd596da..00000000000
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 dd18a65d3b8..41e49a818d5 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 00000000000..3c67cdb51ac
--- /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 00000000000..25e93c8b5c2
--- /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 e109997a91a..00000000000
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 0af260864d8..25e93c8b5c2 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 00000000000..79ebd4ebaa3
--- /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 00000000000..07ff374472b
--- /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 3b90b946af4..00000000000
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 b0b9d364205..07ff374472b 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 00000000000..8976d8fd8f1
--- /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 00000000000..1e4c9671761
--- /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 bafed7828a7..00000000000
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 f7ee9300db1..1e4c9671761 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 00000000000..72d0a9b2340
--- /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 00000000000..28bef1b8d5a
--- /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 8ce90c5cad6..00000000000
Binary files a/public/emoji/26f9.png and /dev/null differ
diff --git a/public/emoji/26f9.svg b/public/emoji/26f9.svg
index ad4502b1493..28bef1b8d5a 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 3fddcfc56eb..00000000000
Binary files a/public/emoji/26fa.png and /dev/null differ
diff --git a/public/emoji/26fa.svg b/public/emoji/26fa.svg
index 73bb5136fdb..3fd15c46711 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 05b18794474..00000000000
Binary files a/public/emoji/26fd.png and /dev/null differ
diff --git a/public/emoji/26fd.svg b/public/emoji/26fd.svg
index cfc136ba861..d234f20df13 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 270571c8cdd..00000000000
Binary files a/public/emoji/2702.png and /dev/null differ
diff --git a/public/emoji/2702.svg b/public/emoji/2702.svg
index a5e934da6d1..eb14f2d3449 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 e55f087e544..00000000000
Binary files a/public/emoji/2705.png and /dev/null differ
diff --git a/public/emoji/2705.svg b/public/emoji/2705.svg
index 4f0474ade55..2aba51916b8 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 268d2ac3c8e..00000000000
Binary files a/public/emoji/2708.png and /dev/null differ
diff --git a/public/emoji/2708.svg b/public/emoji/2708.svg
index 92d5f73194c..12fb9b5c37c 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 ec77ac375a4..00000000000
Binary files a/public/emoji/2709.png and /dev/null differ
diff --git a/public/emoji/2709.svg b/public/emoji/2709.svg
index 4337c482eb4..0c37fcb8b53 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 02809e2dd68..00000000000
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 425a770958b..d15ffb84380 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 5de34810383..00000000000
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 64c091bdab8..d3ef8029513 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 0d5240129b1..00000000000
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 ac29bb90cb2..658e9d48ab6 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 a95c0dd634b..00000000000
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 6b2ae91c60a..dec8e82fed4 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 a2f092fd8c7..00000000000
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 ab9f9952ec9..5be8afe5727 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 de33592bf98..00000000000
Binary files a/public/emoji/270a.png and /dev/null differ
diff --git a/public/emoji/270a.svg b/public/emoji/270a.svg
index 7f6e6cee724..de194626511 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 3b752902c07..00000000000
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 5345aea1354..0641793ea93 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 44e2a514c60..00000000000
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 99d1359be75..f0352b8da95 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 5bb62a7528a..00000000000
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 258c678f944..77154d07048 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 c7f8c9ec270..00000000000
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 3b7b55ff50c..6d44c9b38b4 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 c601b58a73e..00000000000
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 b1e851268ac..35e7bb3ec90 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 6b2954315d1..00000000000
Binary files a/public/emoji/270b.png and /dev/null differ
diff --git a/public/emoji/270b.svg b/public/emoji/270b.svg
index 8aca81b82b3..8287246378b 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 6ac54a745f4..00000000000
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 2053e46dc4e..447137caa32 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 6dd9669866d..00000000000
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 7be61714c93..908add91ce5 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 a615e53f02f..00000000000
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 fb5387e1058..1a814abd839 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 33a34bd5a78..00000000000
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 2b8a95d8e6d..a8ee7f0ed5a 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 45ad14b6c9c..00000000000
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 8d41bbcdc42..bcff574adf0 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 70c5516ffee..00000000000
Binary files a/public/emoji/270c.png and /dev/null differ
diff --git a/public/emoji/270c.svg b/public/emoji/270c.svg
index 78682b572ef..0fbd3b5fffd 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 7923d8ebb17..00000000000
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 438ab1a8ad4..4dc08a519fd 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 bcb304e15d2..00000000000
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 3ff16a807c6..fdd4d48c60f 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 fd885fd2d90..00000000000
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 57884c07e5c..d47a6f868b8 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 d065b8c64ab..00000000000
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 089e890d5d9..dd8efc41e05 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 a44b3dd757c..00000000000
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 863dbaae551..f92699de147 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 85639f8ac40..00000000000
Binary files a/public/emoji/270d.png and /dev/null differ
diff --git a/public/emoji/270d.svg b/public/emoji/270d.svg
index 9370c8c3902..b452ab986f2 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 3833d590fa2..00000000000
Binary files a/public/emoji/270f.png and /dev/null differ
diff --git a/public/emoji/270f.svg b/public/emoji/270f.svg
index 55eec77285b..417e2d1f981 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 872d0ae1598..00000000000
Binary files a/public/emoji/2712.png and /dev/null differ
diff --git a/public/emoji/2712.svg b/public/emoji/2712.svg
index 28a3968a725..91b747d93e0 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 03bd695377e..00000000000
Binary files a/public/emoji/2714.png and /dev/null differ
diff --git a/public/emoji/2714.svg b/public/emoji/2714.svg
index 20a08261830..6208932b40d 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 e47cc1b685d..00000000000
Binary files a/public/emoji/2716.png and /dev/null differ
diff --git a/public/emoji/2716.svg b/public/emoji/2716.svg
index 1117a759586..be81d594f9a 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 42b10e82257..00000000000
Binary files a/public/emoji/271d.png and /dev/null differ
diff --git a/public/emoji/271d.svg b/public/emoji/271d.svg
index 850e144406a..dd13a3b9903 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 fc59d0dde24..00000000000
Binary files a/public/emoji/2721.png and /dev/null differ
diff --git a/public/emoji/2721.svg b/public/emoji/2721.svg
index 073f6042919..6d83966e9a2 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 169bc10b023..00000000000
Binary files a/public/emoji/2728.png and /dev/null differ
diff --git a/public/emoji/2728.svg b/public/emoji/2728.svg
index 37c088090c5..3e5591e0401 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 3307ffa62ee..00000000000
Binary files a/public/emoji/2733.png and /dev/null differ
diff --git a/public/emoji/2733.svg b/public/emoji/2733.svg
index fc0a0d5cc0a..2b133c2b5c5 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 820179bda50..00000000000
Binary files a/public/emoji/2734.png and /dev/null differ
diff --git a/public/emoji/2734.svg b/public/emoji/2734.svg
index c8f50edc768..9f1cefd96b8 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 db319a77ec6..00000000000
Binary files a/public/emoji/2744.png and /dev/null differ
diff --git a/public/emoji/2744.svg b/public/emoji/2744.svg
index 145818394d1..26d6d72ad0a 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 6aa7b6ec9cf..00000000000
Binary files a/public/emoji/2747.png and /dev/null differ
diff --git a/public/emoji/2747.svg b/public/emoji/2747.svg
index 9c179d6ea31..812425abc9a 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 9f9ed0f7ad2..00000000000
Binary files a/public/emoji/274c.png and /dev/null differ
diff --git a/public/emoji/274c.svg b/public/emoji/274c.svg
index 5f60701d2ac..5aa21e8fd41 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 dae487f1f98..00000000000
Binary files a/public/emoji/274e.png and /dev/null differ
diff --git a/public/emoji/274e.svg b/public/emoji/274e.svg
index b65d3ec9e9e..c74d9f134ab 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 5a58f3458aa..00000000000
Binary files a/public/emoji/2753.png and /dev/null differ
diff --git a/public/emoji/2753.svg b/public/emoji/2753.svg
index d4b28c81cbb..9d78e0a4330 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 6e7824c75f6..00000000000
Binary files a/public/emoji/2754.png and /dev/null differ
diff --git a/public/emoji/2754.svg b/public/emoji/2754.svg
index d04a83c3117..14f5a843081 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 9b64da8bf7f..00000000000
Binary files a/public/emoji/2755.png and /dev/null differ
diff --git a/public/emoji/2755.svg b/public/emoji/2755.svg
index 714e2103fff..9cb804adc53 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 2c14406422f..00000000000
Binary files a/public/emoji/2757.png and /dev/null differ
diff --git a/public/emoji/2757.svg b/public/emoji/2757.svg
index d064e7e1255..963356add28 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 91b520be40b..00000000000
Binary files a/public/emoji/2763.png and /dev/null differ
diff --git a/public/emoji/2763.svg b/public/emoji/2763.svg
index df6ebedfb17..e22110bb0c4 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 638cb72dc4e..00000000000
Binary files a/public/emoji/2764.png and /dev/null differ
diff --git a/public/emoji/2764.svg b/public/emoji/2764.svg
index 12c6742e251..6dc97e26cef 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 40799798aaf..00000000000
Binary files a/public/emoji/2795.png and /dev/null differ
diff --git a/public/emoji/2795.svg b/public/emoji/2795.svg
index c572fec5c02..cc6c5426831 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 054211caf12..00000000000
Binary files a/public/emoji/2796.png and /dev/null differ
diff --git a/public/emoji/2796.svg b/public/emoji/2796.svg
index 844614dd607..fb069dfe142 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 df32ab21bea..00000000000
Binary files a/public/emoji/2797.png and /dev/null differ
diff --git a/public/emoji/2797.svg b/public/emoji/2797.svg
index 8b3945c9c57..0bf64b5070b 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 4755670b5cc..00000000000
Binary files a/public/emoji/27a1.png and /dev/null differ
diff --git a/public/emoji/27a1.svg b/public/emoji/27a1.svg
index 125d7d47f5c..6eca5745434 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 440aa56d50e..00000000000
Binary files a/public/emoji/27b0.png and /dev/null differ
diff --git a/public/emoji/27b0.svg b/public/emoji/27b0.svg
index 5bf1eac01a2..f1c056454f2 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 0b82c8fe315..00000000000
Binary files a/public/emoji/27bf.png and /dev/null differ
diff --git a/public/emoji/27bf.svg b/public/emoji/27bf.svg
index 83d211d28bd..351493bb8f2 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 f29bfcfc0de..00000000000
Binary files a/public/emoji/2934.png and /dev/null differ
diff --git a/public/emoji/2934.svg b/public/emoji/2934.svg
index 2d7a211d1ff..d40c2725289 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 2d9d24bca80..00000000000
Binary files a/public/emoji/2935.png and /dev/null differ
diff --git a/public/emoji/2935.svg b/public/emoji/2935.svg
index 00a8a92ab38..1db0a9cb24a 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 00000000000..e3ace720226
--- /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 8c685e0a81b..00000000000
Binary files a/public/emoji/2b05.png and /dev/null differ
diff --git a/public/emoji/2b05.svg b/public/emoji/2b05.svg
index 9583aec7fca..b56d8fd84ba 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 af8218a87f7..00000000000
Binary files a/public/emoji/2b06.png and /dev/null differ
diff --git a/public/emoji/2b06.svg b/public/emoji/2b06.svg
index efa332284ab..f54dcb999ef 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 b8eefd0b19f..00000000000
Binary files a/public/emoji/2b07.png and /dev/null differ
diff --git a/public/emoji/2b07.svg b/public/emoji/2b07.svg
index bbd2213f8c4..623ea5074fa 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 162f2bb4290..00000000000
Binary files a/public/emoji/2b1b.png and /dev/null differ
diff --git a/public/emoji/2b1b.svg b/public/emoji/2b1b.svg
index b908105f3f1..75820ed0e27 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 6f06c1c79de..00000000000
Binary files a/public/emoji/2b1c.png and /dev/null differ
diff --git a/public/emoji/2b1c.svg b/public/emoji/2b1c.svg
index a58c77bd042..e9ce9710b9c 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 c930947076e..00000000000
Binary files a/public/emoji/2b50.png and /dev/null differ
diff --git a/public/emoji/2b50.svg b/public/emoji/2b50.svg
index 487bf321c6c..d2bc202e99c 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 3fe75ce4675..00000000000
Binary files a/public/emoji/2b55.png and /dev/null differ
diff --git a/public/emoji/2b55.svg b/public/emoji/2b55.svg
index 46265062f13..056ad641a9a 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 00000000000..6b9454e667e
--- /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 001c8d6e47d..00000000000
Binary files a/public/emoji/3030.png and /dev/null differ
diff --git a/public/emoji/3030.svg b/public/emoji/3030.svg
index ce6c0059940..85addce1895 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 70453d41528..00000000000
Binary files a/public/emoji/303d.png and /dev/null differ
diff --git a/public/emoji/303d.svg b/public/emoji/303d.svg
index 3b7e1508aa4..8a8b08c0e8f 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 00000000000..d56800d4a81
--- /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 00000000000..546488da1f7
--- /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 ba8c89d95ee..00000000000
Binary files a/public/emoji/3297.png and /dev/null differ
diff --git a/public/emoji/3297.svg b/public/emoji/3297.svg
index c57b1ab8a4b..b525207fbbc 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 5fd72608e60..00000000000
Binary files a/public/emoji/3299.png and /dev/null differ
diff --git a/public/emoji/3299.svg b/public/emoji/3299.svg
index 3e750322ec2..ffe9e7757a9 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 00000000000..9d70003df39
--- /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 00000000000..5fdef5829c3
--- /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 00000000000..2afa988d6f1
--- /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 00000000000..153c581d606
--- /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 00000000000..abbb8d654b9
--- /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 00000000000..11e71765036
--- /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 00000000000..c82bb1a1b91
--- /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 00000000000..a56a396950b
--- /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 00000000000..012e11635e9
--- /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 00000000000..7c28b8f06a1
--- /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 00000000000..e9a3f23f861
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 00000000000..ad19c4e1058
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 0abddad3e8a..00000000000
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 a9073b197ab..431fc219414 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 00000000000..9f3522812b7
--- /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 6bad3f05d8e..baa22d7e486 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 2a029230d7f..aba7cd4588d 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 2e170da2409..79005c9deca 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 d6d36c1b2f6..7417ff672fb 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 6edf7672f7b..00000000000
--- 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 a5af730efe9..00000000000
--- 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 e165b4519fc..6e73c925149 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 1a9520f04a6..cdd49915058 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 dea8abc6559..0d16652169d 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 04931ccfba0..00000000000
--- 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 b2480a53b38..00e6f09dc44 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 00000000000..31195bae213
--- /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 6c783023192..5427a2929ee 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 12efcae6173..9cb71d715db 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 249b12470e6..c1cc22523c3 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 d74eb41a2c5..6ea4d83da3c 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 b1e9ac567be..f5c9adfb54a 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 bd2ab3d53e3..c69ff780471 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 2ab1f32ca23..5bf2c74a910 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 1e23780316e..ceb39e5e6ea 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 2e06345b367..bf49dd2c948 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 8b34bdb6b65..b60015928bc 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 def4981e728..ca7a6b77e8f 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 29040431e52..021e7678269 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 5c22e7fa8e3..5844850795f 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 3e80c8b3083..017073fa112 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 c1c27a615c4..640d06a102e 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"