From 1adb4fcbe02dede9b9c2ce3466818345941b0a5e Mon Sep 17 00:00:00 2001 From: Keith Smith Date: Sun, 16 Aug 2026 10:38:09 -0600 Subject: [PATCH] Add markdown :name: emoji shortcode support in messages (#27) Typing a complete :joy:/:wink:/etc. shortcode now renders as the emoji, matching Slack/GitHub/Discord. Render-time only, alongside the existing preserveLineBreaks preprocessing step -- stored/sent content keeps the raw :name: text, same as markdown itself is never converted until display. Fenced code blocks and inline code spans are skipped so pasted code (a Ruby symbol, a dict key) isn't silently mangled. frontend/src/lib/emojiShortcodes.ts is generated once from emojibase-data's GitHub shortcode set (same one-time-generator approach as #19's emojiNames.ts, never a runtime dependency) -- 928 of the app's 936 emoji matched, 956 aliases, no collisions. Co-Authored-By: Claude Sonnet 5 --- frontend/src/components/MessageContent.tsx | 35 +- frontend/src/lib/emojiShortcodes.ts | 967 +++++++++++++++++++++ 2 files changed, 1001 insertions(+), 1 deletion(-) create mode 100644 frontend/src/lib/emojiShortcodes.ts diff --git a/frontend/src/components/MessageContent.tsx b/frontend/src/components/MessageContent.tsx index 939e19c..28aee27 100644 --- a/frontend/src/components/MessageContent.tsx +++ b/frontend/src/components/MessageContent.tsx @@ -1,4 +1,5 @@ import Markdown from 'markdown-to-jsx' +import { EMOJI_SHORTCODES } from '../lib/emojiShortcodes' interface MessageContentProps { content: string @@ -23,6 +24,38 @@ function MarkdownImageLink({ src, alt, title }: MarkdownImageLinkProps) { ) } +const SHORTCODE_PATTERN = /:([a-z0-9_+-]+):/g + +// Converts a complete `:name:` shortcode to its emoji, skipping fenced code +// blocks and inline code spans -- someone pasting code containing +// `:something:` (a Ruby symbol, a dict key) shouldn't get it silently +// turned into an emoji. This is render-time only: stored/sent content +// always keeps the literal `:name:` text, matching how markdown itself is +// never converted until display. +function convertShortcodes(text: string): string { + const lines = text.split('\n') + let inFence = false + return lines + .map((line) => { + if (/^\s*```/.test(line)) { + inFence = !inFence + return line + } + if (inFence) return line + // Splitting on backtick-delimited spans keeps inline code (`:foo:`) + // untouched -- odd-indexed segments are the code spans themselves. + return line + .split(/(`+[^`]*`+)/g) + .map((part, i) => + i % 2 === 0 + ? part.replace(SHORTCODE_PATTERN, (match, name) => EMOJI_SHORTCODES[name] ?? match) + : part, + ) + .join('') + }) + .join('\n') +} + // CommonMark treats a single newline as a soft break (rendered as a space), // not a visible line break -- only a trailing double-space or blank line // produces one. The Composer's Shift+Enter has always inserted a plain @@ -60,5 +93,5 @@ export const MARKDOWN_OPTIONS = { } export function MessageContent({ content }: MessageContentProps) { - return {preserveLineBreaks(content)} + return {preserveLineBreaks(convertShortcodes(content))} } diff --git a/frontend/src/lib/emojiShortcodes.ts b/frontend/src/lib/emojiShortcodes.ts new file mode 100644 index 0000000..7a7ec04 --- /dev/null +++ b/frontend/src/lib/emojiShortcodes.ts @@ -0,0 +1,967 @@ +// Shortcode -> emoji lookup for :name: conversion in chat messages, +// generated once from emojibase-data (MIT licensed, +// https://github.com/milesj/emojibase -- en/shortcodes/github.json), matched +// against the emoji actually used in emoji.ts. Not a runtime dependency: +// emojibase-data was only ever a dev-time tool to produce this static +// lookup, never added to package.json. Uses GitHub's shortcode set (the +// most broadly recognized convention) rather than Slack/CLDR/JoyPixels +// variants. If emoji.ts ever adds a new entry, this needs regenerating to +// match. +export const EMOJI_SHORTCODES: Record = { + '+1': '๐Ÿ‘', + '-1': '๐Ÿ‘Ž', + '100': '๐Ÿ’ฏ', + '1234': '๐Ÿ”ข', + '1st_place_medal': '๐Ÿฅ‡', + '2nd_place_medal': '๐Ÿฅˆ', + '3rd_place_medal': '๐Ÿฅ‰', + '8ball': '๐ŸŽฑ', + 'a': '๐Ÿ…ฐ๏ธ', + 'ab': '๐Ÿ†Ž', + 'abc': '๐Ÿ”ค', + 'adhesive_bandage': '๐Ÿฉน', + 'adult': '๐Ÿง‘', + 'airplane': 'โœˆ๏ธ', + 'alarm_clock': 'โฐ', + 'alembic': 'โš—๏ธ', + 'alien': '๐Ÿ‘ฝ', + 'ambulance': '๐Ÿš‘', + 'anatomical_heart': '๐Ÿซ€', + 'anchor': 'โš“', + 'anger': '๐Ÿ’ข', + 'angry': '๐Ÿ˜ ', + 'anguished': '๐Ÿ˜ง', + 'ant': '๐Ÿœ', + 'apple': '๐ŸŽ', + 'art': '๐ŸŽจ', + 'astonished': '๐Ÿ˜ฒ', + 'australia': '๐Ÿ‡ฆ๐Ÿ‡บ', + 'avocado': '๐Ÿฅ‘', + 'axe': '๐Ÿช“', + 'b': '๐Ÿ…ฑ๏ธ', + 'baby': '๐Ÿ‘ถ', + 'baby_bottle': '๐Ÿผ', + 'baby_chick': '๐Ÿค', + 'bacon': '๐Ÿฅ“', + 'badger': '๐Ÿฆก', + 'badminton': '๐Ÿธ', + 'bagel': '๐Ÿฅฏ', + 'baguette_bread': '๐Ÿฅ–', + 'balance_scale': 'โš–๏ธ', + 'balloon': '๐ŸŽˆ', + 'ballot_box_with_check': 'โ˜‘๏ธ', + 'bamboo': '๐ŸŽ', + 'banana': '๐ŸŒ', + 'bangbang': 'โ€ผ๏ธ', + 'bank': '๐Ÿฆ', + 'baseball': 'โšพ', + 'basket': '๐Ÿงบ', + 'basketball': '๐Ÿ€', + 'bat': '๐Ÿฆ‡', + 'bathtub': '๐Ÿ›', + 'battery': '๐Ÿ”‹', + 'beach_umbrella': '๐Ÿ–๏ธ', + 'bear': '๐Ÿป', + 'bed': '๐Ÿ›๏ธ', + 'bee': '๐Ÿ', + 'beer': '๐Ÿบ', + 'beers': '๐Ÿป', + 'beginner': '๐Ÿ”ฐ', + 'bell': '๐Ÿ””', + 'bell_pepper': '๐Ÿซ‘', + 'bellhop_bell': '๐Ÿ›Ž๏ธ', + 'bento': '๐Ÿฑ', + 'beverage_box': '๐Ÿงƒ', + 'bicyclist': '๐Ÿšด', + 'bike': '๐Ÿšฒ', + 'biohazard': 'โ˜ฃ๏ธ', + 'bird': '๐Ÿฆ', + 'birthday': '๐ŸŽ‚', + 'black_circle': 'โšซ', + 'black_flag': '๐Ÿด', + 'black_heart': '๐Ÿ–ค', + 'black_joker': '๐Ÿƒ', + 'black_large_square': 'โฌ›', + 'black_medium_square': 'โ—ผ๏ธ', + 'blond_haired_person': '๐Ÿ‘ฑ', + 'blossom': '๐ŸŒผ', + 'blowfish': '๐Ÿก', + 'blue_book': '๐Ÿ“˜', + 'blue_car': '๐Ÿš™', + 'blue_heart': '๐Ÿ’™', + 'blue_square': '๐ŸŸฆ', + 'blueberries': '๐Ÿซ', + 'blush': '๐Ÿ˜Š', + 'boar': '๐Ÿ—', + 'boat': 'โ›ต', + 'bomb': '๐Ÿ’ฃ', + 'bone': '๐Ÿฆด', + 'book': '๐Ÿ“–', + 'bookmark': '๐Ÿ”–', + 'books': '๐Ÿ“š', + 'boom': '๐Ÿ’ฅ', + 'bouncing_ball_person': 'โ›น๏ธ', + 'bouquet': '๐Ÿ’', + 'bow': '๐Ÿ™‡', + 'bow_and_arrow': '๐Ÿน', + 'bowl_with_spoon': '๐Ÿฅฃ', + 'bowling': '๐ŸŽณ', + 'boxing_glove': '๐ŸฅŠ', + 'boy': '๐Ÿ‘ฆ', + 'brain': '๐Ÿง ', + 'brazil': '๐Ÿ‡ง๐Ÿ‡ท', + 'bread': '๐Ÿž', + 'bricks': '๐Ÿงฑ', + 'bridge_at_night': '๐ŸŒ‰', + 'broccoli': '๐Ÿฅฆ', + 'broken_heart': '๐Ÿ’”', + 'broom': '๐Ÿงน', + 'brown_circle': '๐ŸŸค', + 'brown_heart': '๐ŸคŽ', + 'brown_square': '๐ŸŸซ', + 'bubble_tea': '๐Ÿง‹', + 'bucket': '๐Ÿชฃ', + 'bug': '๐Ÿ›', + 'building_construction': '๐Ÿ—๏ธ', + 'bulb': '๐Ÿ’ก', + 'burrito': '๐ŸŒฏ', + 'bus': '๐ŸšŒ', + 'bust_in_silhouette': '๐Ÿ‘ค', + 'busts_in_silhouette': '๐Ÿ‘ฅ', + 'butter': '๐Ÿงˆ', + 'butterfly': '๐Ÿฆ‹', + 'cactus': '๐ŸŒต', + 'cake': '๐Ÿฐ', + 'calendar': '๐Ÿ“†', + 'call_me_hand': '๐Ÿค™', + 'camel': '๐Ÿซ', + 'camera': '๐Ÿ“ท', + 'camera_flash': '๐Ÿ“ธ', + 'camping': '๐Ÿ•๏ธ', + 'canada': '๐Ÿ‡จ๐Ÿ‡ฆ', + 'candle': '๐Ÿ•ฏ๏ธ', + 'candy': '๐Ÿฌ', + 'canned_food': '๐Ÿฅซ', + 'canoe': '๐Ÿ›ถ', + 'car': '๐Ÿš—', + 'card_file_box': '๐Ÿ—ƒ๏ธ', + 'card_index': '๐Ÿ“‡', + 'carousel_horse': '๐ŸŽ ', + 'carrot': '๐Ÿฅ•', + 'cartwheeling': '๐Ÿคธ', + 'cat': '๐Ÿฑ', + 'cat2': '๐Ÿˆ', + 'cd': '๐Ÿ’ฟ', + 'chains': 'โ›“๏ธ', + 'chair': '๐Ÿช‘', + 'champagne': '๐Ÿพ', + 'checkered_flag': '๐Ÿ', + 'cheese': '๐Ÿง€', + 'cherries': '๐Ÿ’', + 'cherry_blossom': '๐ŸŒธ', + 'chess_pawn': 'โ™Ÿ๏ธ', + 'chestnut': '๐ŸŒฐ', + 'chicken': '๐Ÿ”', + 'child': '๐Ÿง’', + 'chipmunk': '๐Ÿฟ๏ธ', + 'chocolate_bar': '๐Ÿซ', + 'chopsticks': '๐Ÿฅข', + 'christmas_tree': '๐ŸŽ„', + 'church': 'โ›ช', + 'circus_tent': '๐ŸŽช', + 'city_sunrise': '๐ŸŒ‡', + 'city_sunset': '๐ŸŒ†', + 'cityscape': '๐Ÿ™๏ธ', + 'clap': '๐Ÿ‘', + 'clapper': '๐ŸŽฌ', + 'classical_building': '๐Ÿ›๏ธ', + 'climbing': '๐Ÿง—', + 'clinking_glasses': '๐Ÿฅ‚', + 'clipboard': '๐Ÿ“‹', + 'closed_book': '๐Ÿ“•', + 'closed_lock_with_key': '๐Ÿ”', + 'cloud': 'โ˜๏ธ', + 'cloud_with_lightning_and_rain': 'โ›ˆ๏ธ', + 'cloud_with_rain': '๐ŸŒง๏ธ', + 'clown_face': '๐Ÿคก', + 'cn': '๐Ÿ‡จ๐Ÿ‡ณ', + 'cocktail': '๐Ÿธ', + 'coconut': '๐Ÿฅฅ', + 'coffee': 'โ˜•', + 'coffin': 'โšฐ๏ธ', + 'cold_face': '๐Ÿฅถ', + 'cold_sweat': '๐Ÿ˜ฐ', + 'collision': '๐Ÿ’ฅ', + 'comet': 'โ˜„๏ธ', + 'compass': '๐Ÿงญ', + 'computer': '๐Ÿ’ป', + 'computer_mouse': '๐Ÿ–ฑ๏ธ', + 'confetti_ball': '๐ŸŽŠ', + 'confounded': '๐Ÿ˜–', + 'confused': '๐Ÿ˜•', + 'construction': '๐Ÿšง', + 'cookie': '๐Ÿช', + 'cool': '๐Ÿ†’', + 'corn': '๐ŸŒฝ', + 'couch_and_lamp': '๐Ÿ›‹๏ธ', + 'cow': '๐Ÿฎ', + 'cow2': '๐Ÿ„', + 'cowboy_hat_face': '๐Ÿค ', + 'crab': '๐Ÿฆ€', + 'crayon': '๐Ÿ–๏ธ', + 'credit_card': '๐Ÿ’ณ', + 'crescent_moon': '๐ŸŒ™', + 'cricket_game': '๐Ÿ', + 'crocodile': '๐ŸŠ', + 'croissant': '๐Ÿฅ', + 'crossed_fingers': '๐Ÿคž', + 'crossed_flags': '๐ŸŽŒ', + 'crossed_swords': 'โš”๏ธ', + 'cry': '๐Ÿ˜ข', + 'crying_cat_face': '๐Ÿ˜ฟ', + 'cucumber': '๐Ÿฅ’', + 'cup_with_straw': '๐Ÿฅค', + 'cupcake': '๐Ÿง', + 'cupid': '๐Ÿ’˜', + 'currency_exchange': '๐Ÿ’ฑ', + 'curry': '๐Ÿ›', + 'cursing_face': '๐Ÿคฌ', + 'custard': '๐Ÿฎ', + 'cut_of_meat': '๐Ÿฅฉ', + 'cyclone': '๐ŸŒ€', + 'dagger': '๐Ÿ—ก๏ธ', + 'dango': '๐Ÿก', + 'dart': '๐ŸŽฏ', + 'dash': '๐Ÿ’จ', + 'date': '๐Ÿ“…', + 'de': '๐Ÿ‡ฉ๐Ÿ‡ช', + 'deaf_person': '๐Ÿง', + 'deciduous_tree': '๐ŸŒณ', + 'deer': '๐ŸฆŒ', + 'department_store': '๐Ÿฌ', + 'desert': '๐Ÿœ๏ธ', + 'desert_island': '๐Ÿ๏ธ', + 'desktop_computer': '๐Ÿ–ฅ๏ธ', + 'diamond_shape_with_a_dot_inside': '๐Ÿ’ ', + 'disappointed': '๐Ÿ˜ž', + 'disappointed_relieved': '๐Ÿ˜ฅ', + 'disguised_face': '๐Ÿฅธ', + 'diya_lamp': '๐Ÿช”', + 'dizzy': '๐Ÿ’ซ', + 'dizzy_face': '๐Ÿ˜ต', + 'dog': '๐Ÿถ', + 'dog2': '๐Ÿ•', + 'dollar': '๐Ÿ’ต', + 'dolphin': '๐Ÿฌ', + 'door': '๐Ÿšช', + 'dotted_line_face': '๐Ÿซฅ', + 'doughnut': '๐Ÿฉ', + 'dove': '๐Ÿ•Š๏ธ', + 'dragon': '๐Ÿ‰', + 'dromedary_camel': '๐Ÿช', + 'drooling_face': '๐Ÿคค', + 'drop_of_blood': '๐Ÿฉธ', + 'droplet': '๐Ÿ’ง', + 'drum': '๐Ÿฅ', + 'duck': '๐Ÿฆ†', + 'dumpling': '๐ŸฅŸ', + 'dvd': '๐Ÿ“€', + 'e-mail': '๐Ÿ“ง', + 'eagle': '๐Ÿฆ…', + 'ear': '๐Ÿ‘‚', + 'ear_of_rice': '๐ŸŒพ', + 'ear_with_hearing_aid': '๐Ÿฆป', + 'earth_africa': '๐ŸŒ', + 'earth_americas': '๐ŸŒŽ', + 'earth_asia': '๐ŸŒ', + 'egg': '๐Ÿฅš', + 'eggplant': '๐Ÿ†', + 'eight_pointed_black_star': 'โœด๏ธ', + 'eight_spoked_asterisk': 'โœณ๏ธ', + 'electric_plug': '๐Ÿ”Œ', + 'elephant': '๐Ÿ˜', + 'email': '๐Ÿ“ง', + 'envelope_with_arrow': '๐Ÿ“ฉ', + 'es': '๐Ÿ‡ช๐Ÿ‡ธ', + 'euro': '๐Ÿ’ถ', + 'european_castle': '๐Ÿฐ', + 'evergreen_tree': '๐ŸŒฒ', + 'exclamation': 'โ—', + 'exploding_head': '๐Ÿคฏ', + 'expressionless': '๐Ÿ˜‘', + 'eye': '๐Ÿ‘๏ธ', + 'eye_speech_bubble': '๐Ÿ‘๏ธโ€๐Ÿ—จ๏ธ', + 'eyes': '๐Ÿ‘€', + 'face_holding_back_tears': '๐Ÿฅน', + 'face_with_diagonal_mouth': '๐Ÿซค', + 'face_with_head_bandage': '๐Ÿค•', + 'face_with_open_eyes_and_hand_over_mouth': '๐Ÿซข', + 'face_with_peeking_eye': '๐Ÿซฃ', + 'face_with_thermometer': '๐Ÿค’', + 'facepalm': '๐Ÿคฆ', + 'facepunch': '๐Ÿ‘Š', + 'factory': '๐Ÿญ', + 'falafel': '๐Ÿง†', + 'fallen_leaf': '๐Ÿ‚', + 'fearful': '๐Ÿ˜จ', + 'feet': '๐Ÿพ', + 'ferris_wheel': '๐ŸŽก', + 'field_hockey': '๐Ÿ‘', + 'file_cabinet': '๐Ÿ—„๏ธ', + 'file_folder': '๐Ÿ“', + 'fire': '๐Ÿ”ฅ', + 'fire_engine': '๐Ÿš’', + 'fire_extinguisher': '๐Ÿงฏ', + 'firecracker': '๐Ÿงจ', + 'fireworks': '๐ŸŽ†', + 'first_quarter_moon': '๐ŸŒ“', + 'first_quarter_moon_with_face': '๐ŸŒ›', + 'fish': '๐ŸŸ', + 'fish_cake': '๐Ÿฅ', + 'fishing_pole_and_fish': '๐ŸŽฃ', + 'fist': 'โœŠ', + 'fist_left': '๐Ÿค›', + 'fist_oncoming': '๐Ÿ‘Š', + 'fist_raised': 'โœŠ', + 'fist_right': '๐Ÿคœ', + 'flamingo': '๐Ÿฆฉ', + 'flashlight': '๐Ÿ”ฆ', + 'fleur_de_lis': 'โšœ๏ธ', + 'flight_arrival': '๐Ÿ›ฌ', + 'flight_departure': '๐Ÿ›ซ', + 'flipper': '๐Ÿฌ', + 'floppy_disk': '๐Ÿ’พ', + 'flower_playing_cards': '๐ŸŽด', + 'flushed': '๐Ÿ˜ณ', + 'flying_disc': '๐Ÿฅ', + 'flying_saucer': '๐Ÿ›ธ', + 'foggy': '๐ŸŒ', + 'foot': '๐Ÿฆถ', + 'football': '๐Ÿˆ', + 'fork_and_knife': '๐Ÿด', + 'fortune_cookie': '๐Ÿฅ ', + 'fountain': 'โ›ฒ', + 'fountain_pen': '๐Ÿ–‹๏ธ', + 'four_leaf_clover': '๐Ÿ€', + 'fox_face': '๐ŸฆŠ', + 'fr': '๐Ÿ‡ซ๐Ÿ‡ท', + 'free': '๐Ÿ†“', + 'fried_egg': '๐Ÿณ', + 'fried_shrimp': '๐Ÿค', + 'fries': '๐ŸŸ', + 'frog': '๐Ÿธ', + 'frowning': '๐Ÿ˜ฆ', + 'frowning_face': 'โ˜น๏ธ', + 'fu': '๐Ÿ–•', + 'full_moon': '๐ŸŒ•', + 'full_moon_with_face': '๐ŸŒ', + 'game_die': '๐ŸŽฒ', + 'garlic': '๐Ÿง„', + 'gb': '๐Ÿ‡ฌ๐Ÿ‡ง', + 'gear': 'โš™๏ธ', + 'gem': '๐Ÿ’Ž', + 'ghost': '๐Ÿ‘ป', + 'gift': '๐ŸŽ', + 'gift_heart': '๐Ÿ’', + 'giraffe': '๐Ÿฆ’', + 'girl': '๐Ÿ‘ง', + 'goal_net': '๐Ÿฅ…', + 'goat': '๐Ÿ', + 'golf': 'โ›ณ', + 'gorilla': '๐Ÿฆ', + 'grapes': '๐Ÿ‡', + 'green_apple': '๐Ÿ', + 'green_book': '๐Ÿ“—', + 'green_circle': '๐ŸŸข', + 'green_heart': '๐Ÿ’š', + 'green_salad': '๐Ÿฅ—', + 'green_square': '๐ŸŸฉ', + 'grey_exclamation': 'โ•', + 'grey_question': 'โ”', + 'grimacing': '๐Ÿ˜ฌ', + 'grin': '๐Ÿ˜', + 'grinning': '๐Ÿ˜€', + 'guitar': '๐ŸŽธ', + 'gun': '๐Ÿ”ซ', + 'hamburger': '๐Ÿ”', + 'hammer': '๐Ÿ”จ', + 'hammer_and_pick': 'โš’๏ธ', + 'hammer_and_wrench': '๐Ÿ› ๏ธ', + 'hamster': '๐Ÿน', + 'hand': 'โœ‹', + 'hand_over_mouth': '๐Ÿคญ', + 'hand_with_index_finger_and_thumb_crossed': '๐Ÿซฐ', + 'handball_person': '๐Ÿคพ', + 'handshake': '๐Ÿค', + 'hankey': '๐Ÿ’ฉ', + 'hatched_chick': '๐Ÿฅ', + 'headphones': '๐ŸŽง', + 'headstone': '๐Ÿชฆ', + 'hear_no_evil': '๐Ÿ™‰', + 'heart': 'โค๏ธ', + 'heart_decoration': '๐Ÿ’Ÿ', + 'heart_eyes': '๐Ÿ˜', + 'heart_eyes_cat': '๐Ÿ˜ป', + 'heart_hands': '๐Ÿซถ', + 'heart_on_fire': 'โค๏ธโ€๐Ÿ”ฅ', + 'heartbeat': '๐Ÿ’“', + 'heartpulse': '๐Ÿ’—', + 'hearts': 'โ™ฅ๏ธ', + 'heavy_check_mark': 'โœ”๏ธ', + 'heavy_division_sign': 'โž—', + 'heavy_dollar_sign': '๐Ÿ’ฒ', + 'heavy_exclamation_mark': 'โ—', + 'heavy_minus_sign': 'โž–', + 'heavy_multiplication_x': 'โœ–๏ธ', + 'heavy_plus_sign': 'โž•', + 'hedgehog': '๐Ÿฆ”', + 'helicopter': '๐Ÿš', + 'herb': '๐ŸŒฟ', + 'hibiscus': '๐ŸŒบ', + 'hindu_temple': '๐Ÿ›•', + 'hippopotamus': '๐Ÿฆ›', + 'hocho': '๐Ÿ”ช', + 'honey_pot': '๐Ÿฏ', + 'honeybee': '๐Ÿ', + 'horse': '๐Ÿด', + 'horse_racing': '๐Ÿ‡', + 'hospital': '๐Ÿฅ', + 'hot_face': '๐Ÿฅต', + 'hot_pepper': '๐ŸŒถ๏ธ', + 'hotdog': '๐ŸŒญ', + 'hotel': '๐Ÿจ', + 'hourglass': 'โŒ›', + 'hourglass_flowing_sand': 'โณ', + 'house': '๐Ÿ ', + 'house_with_garden': '๐Ÿก', + 'hugs': '๐Ÿค—', + 'hushed': '๐Ÿ˜ฏ', + 'ice_cream': '๐Ÿจ', + 'ice_cube': '๐ŸงŠ', + 'ice_hockey': '๐Ÿ’', + 'ice_skate': 'โ›ธ๏ธ', + 'icecream': '๐Ÿฆ', + 'imp': '๐Ÿ‘ฟ', + 'inbox_tray': '๐Ÿ“ฅ', + 'incoming_envelope': '๐Ÿ“จ', + 'india': '๐Ÿ‡ฎ๐Ÿ‡ณ', + 'infinity': 'โ™พ๏ธ', + 'information_desk_person': '๐Ÿ’', + 'innocent': '๐Ÿ˜‡', + 'interrobang': 'โ‰๏ธ', + 'iphone': '๐Ÿ“ฑ', + 'ireland': '๐Ÿ‡ฎ๐Ÿ‡ช', + 'it': '๐Ÿ‡ฎ๐Ÿ‡น', + 'japanese_goblin': '๐Ÿ‘บ', + 'japanese_ogre': '๐Ÿ‘น', + 'jigsaw': '๐Ÿงฉ', + 'joy': '๐Ÿ˜‚', + 'joy_cat': '๐Ÿ˜น', + 'jp': '๐Ÿ‡ฏ๐Ÿ‡ต', + 'juggling_person': '๐Ÿคน', + 'kangaroo': '๐Ÿฆ˜', + 'key': '๐Ÿ”‘', + 'keyboard': 'โŒจ๏ธ', + 'keycap_ten': '๐Ÿ”Ÿ', + 'kick_scooter': '๐Ÿ›ด', + 'kiss': '๐Ÿ’‹', + 'kissing': '๐Ÿ˜—', + 'kissing_cat': '๐Ÿ˜ฝ', + 'kissing_closed_eyes': '๐Ÿ˜š', + 'kissing_heart': '๐Ÿ˜˜', + 'kissing_smiling_eyes': '๐Ÿ˜™', + 'kite': '๐Ÿช', + 'kiwi_fruit': '๐Ÿฅ', + 'knife': '๐Ÿ”ช', + 'koala': '๐Ÿจ', + 'kr': '๐Ÿ‡ฐ๐Ÿ‡ท', + 'lacrosse': '๐Ÿฅ', + 'lady_beetle': '๐Ÿž', + 'large_blue_circle': '๐Ÿ”ต', + 'large_blue_diamond': '๐Ÿ”ท', + 'large_orange_diamond': '๐Ÿ”ถ', + 'last_quarter_moon': '๐ŸŒ—', + 'last_quarter_moon_with_face': '๐ŸŒœ', + 'laughing': '๐Ÿ˜†', + 'leafy_green': '๐Ÿฅฌ', + 'leaves': '๐Ÿƒ', + 'ledger': '๐Ÿ“’', + 'leg': '๐Ÿฆต', + 'lemon': '๐Ÿ‹', + 'leopard': '๐Ÿ†', + 'lion': '๐Ÿฆ', + 'lips': '๐Ÿ‘„', + 'lizard': '๐ŸฆŽ', + 'llama': '๐Ÿฆ™', + 'lobster': '๐Ÿฆž', + 'lock': '๐Ÿ”’', + 'lock_with_ink_pen': '๐Ÿ”', + 'lollipop': '๐Ÿญ', + 'lotion_bottle': '๐Ÿงด', + 'lotus_position': '๐Ÿง˜', + 'loud_sound': '๐Ÿ”Š', + 'loudspeaker': '๐Ÿ“ข', + 'love_letter': '๐Ÿ’Œ', + 'love_you_gesture': '๐ŸคŸ', + 'luggage': '๐Ÿงณ', + 'lungs': '๐Ÿซ', + 'lying_face': '๐Ÿคฅ', + 'magic_wand': '๐Ÿช„', + 'magnet': '๐Ÿงฒ', + 'mahjong': '๐Ÿ€„', + 'mailbox': '๐Ÿ“ซ', + 'mailbox_closed': '๐Ÿ“ช', + 'mailbox_with_mail': '๐Ÿ“ฌ', + 'mailbox_with_no_mail': '๐Ÿ“ญ', + 'man': '๐Ÿ‘จ', + 'mandarin': '๐ŸŠ', + 'mango': '๐Ÿฅญ', + 'mantelpiece_clock': '๐Ÿ•ฐ๏ธ', + 'maple_leaf': '๐Ÿ', + 'martial_arts_uniform': '๐Ÿฅ‹', + 'mask': '๐Ÿ˜ท', + 'mate': '๐Ÿง‰', + 'meat_on_bone': '๐Ÿ–', + 'mechanical_arm': '๐Ÿฆพ', + 'mechanical_leg': '๐Ÿฆฟ', + 'medal_military': '๐ŸŽ–๏ธ', + 'medal_sports': '๐Ÿ…', + 'medical_symbol': 'โš•๏ธ', + 'mega': '๐Ÿ“ฃ', + 'melon': '๐Ÿˆ', + 'melting_face': '๐Ÿซ ', + 'memo': '๐Ÿ“', + 'metal': '๐Ÿค˜', + 'metro': '๐Ÿš‡', + 'mexico': '๐Ÿ‡ฒ๐Ÿ‡ฝ', + 'microphone': '๐ŸŽค', + 'microscope': '๐Ÿ”ฌ', + 'middle_finger': '๐Ÿ–•', + 'milk_glass': '๐Ÿฅ›', + 'minidisc': '๐Ÿ’ฝ', + 'mirror': '๐Ÿชž', + 'money_mouth_face': '๐Ÿค‘', + 'money_with_wings': '๐Ÿ’ธ', + 'moneybag': '๐Ÿ’ฐ', + 'monkey_face': '๐Ÿต', + 'monocle_face': '๐Ÿง', + 'moon': '๐ŸŒ”', + 'moon_cake': '๐Ÿฅฎ', + 'mosque': '๐Ÿ•Œ', + 'motor_scooter': '๐Ÿ›ต', + 'motorcycle': '๐Ÿ๏ธ', + 'mountain': 'โ›ฐ๏ธ', + 'mountain_bicyclist': '๐Ÿšต', + 'mountain_snow': '๐Ÿ”๏ธ', + 'mouse': '๐Ÿญ', + 'mouse2': '๐Ÿ', + 'movie_camera': '๐ŸŽฅ', + 'moyai': '๐Ÿ—ฟ', + 'muscle': '๐Ÿ’ช', + 'mushroom': '๐Ÿ„', + 'musical_keyboard': '๐ŸŽน', + 'musical_score': '๐ŸŽผ', + 'mute': '๐Ÿ”‡', + 'nail_care': '๐Ÿ’…', + 'name_badge': '๐Ÿ“›', + 'nauseated_face': '๐Ÿคข', + 'negative_squared_cross_mark': 'โŽ', + 'nerd_face': '๐Ÿค“', + 'netherlands': '๐Ÿ‡ณ๐Ÿ‡ฑ', + 'neutral_face': '๐Ÿ˜', + 'new': '๐Ÿ†•', + 'new_moon': '๐ŸŒ‘', + 'new_moon_with_face': '๐ŸŒš', + 'newspaper': '๐Ÿ“ฐ', + 'night_with_stars': '๐ŸŒƒ', + 'no_bell': '๐Ÿ”•', + 'no_entry': 'โ›”', + 'no_entry_sign': '๐Ÿšซ', + 'no_good': '๐Ÿ™…', + 'no_mobile_phones': '๐Ÿ“ต', + 'no_mouth': '๐Ÿ˜ถ', + 'norway': '๐Ÿ‡ณ๐Ÿ‡ด', + 'nose': '๐Ÿ‘ƒ', + 'notebook': '๐Ÿ““', + 'notebook_with_decorative_cover': '๐Ÿ“”', + 'nut_and_bolt': '๐Ÿ”ฉ', + 'o': 'โญ•', + 'o2': '๐Ÿ…พ๏ธ', + 'octopus': '๐Ÿ™', + 'oden': '๐Ÿข', + 'office': '๐Ÿข', + 'oil_drum': '๐Ÿ›ข๏ธ', + 'ok': '๐Ÿ†—', + 'ok_hand': '๐Ÿ‘Œ', + 'ok_person': '๐Ÿ™†', + 'old_key': '๐Ÿ—๏ธ', + 'older_adult': '๐Ÿง“', + 'older_man': '๐Ÿ‘ด', + 'older_woman': '๐Ÿ‘ต', + 'olive': '๐Ÿซ’', + 'onion': '๐Ÿง…', + 'open_book': '๐Ÿ“–', + 'open_file_folder': '๐Ÿ“‚', + 'open_hands': '๐Ÿ‘', + 'open_mouth': '๐Ÿ˜ฎ', + 'orange': '๐ŸŠ', + 'orange_book': '๐Ÿ“™', + 'orange_circle': '๐ŸŸ ', + 'orange_heart': '๐Ÿงก', + 'orange_square': '๐ŸŸง', + 'otter': '๐Ÿฆฆ', + 'outbox_tray': '๐Ÿ“ค', + 'owl': '๐Ÿฆ‰', + 'ox': '๐Ÿ‚', + 'oyster': '๐Ÿฆช', + 'package': '๐Ÿ“ฆ', + 'page_facing_up': '๐Ÿ“„', + 'page_with_curl': '๐Ÿ“ƒ', + 'pager': '๐Ÿ“Ÿ', + 'paintbrush': '๐Ÿ–Œ๏ธ', + 'palm_tree': '๐ŸŒด', + 'palms_up_together': '๐Ÿคฒ', + 'pancakes': '๐Ÿฅž', + 'panda_face': '๐Ÿผ', + 'paperclip': '๐Ÿ“Ž', + 'parrot': '๐Ÿฆœ', + 'partly_sunny': 'โ›…', + 'partying_face': '๐Ÿฅณ', + 'paw_prints': '๐Ÿพ', + 'peach': '๐Ÿ‘', + 'peacock': '๐Ÿฆš', + 'peanuts': '๐Ÿฅœ', + 'pear': '๐Ÿ', + 'pen': '๐Ÿ–Š๏ธ', + 'pencil': '๐Ÿ“', + 'pencil2': 'โœ๏ธ', + 'penguin': '๐Ÿง', + 'pensive': '๐Ÿ˜”', + 'people_hugging': '๐Ÿซ‚', + 'performing_arts': '๐ŸŽญ', + 'persevere': '๐Ÿ˜ฃ', + 'person_fencing': '๐Ÿคบ', + 'phone': 'โ˜Ž๏ธ', + 'pick': 'โ›๏ธ', + 'pie': '๐Ÿฅง', + 'pig': '๐Ÿท', + 'pig2': '๐Ÿ–', + 'pig_nose': '๐Ÿฝ', + 'pill': '๐Ÿ’Š', + 'pinata': '๐Ÿช…', + 'pinched_fingers': '๐ŸคŒ', + 'pinching_hand': '๐Ÿค', + 'pineapple': '๐Ÿ', + 'ping_pong': '๐Ÿ“', + 'pirate_flag': '๐Ÿดโ€โ˜ ๏ธ', + 'pizza': '๐Ÿ•', + 'plate_with_cutlery': '๐Ÿฝ๏ธ', + 'pleading_face': '๐Ÿฅบ', + 'point_down': '๐Ÿ‘‡', + 'point_left': '๐Ÿ‘ˆ', + 'point_right': '๐Ÿ‘‰', + 'point_up': 'โ˜๏ธ', + 'point_up_2': '๐Ÿ‘†', + 'police_car': '๐Ÿš“', + 'poodle': '๐Ÿฉ', + 'poop': '๐Ÿ’ฉ', + 'popcorn': '๐Ÿฟ', + 'portugal': '๐Ÿ‡ต๐Ÿ‡น', + 'postal_horn': '๐Ÿ“ฏ', + 'postbox': '๐Ÿ“ฎ', + 'potato': '๐Ÿฅ”', + 'potted_plant': '๐Ÿชด', + 'poultry_leg': '๐Ÿ—', + 'pound': '๐Ÿ’ท', + 'pout': '๐Ÿ˜ก', + 'pouting_cat': '๐Ÿ˜พ', + 'pray': '๐Ÿ™', + 'pretzel': '๐Ÿฅจ', + 'printer': '๐Ÿ–จ๏ธ', + 'punch': '๐Ÿ‘Š', + 'purple_circle': '๐ŸŸฃ', + 'purple_heart': '๐Ÿ’œ', + 'purple_square': '๐ŸŸช', + 'pushpin': '๐Ÿ“Œ', + 'question': 'โ“', + 'rabbit': '๐Ÿฐ', + 'rabbit2': '๐Ÿ‡', + 'raccoon': '๐Ÿฆ', + 'racehorse': '๐ŸŽ', + 'racing_car': '๐ŸŽ๏ธ', + 'radio': '๐Ÿ“ป', + 'radioactive': 'โ˜ข๏ธ', + 'rage': '๐Ÿ˜ก', + 'rainbow': '๐ŸŒˆ', + 'rainbow_flag': '๐Ÿณ๏ธโ€๐ŸŒˆ', + 'raised_back_of_hand': '๐Ÿคš', + 'raised_eyebrow': '๐Ÿคจ', + 'raised_hand': 'โœ‹', + 'raised_hand_with_fingers_splayed': '๐Ÿ–๏ธ', + 'raised_hands': '๐Ÿ™Œ', + 'raising_hand': '๐Ÿ™‹', + 'ramen': '๐Ÿœ', + 'rat': '๐Ÿ€', + 'razor': '๐Ÿช’', + 'receipt': '๐Ÿงพ', + 'recycle': 'โ™ป๏ธ', + 'red_car': '๐Ÿš—', + 'red_circle': '๐Ÿ”ด', + 'red_square': '๐ŸŸฅ', + 'relieved': '๐Ÿ˜Œ', + 'reminder_ribbon': '๐ŸŽ—๏ธ', + 'revolving_hearts': '๐Ÿ’ž', + 'rhinoceros': '๐Ÿฆ', + 'ribbon': '๐ŸŽ€', + 'rice': '๐Ÿš', + 'rice_ball': '๐Ÿ™', + 'rice_cracker': '๐Ÿ˜', + 'right_anger_bubble': '๐Ÿ—ฏ๏ธ', + 'ringed_planet': '๐Ÿช', + 'robot': '๐Ÿค–', + 'rocket': '๐Ÿš€', + 'rofl': '๐Ÿคฃ', + 'roll_eyes': '๐Ÿ™„', + 'roll_of_paper': '๐Ÿงป', + 'roller_coaster': '๐ŸŽข', + 'roller_skate': '๐Ÿ›ผ', + 'rooster': '๐Ÿ“', + 'rose': '๐ŸŒน', + 'rowboat': '๐Ÿšฃ', + 'ru': '๐Ÿ‡ท๐Ÿ‡บ', + 'rugby_football': '๐Ÿ‰', + 'running_shirt_with_sash': '๐ŸŽฝ', + 'safety_pin': '๐Ÿงท', + 'sailboat': 'โ›ต', + 'sake': '๐Ÿถ', + 'salt': '๐Ÿง‚', + 'saluting_face': '๐Ÿซก', + 'sandwich': '๐Ÿฅช', + 'satellite': '๐Ÿ“ก', + 'satisfied': '๐Ÿ˜†', + 'sauropod': '๐Ÿฆ•', + 'saxophone': '๐ŸŽท', + 'school': '๐Ÿซ', + 'scissors': 'โœ‚๏ธ', + 'scorpion': '๐Ÿฆ‚', + 'scream': '๐Ÿ˜ฑ', + 'scream_cat': '๐Ÿ™€', + 'scroll': '๐Ÿ“œ', + 'see_no_evil': '๐Ÿ™ˆ', + 'seedling': '๐ŸŒฑ', + 'selfie': '๐Ÿคณ', + 'shallow_pan_of_food': '๐Ÿฅ˜', + 'shamrock': 'โ˜˜๏ธ', + 'shark': '๐Ÿฆˆ', + 'shaved_ice': '๐Ÿง', + 'sheep': '๐Ÿ‘', + 'shell': '๐Ÿš', + 'shield': '๐Ÿ›ก๏ธ', + 'shinto_shrine': 'โ›ฉ๏ธ', + 'ship': '๐Ÿšข', + 'shit': '๐Ÿ’ฉ', + 'shopping_cart': '๐Ÿ›’', + 'shower': '๐Ÿšฟ', + 'shrimp': '๐Ÿฆ', + 'shrug': '๐Ÿคท', + 'shushing_face': '๐Ÿคซ', + 'skateboard': '๐Ÿ›น', + 'ski': '๐ŸŽฟ', + 'skier': 'โ›ท๏ธ', + 'skull': '๐Ÿ’€', + 'skull_and_crossbones': 'โ˜ ๏ธ', + 'skunk': '๐Ÿฆจ', + 'sled': '๐Ÿ›ท', + 'sleeping': '๐Ÿ˜ด', + 'sleepy': '๐Ÿ˜ช', + 'slightly_frowning_face': '๐Ÿ™', + 'slightly_smiling_face': '๐Ÿ™‚', + 'slot_machine': '๐ŸŽฐ', + 'sloth': '๐Ÿฆฅ', + 'small_blue_diamond': '๐Ÿ”น', + 'small_orange_diamond': '๐Ÿ”ธ', + 'small_red_triangle': '๐Ÿ”บ', + 'small_red_triangle_down': '๐Ÿ”ป', + 'smile': '๐Ÿ˜„', + 'smile_cat': '๐Ÿ˜ธ', + 'smiley': '๐Ÿ˜ƒ', + 'smiley_cat': '๐Ÿ˜บ', + 'smiling_face_with_tear': '๐Ÿฅฒ', + 'smiling_face_with_three_hearts': '๐Ÿฅฐ', + 'smiling_imp': '๐Ÿ˜ˆ', + 'smirk': '๐Ÿ˜', + 'smirk_cat': '๐Ÿ˜ผ', + 'smoking': '๐Ÿšฌ', + 'snail': '๐ŸŒ', + 'snake': '๐Ÿ', + 'sneezing_face': '๐Ÿคง', + 'snowboarder': '๐Ÿ‚', + 'snowflake': 'โ„๏ธ', + 'snowman': 'โ›„', + 'snowman_with_snow': 'โ˜ƒ๏ธ', + 'soap': '๐Ÿงผ', + 'sob': '๐Ÿ˜ญ', + 'soccer': 'โšฝ', + 'softball': '๐ŸฅŽ', + 'sound': '๐Ÿ”‰', + 'space_invader': '๐Ÿ‘พ', + 'spaghetti': '๐Ÿ', + 'sparkle': 'โ‡๏ธ', + 'sparkler': '๐ŸŽ‡', + 'sparkles': 'โœจ', + 'sparkling_heart': '๐Ÿ’–', + 'speak_no_evil': '๐Ÿ™Š', + 'speaker': '๐Ÿ”ˆ', + 'speaking_head': '๐Ÿ—ฃ๏ธ', + 'speech_balloon': '๐Ÿ’ฌ', + 'spider': '๐Ÿ•ท๏ธ', + 'sponge': '๐Ÿงฝ', + 'spoon': '๐Ÿฅ„', + 'squid': '๐Ÿฆ‘', + 'stadium': '๐ŸŸ๏ธ', + 'star': 'โญ', + 'star2': '๐ŸŒŸ', + 'star_struck': '๐Ÿคฉ', + 'statue_of_liberty': '๐Ÿ—ฝ', + 'steam_locomotive': '๐Ÿš‚', + 'stethoscope': '๐Ÿฉบ', + 'stew': '๐Ÿฒ', + 'stopwatch': 'โฑ๏ธ', + 'straight_ruler': '๐Ÿ“', + 'strawberry': '๐Ÿ“', + 'stuck_out_tongue': '๐Ÿ˜›', + 'stuck_out_tongue_closed_eyes': '๐Ÿ˜', + 'stuck_out_tongue_winking_eye': '๐Ÿ˜œ', + 'stuffed_flatbread': '๐Ÿฅ™', + 'sun_behind_large_cloud': '๐ŸŒฅ๏ธ', + 'sun_behind_rain_cloud': '๐ŸŒฆ๏ธ', + 'sun_behind_small_cloud': '๐ŸŒค๏ธ', + 'sun_with_face': '๐ŸŒž', + 'sunflower': '๐ŸŒป', + 'sunglasses': '๐Ÿ˜Ž', + 'sunny': 'โ˜€๏ธ', + 'sunrise': '๐ŸŒ…', + 'sunrise_over_mountains': '๐ŸŒ„', + 'surfer': '๐Ÿ„', + 'sushi': '๐Ÿฃ', + 'swan': '๐Ÿฆข', + 'sweat': '๐Ÿ˜“', + 'sweat_drops': '๐Ÿ’ฆ', + 'sweat_smile': '๐Ÿ˜…', + 'sweden': '๐Ÿ‡ธ๐Ÿ‡ช', + 'sweet_potato': '๐Ÿ ', + 'swimmer': '๐ŸŠ', + 'symbols': '๐Ÿ”ฃ', + 'syringe': '๐Ÿ’‰', + 't-rex': '๐Ÿฆ–', + 'taco': '๐ŸŒฎ', + 'tada': '๐ŸŽ‰', + 'takeout_box': '๐Ÿฅก', + 'tangerine': '๐ŸŠ', + 'taxi': '๐Ÿš•', + 'tea': '๐Ÿต', + 'teapot': '๐Ÿซ–', + 'telephone': 'โ˜Ž๏ธ', + 'telephone_receiver': '๐Ÿ“ž', + 'telescope': '๐Ÿ”ญ', + 'tennis': '๐ŸŽพ', + 'tent': 'โ›บ', + 'thinking': '๐Ÿค”', + 'thought_balloon': '๐Ÿ’ญ', + 'thumbsdown': '๐Ÿ‘Ž', + 'thumbsup': '๐Ÿ‘', + 'ticket': '๐ŸŽซ', + 'tiger': '๐Ÿฏ', + 'tiger2': '๐Ÿ…', + 'timer_clock': 'โฒ๏ธ', + 'tipping_hand_person': '๐Ÿ’', + 'tired_face': '๐Ÿ˜ซ', + 'toilet': '๐Ÿšฝ', + 'tokyo_tower': '๐Ÿ—ผ', + 'tomato': '๐Ÿ…', + 'tongue': '๐Ÿ‘…', + 'toolbox': '๐Ÿงฐ', + 'tooth': '๐Ÿฆท', + 'toothbrush': '๐Ÿชฅ', + 'tornado': '๐ŸŒช๏ธ', + 'train2': '๐Ÿš†', + 'triangular_flag_on_post': '๐Ÿšฉ', + 'triangular_ruler': '๐Ÿ“', + 'trident': '๐Ÿ”ฑ', + 'triumph': '๐Ÿ˜ค', + 'trophy': '๐Ÿ†', + 'tropical_drink': '๐Ÿน', + 'tropical_fish': '๐Ÿ ', + 'truck': '๐Ÿšš', + 'trumpet': '๐ŸŽบ', + 'tulip': '๐ŸŒท', + 'tumbler_glass': '๐Ÿฅƒ', + 'turkey': '๐Ÿฆƒ', + 'turtle': '๐Ÿข', + 'tv': '๐Ÿ“บ', + 'two_hearts': '๐Ÿ’•', + 'uk': '๐Ÿ‡ฌ๐Ÿ‡ง', + 'umbrella': 'โ˜”', + 'unamused': '๐Ÿ˜’', + 'underage': '๐Ÿ”ž', + 'unicorn': '๐Ÿฆ„', + 'unlock': '๐Ÿ”“', + 'up': '๐Ÿ†™', + 'upside_down_face': '๐Ÿ™ƒ', + 'us': '๐Ÿ‡บ๐Ÿ‡ธ', + 'v': 'โœŒ๏ธ', + 'vertical_traffic_light': '๐Ÿšฆ', + 'video_camera': '๐Ÿ“น', + 'video_game': '๐ŸŽฎ', + 'violin': '๐ŸŽป', + 'volcano': '๐ŸŒ‹', + 'volleyball': '๐Ÿ', + 'vomiting_face': '๐Ÿคฎ', + 'vulcan_salute': '๐Ÿ––', + 'waffle': '๐Ÿง‡', + 'waning_crescent_moon': '๐ŸŒ˜', + 'waning_gibbous_moon': '๐ŸŒ–', + 'wastebasket': '๐Ÿ—‘๏ธ', + 'watch': 'โŒš', + 'water_buffalo': '๐Ÿƒ', + 'watermelon': '๐Ÿ‰', + 'wave': '๐Ÿ‘‹', + 'wavy_dash': 'ใ€ฐ๏ธ', + 'waxing_crescent_moon': '๐ŸŒ’', + 'waxing_gibbous_moon': '๐ŸŒ”', + 'weary': '๐Ÿ˜ฉ', + 'wedding': '๐Ÿ’’', + 'weight_lifting': '๐Ÿ‹๏ธ', + 'whale': '๐Ÿณ', + 'whale2': '๐Ÿ‹', + 'white_check_mark': 'โœ…', + 'white_circle': 'โšช', + 'white_flag': '๐Ÿณ๏ธ', + 'white_heart': '๐Ÿค', + 'white_large_square': 'โฌœ', + 'white_medium_square': 'โ—ป๏ธ', + 'wilted_flower': '๐Ÿฅ€', + 'window': '๐ŸชŸ', + 'wine_glass': '๐Ÿท', + 'wink': '๐Ÿ˜‰', + 'wolf': '๐Ÿบ', + 'woman': '๐Ÿ‘ฉ', + 'woozy_face': '๐Ÿฅด', + 'world_map': '๐Ÿ—บ๏ธ', + 'worried': '๐Ÿ˜Ÿ', + 'wrench': '๐Ÿ”ง', + 'wrestling': '๐Ÿคผ', + 'writing_hand': 'โœ๏ธ', + 'x': 'โŒ', + 'yawning_face': '๐Ÿฅฑ', + 'yellow_circle': '๐ŸŸก', + 'yellow_heart': '๐Ÿ’›', + 'yellow_square': '๐ŸŸจ', + 'yen': '๐Ÿ’ด', + 'yo_yo': '๐Ÿช€', + 'yum': '๐Ÿ˜‹', + 'zany_face': '๐Ÿคช', + 'zap': 'โšก', + 'zebra': '๐Ÿฆ“', + 'zipper_mouth_face': '๐Ÿค', +}