diff --git a/emoji_gen.py b/emoji_gen.py
new file mode 100644
index 0000000..ae0436b
--- /dev/null
+++ b/emoji_gen.py
@@ -0,0 +1,1757 @@
+
+
+# http://apps.timwhitlock.info/emoji/tables/unicode
+# var all = document.querySelectorAll("tr,h3")
+# var emojis = [];
+# for (var i = 0; i < all.length;i++)
+# {
+# var t = all[i];
+# if (t.nodeName == "H3")
+# emojis.push('\n// ' + t.innerText + '\n');
+# else
+# {
+# var codes = t.querySelectorAll(".code,.name");
+# var str = [];
+# for (var j = 0; j < codes.length; j++)
+# str.push(codes[j].innerText);
+# if (str.length > 0)
+# emojis.push('"' + str.join('", "') + '"');
+# }
+# }
+# document.body.innerText = emojis.join("\n");
+
+emoji_list = [
+
+"TYPE_EMOTICONS", "U+1F601", "\xF0\x9F\x98\x81", "grinning face with smiling eyes",
+"TYPE_EMOTICONS", "U+1F602", "\xF0\x9F\x98\x82", "face with tears of joy",
+"TYPE_EMOTICONS", "U+1F603", "\xF0\x9F\x98\x83", "smiling face with open mouth",
+"TYPE_EMOTICONS", "U+1F604", "\xF0\x9F\x98\x84", "smiling face with open mouth and smiling eyes",
+"TYPE_EMOTICONS", "U+1F605", "\xF0\x9F\x98\x85", "smiling face with open mouth and cold sweat",
+"TYPE_EMOTICONS", "U+1F606", "\xF0\x9F\x98\x86", "smiling face with open mouth and tightly-closed eyes",
+"TYPE_EMOTICONS", "U+1F609", "\xF0\x9F\x98\x89", "winking face",
+"TYPE_EMOTICONS", "U+1F60A", "\xF0\x9F\x98\x8A", "smiling face with smiling eyes",
+"TYPE_EMOTICONS", "U+1F60B", "\xF0\x9F\x98\x8B", "face savouring delicious food",
+"TYPE_EMOTICONS", "U+1F60C", "\xF0\x9F\x98\x8C", "relieved face",
+"TYPE_EMOTICONS", "U+1F60D", "\xF0\x9F\x98\x8D", "smiling face with heart-shaped eyes",
+"TYPE_EMOTICONS", "U+1F60F", "\xF0\x9F\x98\x8F", "smirking face",
+"TYPE_EMOTICONS", "U+1F612", "\xF0\x9F\x98\x92", "unamused face",
+"TYPE_EMOTICONS", "U+1F613", "\xF0\x9F\x98\x93", "face with cold sweat",
+"TYPE_EMOTICONS", "U+1F614", "\xF0\x9F\x98\x94", "pensive face",
+"TYPE_EMOTICONS", "U+1F616", "\xF0\x9F\x98\x96", "confounded face",
+"TYPE_EMOTICONS", "U+1F618", "\xF0\x9F\x98\x98", "face throwing a kiss",
+"TYPE_EMOTICONS", "U+1F61A", "\xF0\x9F\x98\x9A", "kissing face with closed eyes",
+"TYPE_EMOTICONS", "U+1F61C", "\xF0\x9F\x98\x9C", "face with stuck-out tongue and winking eye",
+"TYPE_EMOTICONS", "U+1F61D", "\xF0\x9F\x98\x9D", "face with stuck-out tongue and tightly-closed eyes",
+"TYPE_EMOTICONS", "U+1F61E", "\xF0\x9F\x98\x9E", "disappointed face",
+"TYPE_EMOTICONS", "U+1F620", "\xF0\x9F\x98\xA0", "angry face",
+"TYPE_EMOTICONS", "U+1F621", "\xF0\x9F\x98\xA1", "pouting face",
+"TYPE_EMOTICONS", "U+1F622", "\xF0\x9F\x98\xA2", "crying face",
+"TYPE_EMOTICONS", "U+1F623", "\xF0\x9F\x98\xA3", "persevering face",
+"TYPE_EMOTICONS", "U+1F624", "\xF0\x9F\x98\xA4", "face with look of triumph",
+"TYPE_EMOTICONS", "U+1F625", "\xF0\x9F\x98\xA5", "disappointed but relieved face",
+"TYPE_EMOTICONS", "U+1F628", "\xF0\x9F\x98\xA8", "fearful face",
+"TYPE_EMOTICONS", "U+1F629", "\xF0\x9F\x98\xA9", "weary face",
+"TYPE_EMOTICONS", "U+1F62A", "\xF0\x9F\x98\xAA", "sleepy face",
+"TYPE_EMOTICONS", "U+1F62B", "\xF0\x9F\x98\xAB", "tired face",
+"TYPE_EMOTICONS", "U+1F62D", "\xF0\x9F\x98\xAD", "loudly crying face",
+"TYPE_EMOTICONS", "U+1F630", "\xF0\x9F\x98\xB0", "face with open mouth and cold sweat",
+"TYPE_EMOTICONS", "U+1F631", "\xF0\x9F\x98\xB1", "face screaming in fear",
+"TYPE_EMOTICONS", "U+1F632", "\xF0\x9F\x98\xB2", "astonished face",
+"TYPE_EMOTICONS", "U+1F633", "\xF0\x9F\x98\xB3", "flushed face",
+"TYPE_EMOTICONS", "U+1F635", "\xF0\x9F\x98\xB5", "dizzy face",
+"TYPE_EMOTICONS", "U+1F637", "\xF0\x9F\x98\xB7", "face with medical mask",
+"TYPE_EMOTICONS", "U+1F638", "\xF0\x9F\x98\xB8", "grinning cat face with smiling eyes",
+"TYPE_EMOTICONS", "U+1F639", "\xF0\x9F\x98\xB9", "cat face with tears of joy",
+"TYPE_EMOTICONS", "U+1F63A", "\xF0\x9F\x98\xBA", "smiling cat face with open mouth",
+"TYPE_EMOTICONS", "U+1F63B", "\xF0\x9F\x98\xBB", "smiling cat face with heart-shaped eyes",
+"TYPE_EMOTICONS", "U+1F63C", "\xF0\x9F\x98\xBC", "cat face with wry smile",
+"TYPE_EMOTICONS", "U+1F63D", "\xF0\x9F\x98\xBD", "kissing cat face with closed eyes",
+"TYPE_EMOTICONS", "U+1F63E", "\xF0\x9F\x98\xBE", "pouting cat face",
+"TYPE_EMOTICONS", "U+1F63F", "\xF0\x9F\x98\xBF", "crying cat face",
+"TYPE_EMOTICONS", "U+1F640", "\xF0\x9F\x99\x80", "weary cat face",
+"TYPE_EMOTICONS", "U+1F645", "\xF0\x9F\x99\x85", "face with no good gesture",
+"TYPE_EMOTICONS", "U+1F646", "\xF0\x9F\x99\x86", "face with ok gesture",
+"TYPE_EMOTICONS", "U+1F647", "\xF0\x9F\x99\x87", "person bowing deeply",
+"TYPE_EMOTICONS", "U+1F648", "\xF0\x9F\x99\x88", "see-no-evil monkey",
+"TYPE_EMOTICONS", "U+1F649", "\xF0\x9F\x99\x89", "hear-no-evil monkey",
+"TYPE_EMOTICONS", "U+1F64A", "\xF0\x9F\x99\x8A", "speak-no-evil monkey",
+"TYPE_EMOTICONS", "U+1F64B", "\xF0\x9F\x99\x8B", "happy person raising one hand",
+"TYPE_EMOTICONS", "U+1F64C", "\xF0\x9F\x99\x8C", "person raising both hands in celebration",
+"TYPE_EMOTICONS", "U+1F64D", "\xF0\x9F\x99\x8D", "person frowning",
+"TYPE_EMOTICONS", "U+1F64E", "\xF0\x9F\x99\x8E", "person with pouting face",
+"TYPE_EMOTICONS", "U+1F64F", "\xF0\x9F\x99\x8F", "person with folded hands",
+
+"TYPE_EMOTICONS", "U+1F600", "\xF0\x9F\x98\x80", "grinning face",
+"TYPE_EMOTICONS", "U+1F607", "\xF0\x9F\x98\x87", "smiling face with halo",
+"TYPE_EMOTICONS", "U+1F608", "\xF0\x9F\x98\x88", "smiling face with horns",
+"TYPE_EMOTICONS", "U+1F60E", "\xF0\x9F\x98\x8E", "smiling face with sunglasses",
+"TYPE_EMOTICONS", "U+1F610", "\xF0\x9F\x98\x90", "neutral face",
+"TYPE_EMOTICONS", "U+1F611", "\xF0\x9F\x98\x91", "expressionless face",
+"TYPE_EMOTICONS", "U+1F615", "\xF0\x9F\x98\x95", "confused face",
+"TYPE_EMOTICONS", "U+1F617", "\xF0\x9F\x98\x97", "kissing face",
+"TYPE_EMOTICONS", "U+1F619", "\xF0\x9F\x98\x99", "kissing face with smiling eyes",
+"TYPE_EMOTICONS", "U+1F61B", "\xF0\x9F\x98\x9B", "face with stuck-out tongue",
+"TYPE_EMOTICONS", "U+1F61F", "\xF0\x9F\x98\x9F", "worried face",
+"TYPE_EMOTICONS", "U+1F626", "\xF0\x9F\x98\xA6", "frowning face with open mouth",
+"TYPE_EMOTICONS", "U+1F627", "\xF0\x9F\x98\xA7", "anguished face",
+"TYPE_EMOTICONS", "U+1F62C", "\xF0\x9F\x98\xAC", "grimacing face",
+"TYPE_EMOTICONS", "U+1F62E", "\xF0\x9F\x98\xAE", "face with open mouth",
+"TYPE_EMOTICONS", "U+1F62F", "\xF0\x9F\x98\xAF", "hushed face",
+"TYPE_EMOTICONS", "U+1F634", "\xF0\x9F\x98\xB4", "sleeping face",
+"TYPE_EMOTICONS", "U+1F636", "\xF0\x9F\x98\xB6", "face without mouth",
+
+"TYPE_DINGBATS", "U+2702", "\xE2\x9C\x82", "black scissors",
+"TYPE_DINGBATS", "U+2705", "\xE2\x9C\x85", "white heavy check mark",
+"TYPE_DINGBATS", "U+2708", "\xE2\x9C\x88", "airplane",
+"TYPE_DINGBATS", "U+2709", "\xE2\x9C\x89", "envelope",
+"TYPE_DINGBATS", "U+270A", "\xE2\x9C\x8A", "raised fist",
+"TYPE_DINGBATS", "U+270B", "\xE2\x9C\x8B", "raised hand",
+"TYPE_DINGBATS", "U+270C", "\xE2\x9C\x8C", "victory hand",
+"TYPE_DINGBATS", "U+270F", "\xE2\x9C\x8F", "pencil",
+"TYPE_DINGBATS", "U+2712", "\xE2\x9C\x92", "black nib",
+"TYPE_DINGBATS", "U+2714", "\xE2\x9C\x94", "heavy check mark",
+"TYPE_DINGBATS", "U+2716", "\xE2\x9C\x96", "heavy multiplication x",
+"TYPE_DINGBATS", "U+2728", "\xE2\x9C\xA8", "sparkles",
+"TYPE_DINGBATS", "U+2733", "\xE2\x9C\xB3", "eight spoked asterisk",
+"TYPE_DINGBATS", "U+2734", "\xE2\x9C\xB4", "eight pointed black star",
+"TYPE_DINGBATS", "U+2744", "\xE2\x9D\x84", "snowflake",
+"TYPE_DINGBATS", "U+2747", "\xE2\x9D\x87", "sparkle",
+"TYPE_DINGBATS", "U+274C", "\xE2\x9D\x8C", "cross mark",
+"TYPE_DINGBATS", "U+274E", "\xE2\x9D\x8E", "negative squared cross mark",
+"TYPE_DINGBATS", "U+2753", "\xE2\x9D\x93", "black question mark ornament",
+"TYPE_DINGBATS", "U+2754", "\xE2\x9D\x94", "white question mark ornament",
+"TYPE_DINGBATS", "U+2755", "\xE2\x9D\x95", "white exclamation mark ornament",
+"TYPE_DINGBATS", "U+2757", "\xE2\x9D\x97", "heavy exclamation mark symbol",
+"TYPE_DINGBATS", "U+2764", "\xE2\x9D\xA4", "heavy black heart",
+"TYPE_DINGBATS", "U+2795", "\xE2\x9E\x95", "heavy plus sign",
+"TYPE_DINGBATS", "U+2796", "\xE2\x9E\x96", "heavy minus sign",
+"TYPE_DINGBATS", "U+2797", "\xE2\x9E\x97", "heavy division sign",
+"TYPE_DINGBATS", "U+27A1", "\xE2\x9E\xA1", "black rightwards arrow",
+"TYPE_DINGBATS", "U+27B0", "\xE2\x9E\xB0", "curly loop",
+
+"TYPE_TRANSPORT", "U+1F680", "\xF0\x9F\x9A\x80", "rocket",
+"TYPE_TRANSPORT", "U+1F683", "\xF0\x9F\x9A\x83", "railway car",
+"TYPE_TRANSPORT", "U+1F684", "\xF0\x9F\x9A\x84", "high-speed train",
+"TYPE_TRANSPORT", "U+1F685", "\xF0\x9F\x9A\x85", "high-speed train with bullet nose",
+"TYPE_TRANSPORT", "U+1F687", "\xF0\x9F\x9A\x87", "metro",
+"TYPE_TRANSPORT", "U+1F689", "\xF0\x9F\x9A\x89", "station",
+"TYPE_TRANSPORT", "U+1F68C", "\xF0\x9F\x9A\x8C", "bus",
+"TYPE_TRANSPORT", "U+1F68F", "\xF0\x9F\x9A\x8F", "bus stop",
+"TYPE_TRANSPORT", "U+1F691", "\xF0\x9F\x9A\x91", "ambulance",
+"TYPE_TRANSPORT", "U+1F692", "\xF0\x9F\x9A\x92", "fire engine",
+"TYPE_TRANSPORT", "U+1F693", "\xF0\x9F\x9A\x93", "police car",
+"TYPE_TRANSPORT", "U+1F695", "\xF0\x9F\x9A\x95", "taxi",
+"TYPE_TRANSPORT", "U+1F697", "\xF0\x9F\x9A\x97", "automobile",
+"TYPE_TRANSPORT", "U+1F699", "\xF0\x9F\x9A\x99", "recreational vehicle",
+"TYPE_TRANSPORT", "U+1F69A", "\xF0\x9F\x9A\x9A", "delivery truck",
+"TYPE_TRANSPORT", "U+1F6A2", "\xF0\x9F\x9A\xA2", "ship",
+"TYPE_TRANSPORT", "U+1F6A4", "\xF0\x9F\x9A\xA4", "speedboat",
+"TYPE_TRANSPORT", "U+1F6A5", "\xF0\x9F\x9A\xA5", "horizontal traffic light",
+"TYPE_TRANSPORT", "U+1F6A7", "\xF0\x9F\x9A\xA7", "construction sign",
+"TYPE_TRANSPORT", "U+1F6A8", "\xF0\x9F\x9A\xA8", "police cars revolving light",
+"TYPE_TRANSPORT", "U+1F6A9", "\xF0\x9F\x9A\xA9", "triangular flag on post",
+"TYPE_TRANSPORT", "U+1F6AA", "\xF0\x9F\x9A\xAA", "door",
+"TYPE_TRANSPORT", "U+1F6AB", "\xF0\x9F\x9A\xAB", "no entry sign",
+"TYPE_TRANSPORT", "U+1F6AC", "\xF0\x9F\x9A\xAC", "smoking symbol",
+"TYPE_TRANSPORT", "U+1F6AD", "\xF0\x9F\x9A\xAD", "no smoking symbol",
+"TYPE_TRANSPORT", "U+1F6B2", "\xF0\x9F\x9A\xB2", "bicycle",
+"TYPE_TRANSPORT", "U+1F6B6", "\xF0\x9F\x9A\xB6", "pedestrian",
+"TYPE_TRANSPORT", "U+1F6B9", "\xF0\x9F\x9A\xB9", "mens symbol",
+"TYPE_TRANSPORT", "U+1F6BA", "\xF0\x9F\x9A\xBA", "womens symbol",
+"TYPE_TRANSPORT", "U+1F6BB", "\xF0\x9F\x9A\xBB", "restroom",
+"TYPE_TRANSPORT", "U+1F6BC", "\xF0\x9F\x9A\xBC", "baby symbol",
+"TYPE_TRANSPORT", "U+1F6BD", "\xF0\x9F\x9A\xBD", "toilet",
+"TYPE_TRANSPORT", "U+1F6BE", "\xF0\x9F\x9A\xBE", "water closet",
+"TYPE_TRANSPORT", "U+1F6C0", "\xF0\x9F\x9B\x80", "bath",
+
+"TYPE_TRANSPORT", "U+1F681", "\xF0\x9F\x9A\x81", "helicopter",
+"TYPE_TRANSPORT", "U+1F682", "\xF0\x9F\x9A\x82", "steam locomotive",
+"TYPE_TRANSPORT", "U+1F686", "\xF0\x9F\x9A\x86", "train",
+"TYPE_TRANSPORT", "U+1F688", "\xF0\x9F\x9A\x88", "light rail",
+"TYPE_TRANSPORT", "U+1F68A", "\xF0\x9F\x9A\x8A", "tram",
+"TYPE_TRANSPORT", "U+1F68D", "\xF0\x9F\x9A\x8D", "oncoming bus",
+"TYPE_TRANSPORT", "U+1F68E", "\xF0\x9F\x9A\x8E", "trolleybus",
+"TYPE_TRANSPORT", "U+1F690", "\xF0\x9F\x9A\x90", "minibus",
+"TYPE_TRANSPORT", "U+1F694", "\xF0\x9F\x9A\x94", "oncoming police car",
+"TYPE_TRANSPORT", "U+1F696", "\xF0\x9F\x9A\x96", "oncoming taxi",
+"TYPE_TRANSPORT", "U+1F698", "\xF0\x9F\x9A\x98", "oncoming automobile",
+"TYPE_TRANSPORT", "U+1F69B", "\xF0\x9F\x9A\x9B", "articulated lorry",
+"TYPE_TRANSPORT", "U+1F69C", "\xF0\x9F\x9A\x9C", "tractor",
+"TYPE_TRANSPORT", "U+1F69D", "\xF0\x9F\x9A\x9D", "monorail",
+"TYPE_TRANSPORT", "U+1F69E", "\xF0\x9F\x9A\x9E", "mountain railway",
+"TYPE_TRANSPORT", "U+1F69F", "\xF0\x9F\x9A\x9F", "suspension railway",
+"TYPE_TRANSPORT", "U+1F6A0", "\xF0\x9F\x9A\xA0", "mountain cableway",
+"TYPE_TRANSPORT", "U+1F6A1", "\xF0\x9F\x9A\xA1", "aerial tramway",
+"TYPE_TRANSPORT", "U+1F6A3", "\xF0\x9F\x9A\xA3", "rowboat",
+"TYPE_TRANSPORT", "U+1F6A6", "\xF0\x9F\x9A\xA6", "vertical traffic light",
+"TYPE_TRANSPORT", "U+1F6AE", "\xF0\x9F\x9A\xAE", "put litter in its place symbol",
+"TYPE_TRANSPORT", "U+1F6AF", "\xF0\x9F\x9A\xAF", "do not litter symbol",
+"TYPE_TRANSPORT", "U+1F6B0", "\xF0\x9F\x9A\xB0", "potable water symbol",
+"TYPE_TRANSPORT", "U+1F6B1", "\xF0\x9F\x9A\xB1", "non-potable water symbol",
+"TYPE_TRANSPORT", "U+1F6B3", "\xF0\x9F\x9A\xB3", "no bicycles",
+"TYPE_TRANSPORT", "U+1F6B4", "\xF0\x9F\x9A\xB4", "bicyclist",
+"TYPE_TRANSPORT", "U+1F6B5", "\xF0\x9F\x9A\xB5", "mountain bicyclist",
+"TYPE_TRANSPORT", "U+1F6B7", "\xF0\x9F\x9A\xB7", "no pedestrians",
+"TYPE_TRANSPORT", "U+1F6B8", "\xF0\x9F\x9A\xB8", "children crossing",
+"TYPE_TRANSPORT", "U+1F6BF", "\xF0\x9F\x9A\xBF", "shower",
+"TYPE_TRANSPORT", "U+1F6C1", "\xF0\x9F\x9B\x81", "bathtub",
+"TYPE_TRANSPORT", "U+1F6C2", "\xF0\x9F\x9B\x82", "passport control",
+"TYPE_TRANSPORT", "U+1F6C3", "\xF0\x9F\x9B\x83", "customs",
+"TYPE_TRANSPORT", "U+1F6C4", "\xF0\x9F\x9B\x84", "baggage claim",
+"TYPE_TRANSPORT", "U+1F6C5", "\xF0\x9F\x9B\x85", "left luggage",
+
+"TYPE_ENCLOSED_CHARACTERS", "U+24C2", "\xE2\x93\x82", "circled latin capital letter m",
+"TYPE_ENCLOSED_CHARACTERS", "U+1F170", "\xF0\x9F\x85\xB0", "negative squared latin capital letter a",
+"TYPE_ENCLOSED_CHARACTERS", "U+1F171", "\xF0\x9F\x85\xB1", "negative squared latin capital letter b",
+"TYPE_ENCLOSED_CHARACTERS", "U+1F17E", "\xF0\x9F\x85\xBE", "negative squared latin capital letter o",
+"TYPE_ENCLOSED_CHARACTERS", "U+1F17F", "\xF0\x9F\x85\xBF", "negative squared latin capital letter p",
+"TYPE_ENCLOSED_CHARACTERS", "U+1F18E", "\xF0\x9F\x86\x8E", "negative squared ab",
+"TYPE_ENCLOSED_CHARACTERS", "U+1F191", "\xF0\x9F\x86\x91", "squared cl",
+"TYPE_ENCLOSED_CHARACTERS", "U+1F192", "\xF0\x9F\x86\x92", "squared cool",
+"TYPE_ENCLOSED_CHARACTERS", "U+1F193", "\xF0\x9F\x86\x93", "squared free",
+"TYPE_ENCLOSED_CHARACTERS", "U+1F194", "\xF0\x9F\x86\x94", "squared id",
+"TYPE_ENCLOSED_CHARACTERS", "U+1F195", "\xF0\x9F\x86\x95", "squared new",
+"TYPE_ENCLOSED_CHARACTERS", "U+1F196", "\xF0\x9F\x86\x96", "squared ng",
+"TYPE_ENCLOSED_CHARACTERS", "U+1F197", "\xF0\x9F\x86\x97", "squared ok",
+"TYPE_ENCLOSED_CHARACTERS", "U+1F198", "\xF0\x9F\x86\x98", "squared sos",
+"TYPE_ENCLOSED_CHARACTERS", "U+1F199", "\xF0\x9F\x86\x99", "squared up with exclamation mark",
+"TYPE_ENCLOSED_CHARACTERS", "U+1F19A", "\xF0\x9F\x86\x9A", "squared vs",
+"TYPE_ENCLOSED_CHARACTERS", "U+1F1E9 U+1F1EA", "\xF0\x9F\x87\xA9\xF0\x9F\x87\xAA", "regional indicator symbol letter d + regional indicator symbol letter e",
+"TYPE_ENCLOSED_CHARACTERS", "U+1F1EC U+1F1E7", "\xF0\x9F\x87\xAC\xF0\x9F\x87\xA7", "regional indicator symbol letter g + regional indicator symbol letter b",
+"TYPE_ENCLOSED_CHARACTERS", "U+1F1E8 U+1F1F3", "\xF0\x9F\x87\xA8\xF0\x9F\x87\xB3", "regional indicator symbol letter c + regional indicator symbol letter n",
+"TYPE_ENCLOSED_CHARACTERS", "U+1F1EF U+1F1F5", "\xF0\x9F\x87\xAF\xF0\x9F\x87\xB5", "regional indicator symbol letter j + regional indicator symbol letter p",
+"TYPE_ENCLOSED_CHARACTERS", "U+1F1F0 U+1F1F7", "\xF0\x9F\x87\xB0\xF0\x9F\x87\xB7", "regional indicator symbol letter k + regional indicator symbol letter r",
+"TYPE_ENCLOSED_CHARACTERS", "U+1F1EB U+1F1F7", "\xF0\x9F\x87\xAB\xF0\x9F\x87\xB7", "regional indicator symbol letter f + regional indicator symbol letter r",
+"TYPE_ENCLOSED_CHARACTERS", "U+1F1EA U+1F1F8", "\xF0\x9F\x87\xAA\xF0\x9F\x87\xB8", "regional indicator symbol letter e + regional indicator symbol letter s",
+"TYPE_ENCLOSED_CHARACTERS", "U+1F1EE U+1F1F9", "\xF0\x9F\x87\xAE\xF0\x9F\x87\xB9", "regional indicator symbol letter i + regional indicator symbol letter t",
+"TYPE_ENCLOSED_CHARACTERS", "U+1F1FA U+1F1F8", "\xF0\x9F\x87\xBA\xF0\x9F\x87\xB8", "regional indicator symbol letter u + regional indicator symbol letter s",
+"TYPE_ENCLOSED_CHARACTERS", "U+1F1F7 U+1F1FA", "\xF0\x9F\x87\xB7\xF0\x9F\x87\xBA", "regional indicator symbol letter r + regional indicator symbol letter u",
+"TYPE_ENCLOSED_CHARACTERS", "U+1F201", "\xF0\x9F\x88\x81", "squared katakana koko",
+"TYPE_ENCLOSED_CHARACTERS", "U+1F202", "\xF0\x9F\x88\x82", "squared katakana sa",
+"TYPE_ENCLOSED_CHARACTERS", "U+1F21A", "\xF0\x9F\x88\x9A", "squared cjk unified ideograph-7121",
+"TYPE_ENCLOSED_CHARACTERS", "U+1F22F", "\xF0\x9F\x88\xAF", "squared cjk unified ideograph-6307",
+"TYPE_ENCLOSED_CHARACTERS", "U+1F232", "\xF0\x9F\x88\xB2", "squared cjk unified ideograph-7981",
+"TYPE_ENCLOSED_CHARACTERS", "U+1F233", "\xF0\x9F\x88\xB3", "squared cjk unified ideograph-7a7a",
+"TYPE_ENCLOSED_CHARACTERS", "U+1F234", "\xF0\x9F\x88\xB4", "squared cjk unified ideograph-5408",
+"TYPE_ENCLOSED_CHARACTERS", "U+1F235", "\xF0\x9F\x88\xB5", "squared cjk unified ideograph-6e80",
+"TYPE_ENCLOSED_CHARACTERS", "U+1F236", "\xF0\x9F\x88\xB6", "squared cjk unified ideograph-6709",
+"TYPE_ENCLOSED_CHARACTERS", "U+1F237", "\xF0\x9F\x88\xB7", "squared cjk unified ideograph-6708",
+"TYPE_ENCLOSED_CHARACTERS", "U+1F238", "\xF0\x9F\x88\xB8", "squared cjk unified ideograph-7533",
+"TYPE_ENCLOSED_CHARACTERS", "U+1F239", "\xF0\x9F\x88\xB9", "squared cjk unified ideograph-5272",
+"TYPE_ENCLOSED_CHARACTERS", "U+1F23A", "\xF0\x9F\x88\xBA", "squared cjk unified ideograph-55b6",
+"TYPE_ENCLOSED_CHARACTERS", "U+1F250", "\xF0\x9F\x89\x90", "circled ideograph advantage",
+"TYPE_ENCLOSED_CHARACTERS", "U+1F251", "\xF0\x9F\x89\x91", "circled ideograph accept",
+
+"TYPE_UNCATEGORIZED", "U+00A9", "\xC2\xA9", "copyright sign",
+"TYPE_UNCATEGORIZED", "U+00AE", "\xC2\xAE", "registered sign",
+"TYPE_UNCATEGORIZED", "U+203C", "\xE2\x80\xBC", "double exclamation mark",
+"TYPE_UNCATEGORIZED", "U+2049", "\xE2\x81\x89", "exclamation question mark",
+"TYPE_UNCATEGORIZED", "U+0038 U+20E3", "\x38\xE2\x83\xA3", "digit eight + combining enclosing keycap",
+"TYPE_UNCATEGORIZED", "U+0039 U+20E3", "\x39\xE2\x83\xA3", "digit nine + combining enclosing keycap",
+"TYPE_UNCATEGORIZED", "U+0037 U+20E3", "\x37\xE2\x83\xA3", "digit seven + combining enclosing keycap",
+"TYPE_UNCATEGORIZED", "U+0036 U+20E3", "\x36\xE2\x83\xA3", "digit six + combining enclosing keycap",
+"TYPE_UNCATEGORIZED", "U+0031 U+20E3", "\x31\xE2\x83\xA3", "digit one + combining enclosing keycap",
+"TYPE_UNCATEGORIZED", "U+0030 U+20E3", "\x30\xE2\x83\xA3", "digit zero + combining enclosing keycap",
+"TYPE_UNCATEGORIZED", "U+0032 U+20E3", "\x32\xE2\x83\xA3", "digit two + combining enclosing keycap",
+"TYPE_UNCATEGORIZED", "U+0033 U+20E3", "\x33\xE2\x83\xA3", "digit three + combining enclosing keycap",
+"TYPE_UNCATEGORIZED", "U+0035 U+20E3", "\x35\xE2\x83\xA3", "digit five + combining enclosing keycap",
+"TYPE_UNCATEGORIZED", "U+0034 U+20E3", "\x34\xE2\x83\xA3", "digit four + combining enclosing keycap",
+"TYPE_UNCATEGORIZED", "U+0023 U+20E3", "\x23\xE2\x83\xA3", "number sign + combining enclosing keycap",
+"TYPE_UNCATEGORIZED", "U+2122", "\xE2\x84\xA2", "trade mark sign",
+"TYPE_UNCATEGORIZED", "U+2139", "\xE2\x84\xB9", "information source",
+"TYPE_UNCATEGORIZED", "U+2194", "\xE2\x86\x94", "left right arrow",
+"TYPE_UNCATEGORIZED", "U+2195", "\xE2\x86\x95", "up down arrow",
+"TYPE_UNCATEGORIZED", "U+2196", "\xE2\x86\x96", "north west arrow",
+"TYPE_UNCATEGORIZED", "U+2197", "\xE2\x86\x97", "north east arrow",
+"TYPE_UNCATEGORIZED", "U+2198", "\xE2\x86\x98", "south east arrow",
+"TYPE_UNCATEGORIZED", "U+2199", "\xE2\x86\x99", "south west arrow",
+"TYPE_UNCATEGORIZED", "U+21A9", "\xE2\x86\xA9", "leftwards arrow with hook",
+"TYPE_UNCATEGORIZED", "U+21AA", "\xE2\x86\xAA", "rightwards arrow with hook",
+"TYPE_UNCATEGORIZED", "U+231A", "\xE2\x8C\x9A", "watch",
+"TYPE_UNCATEGORIZED", "U+231B", "\xE2\x8C\x9B", "hourglass",
+"TYPE_UNCATEGORIZED", "U+23E9", "\xE2\x8F\xA9", "black right-pointing double triangle",
+"TYPE_UNCATEGORIZED", "U+23EA", "\xE2\x8F\xAA", "black left-pointing double triangle",
+"TYPE_UNCATEGORIZED", "U+23EB", "\xE2\x8F\xAB", "black up-pointing double triangle",
+"TYPE_UNCATEGORIZED", "U+23EC", "\xE2\x8F\xAC", "black down-pointing double triangle",
+"TYPE_UNCATEGORIZED", "U+23F0", "\xE2\x8F\xB0", "alarm clock",
+"TYPE_UNCATEGORIZED", "U+23F3", "\xE2\x8F\xB3", "hourglass with flowing sand",
+"TYPE_UNCATEGORIZED", "U+25AA", "\xE2\x96\xAA", "black small square",
+"TYPE_UNCATEGORIZED", "U+25AB", "\xE2\x96\xAB", "white small square",
+"TYPE_UNCATEGORIZED", "U+25B6", "\xE2\x96\xB6", "black right-pointing triangle",
+"TYPE_UNCATEGORIZED", "U+25C0", "\xE2\x97\x80", "black left-pointing triangle",
+"TYPE_UNCATEGORIZED", "U+25FB", "\xE2\x97\xBB", "white medium square",
+"TYPE_UNCATEGORIZED", "U+25FC", "\xE2\x97\xBC", "black medium square",
+"TYPE_UNCATEGORIZED", "U+25FD", "\xE2\x97\xBD", "white medium small square",
+"TYPE_UNCATEGORIZED", "U+25FE", "\xE2\x97\xBE", "black medium small square",
+"TYPE_UNCATEGORIZED", "U+2600", "\xE2\x98\x80", "black sun with rays",
+"TYPE_UNCATEGORIZED", "U+2601", "\xE2\x98\x81", "cloud",
+"TYPE_UNCATEGORIZED", "U+260E", "\xE2\x98\x8E", "black telephone",
+"TYPE_UNCATEGORIZED", "U+2611", "\xE2\x98\x91", "ballot box with check",
+"TYPE_UNCATEGORIZED", "U+2614", "\xE2\x98\x94", "umbrella with rain drops",
+"TYPE_UNCATEGORIZED", "U+2615", "\xE2\x98\x95", "hot beverage",
+"TYPE_UNCATEGORIZED", "U+261D", "\xE2\x98\x9D", "white up pointing index",
+"TYPE_UNCATEGORIZED", "U+263A", "\xE2\x98\xBA", "white smiling face",
+"TYPE_UNCATEGORIZED", "U+2648", "\xE2\x99\x88", "aries",
+"TYPE_UNCATEGORIZED", "U+2649", "\xE2\x99\x89", "taurus",
+"TYPE_UNCATEGORIZED", "U+264A", "\xE2\x99\x8A", "gemini",
+"TYPE_UNCATEGORIZED", "U+264B", "\xE2\x99\x8B", "cancer",
+"TYPE_UNCATEGORIZED", "U+264C", "\xE2\x99\x8C", "leo",
+"TYPE_UNCATEGORIZED", "U+264D", "\xE2\x99\x8D", "virgo",
+"TYPE_UNCATEGORIZED", "U+264E", "\xE2\x99\x8E", "libra",
+"TYPE_UNCATEGORIZED", "U+264F", "\xE2\x99\x8F", "scorpius",
+"TYPE_UNCATEGORIZED", "U+2650", "\xE2\x99\x90", "sagittarius",
+"TYPE_UNCATEGORIZED", "U+2651", "\xE2\x99\x91", "capricorn",
+"TYPE_UNCATEGORIZED", "U+2652", "\xE2\x99\x92", "aquarius",
+"TYPE_UNCATEGORIZED", "U+2653", "\xE2\x99\x93", "pisces",
+"TYPE_UNCATEGORIZED", "U+2660", "\xE2\x99\xA0", "black spade suit",
+"TYPE_UNCATEGORIZED", "U+2663", "\xE2\x99\xA3", "black club suit",
+"TYPE_UNCATEGORIZED", "U+2665", "\xE2\x99\xA5", "black heart suit",
+"TYPE_UNCATEGORIZED", "U+2666", "\xE2\x99\xA6", "black diamond suit",
+"TYPE_UNCATEGORIZED", "U+2668", "\xE2\x99\xA8", "hot springs",
+"TYPE_UNCATEGORIZED", "U+267B", "\xE2\x99\xBB", "black universal recycling symbol",
+"TYPE_UNCATEGORIZED", "U+267F", "\xE2\x99\xBF", "wheelchair symbol",
+"TYPE_UNCATEGORIZED", "U+2693", "\xE2\x9A\x93", "anchor",
+"TYPE_UNCATEGORIZED", "U+26A0", "\xE2\x9A\xA0", "warning sign",
+"TYPE_UNCATEGORIZED", "U+26A1", "\xE2\x9A\xA1", "high voltage sign",
+"TYPE_UNCATEGORIZED", "U+26AA", "\xE2\x9A\xAA", "medium white circle",
+"TYPE_UNCATEGORIZED", "U+26AB", "\xE2\x9A\xAB", "medium black circle",
+"TYPE_UNCATEGORIZED", "U+26BD", "\xE2\x9A\xBD", "soccer ball",
+"TYPE_UNCATEGORIZED", "U+26BE", "\xE2\x9A\xBE", "baseball",
+"TYPE_UNCATEGORIZED", "U+26C4", "\xE2\x9B\x84", "snowman without snow",
+"TYPE_UNCATEGORIZED", "U+26C5", "\xE2\x9B\x85", "sun behind cloud",
+"TYPE_UNCATEGORIZED", "U+26CE", "\xE2\x9B\x8E", "ophiuchus",
+"TYPE_UNCATEGORIZED", "U+26D4", "\xE2\x9B\x94", "no entry",
+"TYPE_UNCATEGORIZED", "U+26EA", "\xE2\x9B\xAA", "church",
+"TYPE_UNCATEGORIZED", "U+26F2", "\xE2\x9B\xB2", "fountain",
+"TYPE_UNCATEGORIZED", "U+26F3", "\xE2\x9B\xB3", "flag in hole",
+"TYPE_UNCATEGORIZED", "U+26F5", "\xE2\x9B\xB5", "sailboat",
+"TYPE_UNCATEGORIZED", "U+26FA", "\xE2\x9B\xBA", "tent",
+"TYPE_UNCATEGORIZED", "U+26FD", "\xE2\x9B\xBD", "fuel pump",
+"TYPE_UNCATEGORIZED", "U+2934", "\xE2\xA4\xB4", "arrow pointing rightwards then curving upwards",
+"TYPE_UNCATEGORIZED", "U+2935", "\xE2\xA4\xB5", "arrow pointing rightwards then curving downwards",
+"TYPE_UNCATEGORIZED", "U+2B05", "\xE2\xAC\x85", "leftwards black arrow",
+"TYPE_UNCATEGORIZED", "U+2B06", "\xE2\xAC\x86", "upwards black arrow",
+"TYPE_UNCATEGORIZED", "U+2B07", "\xE2\xAC\x87", "downwards black arrow",
+"TYPE_UNCATEGORIZED", "U+2B1B", "\xE2\xAC\x9B", "black large square",
+"TYPE_UNCATEGORIZED", "U+2B1C", "\xE2\xAC\x9C", "white large square",
+"TYPE_UNCATEGORIZED", "U+2B50", "\xE2\xAD\x90", "white medium star",
+"TYPE_UNCATEGORIZED", "U+2B55", "\xE2\xAD\x95", "heavy large circle",
+"TYPE_UNCATEGORIZED", "U+3030", "\xE3\x80\xB0", "wavy dash",
+"TYPE_UNCATEGORIZED", "U+303D", "\xE3\x80\xBD", "part alternation mark",
+"TYPE_UNCATEGORIZED", "U+3297", "\xE3\x8A\x97", "circled ideograph congratulation",
+"TYPE_UNCATEGORIZED", "U+3299", "\xE3\x8A\x99", "circled ideograph secret",
+"TYPE_UNCATEGORIZED", "U+1F004", "\xF0\x9F\x80\x84", "mahjong tile red dragon",
+"TYPE_UNCATEGORIZED", "U+1F0CF", "\xF0\x9F\x83\x8F", "playing card black joker",
+"TYPE_UNCATEGORIZED", "U+1F300", "\xF0\x9F\x8C\x80", "cyclone",
+"TYPE_UNCATEGORIZED", "U+1F301", "\xF0\x9F\x8C\x81", "foggy",
+"TYPE_UNCATEGORIZED", "U+1F302", "\xF0\x9F\x8C\x82", "closed umbrella",
+"TYPE_UNCATEGORIZED", "U+1F303", "\xF0\x9F\x8C\x83", "night with stars",
+"TYPE_UNCATEGORIZED", "U+1F304", "\xF0\x9F\x8C\x84", "sunrise over mountains",
+"TYPE_UNCATEGORIZED", "U+1F305", "\xF0\x9F\x8C\x85", "sunrise",
+"TYPE_UNCATEGORIZED", "U+1F306", "\xF0\x9F\x8C\x86", "cityscape at dusk",
+"TYPE_UNCATEGORIZED", "U+1F307", "\xF0\x9F\x8C\x87", "sunset over buildings",
+"TYPE_UNCATEGORIZED", "U+1F308", "\xF0\x9F\x8C\x88", "rainbow",
+"TYPE_UNCATEGORIZED", "U+1F309", "\xF0\x9F\x8C\x89", "bridge at night",
+"TYPE_UNCATEGORIZED", "U+1F30A", "\xF0\x9F\x8C\x8A", "water wave",
+"TYPE_UNCATEGORIZED", "U+1F30B", "\xF0\x9F\x8C\x8B", "volcano",
+"TYPE_UNCATEGORIZED", "U+1F30C", "\xF0\x9F\x8C\x8C", "milky way",
+"TYPE_UNCATEGORIZED", "U+1F30F", "\xF0\x9F\x8C\x8F", "earth globe asia-australia",
+"TYPE_UNCATEGORIZED", "U+1F311", "\xF0\x9F\x8C\x91", "new moon symbol",
+"TYPE_UNCATEGORIZED", "U+1F313", "\xF0\x9F\x8C\x93", "first quarter moon symbol",
+"TYPE_UNCATEGORIZED", "U+1F314", "\xF0\x9F\x8C\x94", "waxing gibbous moon symbol",
+"TYPE_UNCATEGORIZED", "U+1F315", "\xF0\x9F\x8C\x95", "full moon symbol",
+"TYPE_UNCATEGORIZED", "U+1F319", "\xF0\x9F\x8C\x99", "crescent moon",
+"TYPE_UNCATEGORIZED", "U+1F31B", "\xF0\x9F\x8C\x9B", "first quarter moon with face",
+"TYPE_UNCATEGORIZED", "U+1F31F", "\xF0\x9F\x8C\x9F", "glowing star",
+"TYPE_UNCATEGORIZED", "U+1F320", "\xF0\x9F\x8C\xA0", "shooting star",
+"TYPE_UNCATEGORIZED", "U+1F330", "\xF0\x9F\x8C\xB0", "chestnut",
+"TYPE_UNCATEGORIZED", "U+1F331", "\xF0\x9F\x8C\xB1", "seedling",
+"TYPE_UNCATEGORIZED", "U+1F334", "\xF0\x9F\x8C\xB4", "palm tree",
+"TYPE_UNCATEGORIZED", "U+1F335", "\xF0\x9F\x8C\xB5", "cactus",
+"TYPE_UNCATEGORIZED", "U+1F337", "\xF0\x9F\x8C\xB7", "tulip",
+"TYPE_UNCATEGORIZED", "U+1F338", "\xF0\x9F\x8C\xB8", "cherry blossom",
+"TYPE_UNCATEGORIZED", "U+1F339", "\xF0\x9F\x8C\xB9", "rose",
+"TYPE_UNCATEGORIZED", "U+1F33A", "\xF0\x9F\x8C\xBA", "hibiscus",
+"TYPE_UNCATEGORIZED", "U+1F33B", "\xF0\x9F\x8C\xBB", "sunflower",
+"TYPE_UNCATEGORIZED", "U+1F33C", "\xF0\x9F\x8C\xBC", "blossom",
+"TYPE_UNCATEGORIZED", "U+1F33D", "\xF0\x9F\x8C\xBD", "ear of maize",
+"TYPE_UNCATEGORIZED", "U+1F33E", "\xF0\x9F\x8C\xBE", "ear of rice",
+"TYPE_UNCATEGORIZED", "U+1F33F", "\xF0\x9F\x8C\xBF", "herb",
+"TYPE_UNCATEGORIZED", "U+1F340", "\xF0\x9F\x8D\x80", "four leaf clover",
+"TYPE_UNCATEGORIZED", "U+1F341", "\xF0\x9F\x8D\x81", "maple leaf",
+"TYPE_UNCATEGORIZED", "U+1F342", "\xF0\x9F\x8D\x82", "fallen leaf",
+"TYPE_UNCATEGORIZED", "U+1F343", "\xF0\x9F\x8D\x83", "leaf fluttering in wind",
+"TYPE_UNCATEGORIZED", "U+1F344", "\xF0\x9F\x8D\x84", "mushroom",
+"TYPE_UNCATEGORIZED", "U+1F345", "\xF0\x9F\x8D\x85", "tomato",
+"TYPE_UNCATEGORIZED", "U+1F346", "\xF0\x9F\x8D\x86", "aubergine",
+"TYPE_UNCATEGORIZED", "U+1F347", "\xF0\x9F\x8D\x87", "grapes",
+"TYPE_UNCATEGORIZED", "U+1F348", "\xF0\x9F\x8D\x88", "melon",
+"TYPE_UNCATEGORIZED", "U+1F349", "\xF0\x9F\x8D\x89", "watermelon",
+"TYPE_UNCATEGORIZED", "U+1F34A", "\xF0\x9F\x8D\x8A", "tangerine",
+"TYPE_UNCATEGORIZED", "U+1F34C", "\xF0\x9F\x8D\x8C", "banana",
+"TYPE_UNCATEGORIZED", "U+1F34D", "\xF0\x9F\x8D\x8D", "pineapple",
+"TYPE_UNCATEGORIZED", "U+1F34E", "\xF0\x9F\x8D\x8E", "red apple",
+"TYPE_UNCATEGORIZED", "U+1F34F", "\xF0\x9F\x8D\x8F", "green apple",
+"TYPE_UNCATEGORIZED", "U+1F351", "\xF0\x9F\x8D\x91", "peach",
+"TYPE_UNCATEGORIZED", "U+1F352", "\xF0\x9F\x8D\x92", "cherries",
+"TYPE_UNCATEGORIZED", "U+1F353", "\xF0\x9F\x8D\x93", "strawberry",
+"TYPE_UNCATEGORIZED", "U+1F354", "\xF0\x9F\x8D\x94", "hamburger",
+"TYPE_UNCATEGORIZED", "U+1F355", "\xF0\x9F\x8D\x95", "slice of pizza",
+"TYPE_UNCATEGORIZED", "U+1F356", "\xF0\x9F\x8D\x96", "meat on bone",
+"TYPE_UNCATEGORIZED", "U+1F357", "\xF0\x9F\x8D\x97", "poultry leg",
+"TYPE_UNCATEGORIZED", "U+1F358", "\xF0\x9F\x8D\x98", "rice cracker",
+"TYPE_UNCATEGORIZED", "U+1F359", "\xF0\x9F\x8D\x99", "rice ball",
+"TYPE_UNCATEGORIZED", "U+1F35A", "\xF0\x9F\x8D\x9A", "cooked rice",
+"TYPE_UNCATEGORIZED", "U+1F35B", "\xF0\x9F\x8D\x9B", "curry and rice",
+"TYPE_UNCATEGORIZED", "U+1F35C", "\xF0\x9F\x8D\x9C", "steaming bowl",
+"TYPE_UNCATEGORIZED", "U+1F35D", "\xF0\x9F\x8D\x9D", "spaghetti",
+"TYPE_UNCATEGORIZED", "U+1F35E", "\xF0\x9F\x8D\x9E", "bread",
+"TYPE_UNCATEGORIZED", "U+1F35F", "\xF0\x9F\x8D\x9F", "french fries",
+"TYPE_UNCATEGORIZED", "U+1F360", "\xF0\x9F\x8D\xA0", "roasted sweet potato",
+"TYPE_UNCATEGORIZED", "U+1F361", "\xF0\x9F\x8D\xA1", "dango",
+"TYPE_UNCATEGORIZED", "U+1F362", "\xF0\x9F\x8D\xA2", "oden",
+"TYPE_UNCATEGORIZED", "U+1F363", "\xF0\x9F\x8D\xA3", "sushi",
+"TYPE_UNCATEGORIZED", "U+1F364", "\xF0\x9F\x8D\xA4", "fried shrimp",
+"TYPE_UNCATEGORIZED", "U+1F365", "\xF0\x9F\x8D\xA5", "fish cake with swirl design",
+"TYPE_UNCATEGORIZED", "U+1F366", "\xF0\x9F\x8D\xA6", "soft ice cream",
+"TYPE_UNCATEGORIZED", "U+1F367", "\xF0\x9F\x8D\xA7", "shaved ice",
+"TYPE_UNCATEGORIZED", "U+1F368", "\xF0\x9F\x8D\xA8", "ice cream",
+"TYPE_UNCATEGORIZED", "U+1F369", "\xF0\x9F\x8D\xA9", "doughnut",
+"TYPE_UNCATEGORIZED", "U+1F36A", "\xF0\x9F\x8D\xAA", "cookie",
+"TYPE_UNCATEGORIZED", "U+1F36B", "\xF0\x9F\x8D\xAB", "chocolate bar",
+"TYPE_UNCATEGORIZED", "U+1F36C", "\xF0\x9F\x8D\xAC", "candy",
+"TYPE_UNCATEGORIZED", "U+1F36D", "\xF0\x9F\x8D\xAD", "lollipop",
+"TYPE_UNCATEGORIZED", "U+1F36E", "\xF0\x9F\x8D\xAE", "custard",
+"TYPE_UNCATEGORIZED", "U+1F36F", "\xF0\x9F\x8D\xAF", "honey pot",
+"TYPE_UNCATEGORIZED", "U+1F370", "\xF0\x9F\x8D\xB0", "shortcake",
+"TYPE_UNCATEGORIZED", "U+1F371", "\xF0\x9F\x8D\xB1", "bento box",
+"TYPE_UNCATEGORIZED", "U+1F372", "\xF0\x9F\x8D\xB2", "pot of food",
+"TYPE_UNCATEGORIZED", "U+1F373", "\xF0\x9F\x8D\xB3", "cooking",
+"TYPE_UNCATEGORIZED", "U+1F374", "\xF0\x9F\x8D\xB4", "fork and knife",
+"TYPE_UNCATEGORIZED", "U+1F375", "\xF0\x9F\x8D\xB5", "teacup without handle",
+"TYPE_UNCATEGORIZED", "U+1F376", "\xF0\x9F\x8D\xB6", "sake bottle and cup",
+"TYPE_UNCATEGORIZED", "U+1F377", "\xF0\x9F\x8D\xB7", "wine glass",
+"TYPE_UNCATEGORIZED", "U+1F378", "\xF0\x9F\x8D\xB8", "cocktail glass",
+"TYPE_UNCATEGORIZED", "U+1F379", "\xF0\x9F\x8D\xB9", "tropical drink",
+"TYPE_UNCATEGORIZED", "U+1F37A", "\xF0\x9F\x8D\xBA", "beer mug",
+"TYPE_UNCATEGORIZED", "U+1F37B", "\xF0\x9F\x8D\xBB", "clinking beer mugs",
+"TYPE_UNCATEGORIZED", "U+1F380", "\xF0\x9F\x8E\x80", "ribbon",
+"TYPE_UNCATEGORIZED", "U+1F381", "\xF0\x9F\x8E\x81", "wrapped present",
+"TYPE_UNCATEGORIZED", "U+1F382", "\xF0\x9F\x8E\x82", "birthday cake",
+"TYPE_UNCATEGORIZED", "U+1F383", "\xF0\x9F\x8E\x83", "jack-o-lantern",
+"TYPE_UNCATEGORIZED", "U+1F384", "\xF0\x9F\x8E\x84", "christmas tree",
+"TYPE_UNCATEGORIZED", "U+1F385", "\xF0\x9F\x8E\x85", "father christmas",
+"TYPE_UNCATEGORIZED", "U+1F386", "\xF0\x9F\x8E\x86", "fireworks",
+"TYPE_UNCATEGORIZED", "U+1F387", "\xF0\x9F\x8E\x87", "firework sparkler",
+"TYPE_UNCATEGORIZED", "U+1F388", "\xF0\x9F\x8E\x88", "balloon",
+"TYPE_UNCATEGORIZED", "U+1F389", "\xF0\x9F\x8E\x89", "party popper",
+"TYPE_UNCATEGORIZED", "U+1F38A", "\xF0\x9F\x8E\x8A", "confetti ball",
+"TYPE_UNCATEGORIZED", "U+1F38B", "\xF0\x9F\x8E\x8B", "tanabata tree",
+"TYPE_UNCATEGORIZED", "U+1F38C", "\xF0\x9F\x8E\x8C", "crossed flags",
+"TYPE_UNCATEGORIZED", "U+1F38D", "\xF0\x9F\x8E\x8D", "pine decoration",
+"TYPE_UNCATEGORIZED", "U+1F38E", "\xF0\x9F\x8E\x8E", "japanese dolls",
+"TYPE_UNCATEGORIZED", "U+1F38F", "\xF0\x9F\x8E\x8F", "carp streamer",
+"TYPE_UNCATEGORIZED", "U+1F390", "\xF0\x9F\x8E\x90", "wind chime",
+"TYPE_UNCATEGORIZED", "U+1F391", "\xF0\x9F\x8E\x91", "moon viewing ceremony",
+"TYPE_UNCATEGORIZED", "U+1F392", "\xF0\x9F\x8E\x92", "school satchel",
+"TYPE_UNCATEGORIZED", "U+1F393", "\xF0\x9F\x8E\x93", "graduation cap",
+"TYPE_UNCATEGORIZED", "U+1F3A0", "\xF0\x9F\x8E\xA0", "carousel horse",
+"TYPE_UNCATEGORIZED", "U+1F3A1", "\xF0\x9F\x8E\xA1", "ferris wheel",
+"TYPE_UNCATEGORIZED", "U+1F3A2", "\xF0\x9F\x8E\xA2", "roller coaster",
+"TYPE_UNCATEGORIZED", "U+1F3A3", "\xF0\x9F\x8E\xA3", "fishing pole and fish",
+"TYPE_UNCATEGORIZED", "U+1F3A4", "\xF0\x9F\x8E\xA4", "microphone",
+"TYPE_UNCATEGORIZED", "U+1F3A5", "\xF0\x9F\x8E\xA5", "movie camera",
+"TYPE_UNCATEGORIZED", "U+1F3A6", "\xF0\x9F\x8E\xA6", "cinema",
+"TYPE_UNCATEGORIZED", "U+1F3A7", "\xF0\x9F\x8E\xA7", "headphone",
+"TYPE_UNCATEGORIZED", "U+1F3A8", "\xF0\x9F\x8E\xA8", "artist palette",
+"TYPE_UNCATEGORIZED", "U+1F3A9", "\xF0\x9F\x8E\xA9", "top hat",
+"TYPE_UNCATEGORIZED", "U+1F3AA", "\xF0\x9F\x8E\xAA", "circus tent",
+"TYPE_UNCATEGORIZED", "U+1F3AB", "\xF0\x9F\x8E\xAB", "ticket",
+"TYPE_UNCATEGORIZED", "U+1F3AC", "\xF0\x9F\x8E\xAC", "clapper board",
+"TYPE_UNCATEGORIZED", "U+1F3AD", "\xF0\x9F\x8E\xAD", "performing arts",
+"TYPE_UNCATEGORIZED", "U+1F3AE", "\xF0\x9F\x8E\xAE", "video game",
+"TYPE_UNCATEGORIZED", "U+1F3AF", "\xF0\x9F\x8E\xAF", "direct hit",
+"TYPE_UNCATEGORIZED", "U+1F3B0", "\xF0\x9F\x8E\xB0", "slot machine",
+"TYPE_UNCATEGORIZED", "U+1F3B1", "\xF0\x9F\x8E\xB1", "billiards",
+"TYPE_UNCATEGORIZED", "U+1F3B2", "\xF0\x9F\x8E\xB2", "game die",
+"TYPE_UNCATEGORIZED", "U+1F3B3", "\xF0\x9F\x8E\xB3", "bowling",
+"TYPE_UNCATEGORIZED", "U+1F3B4", "\xF0\x9F\x8E\xB4", "flower playing cards",
+"TYPE_UNCATEGORIZED", "U+1F3B5", "\xF0\x9F\x8E\xB5", "musical note",
+"TYPE_UNCATEGORIZED", "U+1F3B6", "\xF0\x9F\x8E\xB6", "multiple musical notes",
+"TYPE_UNCATEGORIZED", "U+1F3B7", "\xF0\x9F\x8E\xB7", "saxophone",
+"TYPE_UNCATEGORIZED", "U+1F3B8", "\xF0\x9F\x8E\xB8", "guitar",
+"TYPE_UNCATEGORIZED", "U+1F3B9", "\xF0\x9F\x8E\xB9", "musical keyboard",
+"TYPE_UNCATEGORIZED", "U+1F3BA", "\xF0\x9F\x8E\xBA", "trumpet",
+"TYPE_UNCATEGORIZED", "U+1F3BB", "\xF0\x9F\x8E\xBB", "violin",
+"TYPE_UNCATEGORIZED", "U+1F3BC", "\xF0\x9F\x8E\xBC", "musical score",
+"TYPE_UNCATEGORIZED", "U+1F3BD", "\xF0\x9F\x8E\xBD", "running shirt with sash",
+"TYPE_UNCATEGORIZED", "U+1F3BE", "\xF0\x9F\x8E\xBE", "tennis racquet and ball",
+"TYPE_UNCATEGORIZED", "U+1F3BF", "\xF0\x9F\x8E\xBF", "ski and ski boot",
+"TYPE_UNCATEGORIZED", "U+1F3C0", "\xF0\x9F\x8F\x80", "basketball and hoop",
+"TYPE_UNCATEGORIZED", "U+1F3C1", "\xF0\x9F\x8F\x81", "chequered flag",
+"TYPE_UNCATEGORIZED", "U+1F3C2", "\xF0\x9F\x8F\x82", "snowboarder",
+"TYPE_UNCATEGORIZED", "U+1F3C3", "\xF0\x9F\x8F\x83", "runner",
+"TYPE_UNCATEGORIZED", "U+1F3C4", "\xF0\x9F\x8F\x84", "surfer",
+"TYPE_UNCATEGORIZED", "U+1F3C6", "\xF0\x9F\x8F\x86", "trophy",
+"TYPE_UNCATEGORIZED", "U+1F3C8", "\xF0\x9F\x8F\x88", "american football",
+"TYPE_UNCATEGORIZED", "U+1F3CA", "\xF0\x9F\x8F\x8A", "swimmer",
+"TYPE_UNCATEGORIZED", "U+1F3E0", "\xF0\x9F\x8F\xA0", "house building",
+"TYPE_UNCATEGORIZED", "U+1F3E1", "\xF0\x9F\x8F\xA1", "house with garden",
+"TYPE_UNCATEGORIZED", "U+1F3E2", "\xF0\x9F\x8F\xA2", "office building",
+"TYPE_UNCATEGORIZED", "U+1F3E3", "\xF0\x9F\x8F\xA3", "japanese post office",
+"TYPE_UNCATEGORIZED", "U+1F3E5", "\xF0\x9F\x8F\xA5", "hospital",
+"TYPE_UNCATEGORIZED", "U+1F3E6", "\xF0\x9F\x8F\xA6", "bank",
+"TYPE_UNCATEGORIZED", "U+1F3E7", "\xF0\x9F\x8F\xA7", "automated teller machine",
+"TYPE_UNCATEGORIZED", "U+1F3E8", "\xF0\x9F\x8F\xA8", "hotel",
+"TYPE_UNCATEGORIZED", "U+1F3E9", "\xF0\x9F\x8F\xA9", "love hotel",
+"TYPE_UNCATEGORIZED", "U+1F3EA", "\xF0\x9F\x8F\xAA", "convenience store",
+"TYPE_UNCATEGORIZED", "U+1F3EB", "\xF0\x9F\x8F\xAB", "school",
+"TYPE_UNCATEGORIZED", "U+1F3EC", "\xF0\x9F\x8F\xAC", "department store",
+"TYPE_UNCATEGORIZED", "U+1F3ED", "\xF0\x9F\x8F\xAD", "factory",
+"TYPE_UNCATEGORIZED", "U+1F3EE", "\xF0\x9F\x8F\xAE", "izakaya lantern",
+"TYPE_UNCATEGORIZED", "U+1F3EF", "\xF0\x9F\x8F\xAF", "japanese castle",
+"TYPE_UNCATEGORIZED", "U+1F3F0", "\xF0\x9F\x8F\xB0", "european castle",
+"TYPE_UNCATEGORIZED", "U+1F40C", "\xF0\x9F\x90\x8C", "snail",
+"TYPE_UNCATEGORIZED", "U+1F40D", "\xF0\x9F\x90\x8D", "snake",
+"TYPE_UNCATEGORIZED", "U+1F40E", "\xF0\x9F\x90\x8E", "horse",
+"TYPE_UNCATEGORIZED", "U+1F411", "\xF0\x9F\x90\x91", "sheep",
+"TYPE_UNCATEGORIZED", "U+1F412", "\xF0\x9F\x90\x92", "monkey",
+"TYPE_UNCATEGORIZED", "U+1F414", "\xF0\x9F\x90\x94", "chicken",
+"TYPE_UNCATEGORIZED", "U+1F417", "\xF0\x9F\x90\x97", "boar",
+"TYPE_UNCATEGORIZED", "U+1F418", "\xF0\x9F\x90\x98", "elephant",
+"TYPE_UNCATEGORIZED", "U+1F419", "\xF0\x9F\x90\x99", "octopus",
+"TYPE_UNCATEGORIZED", "U+1F41A", "\xF0\x9F\x90\x9A", "spiral shell",
+"TYPE_UNCATEGORIZED", "U+1F41B", "\xF0\x9F\x90\x9B", "bug",
+"TYPE_UNCATEGORIZED", "U+1F41C", "\xF0\x9F\x90\x9C", "ant",
+"TYPE_UNCATEGORIZED", "U+1F41D", "\xF0\x9F\x90\x9D", "honeybee",
+"TYPE_UNCATEGORIZED", "U+1F41E", "\xF0\x9F\x90\x9E", "lady beetle",
+"TYPE_UNCATEGORIZED", "U+1F41F", "\xF0\x9F\x90\x9F", "fish",
+"TYPE_UNCATEGORIZED", "U+1F420", "\xF0\x9F\x90\xA0", "tropical fish",
+"TYPE_UNCATEGORIZED", "U+1F421", "\xF0\x9F\x90\xA1", "blowfish",
+"TYPE_UNCATEGORIZED", "U+1F422", "\xF0\x9F\x90\xA2", "turtle",
+"TYPE_UNCATEGORIZED", "U+1F423", "\xF0\x9F\x90\xA3", "hatching chick",
+"TYPE_UNCATEGORIZED", "U+1F424", "\xF0\x9F\x90\xA4", "baby chick",
+"TYPE_UNCATEGORIZED", "U+1F425", "\xF0\x9F\x90\xA5", "front-facing baby chick",
+"TYPE_UNCATEGORIZED", "U+1F426", "\xF0\x9F\x90\xA6", "bird",
+"TYPE_UNCATEGORIZED", "U+1F427", "\xF0\x9F\x90\xA7", "penguin",
+"TYPE_UNCATEGORIZED", "U+1F428", "\xF0\x9F\x90\xA8", "koala",
+"TYPE_UNCATEGORIZED", "U+1F429", "\xF0\x9F\x90\xA9", "poodle",
+"TYPE_UNCATEGORIZED", "U+1F42B", "\xF0\x9F\x90\xAB", "bactrian camel",
+"TYPE_UNCATEGORIZED", "U+1F42C", "\xF0\x9F\x90\xAC", "dolphin",
+"TYPE_UNCATEGORIZED", "U+1F42D", "\xF0\x9F\x90\xAD", "mouse face",
+"TYPE_UNCATEGORIZED", "U+1F42E", "\xF0\x9F\x90\xAE", "cow face",
+"TYPE_UNCATEGORIZED", "U+1F42F", "\xF0\x9F\x90\xAF", "tiger face",
+"TYPE_UNCATEGORIZED", "U+1F430", "\xF0\x9F\x90\xB0", "rabbit face",
+"TYPE_UNCATEGORIZED", "U+1F431", "\xF0\x9F\x90\xB1", "cat face",
+"TYPE_UNCATEGORIZED", "U+1F432", "\xF0\x9F\x90\xB2", "dragon face",
+"TYPE_UNCATEGORIZED", "U+1F433", "\xF0\x9F\x90\xB3", "spouting whale",
+"TYPE_UNCATEGORIZED", "U+1F434", "\xF0\x9F\x90\xB4", "horse face",
+"TYPE_UNCATEGORIZED", "U+1F435", "\xF0\x9F\x90\xB5", "monkey face",
+"TYPE_UNCATEGORIZED", "U+1F436", "\xF0\x9F\x90\xB6", "dog face",
+"TYPE_UNCATEGORIZED", "U+1F437", "\xF0\x9F\x90\xB7", "pig face",
+"TYPE_UNCATEGORIZED", "U+1F438", "\xF0\x9F\x90\xB8", "frog face",
+"TYPE_UNCATEGORIZED", "U+1F439", "\xF0\x9F\x90\xB9", "hamster face",
+"TYPE_UNCATEGORIZED", "U+1F43A", "\xF0\x9F\x90\xBA", "wolf face",
+"TYPE_UNCATEGORIZED", "U+1F43B", "\xF0\x9F\x90\xBB", "bear face",
+"TYPE_UNCATEGORIZED", "U+1F43C", "\xF0\x9F\x90\xBC", "panda face",
+"TYPE_UNCATEGORIZED", "U+1F43D", "\xF0\x9F\x90\xBD", "pig nose",
+"TYPE_UNCATEGORIZED", "U+1F43E", "\xF0\x9F\x90\xBE", "paw prints",
+"TYPE_UNCATEGORIZED", "U+1F440", "\xF0\x9F\x91\x80", "eyes",
+"TYPE_UNCATEGORIZED", "U+1F442", "\xF0\x9F\x91\x82", "ear",
+"TYPE_UNCATEGORIZED", "U+1F443", "\xF0\x9F\x91\x83", "nose",
+"TYPE_UNCATEGORIZED", "U+1F444", "\xF0\x9F\x91\x84", "mouth",
+"TYPE_UNCATEGORIZED", "U+1F445", "\xF0\x9F\x91\x85", "tongue",
+"TYPE_UNCATEGORIZED", "U+1F446", "\xF0\x9F\x91\x86", "white up pointing backhand index",
+"TYPE_UNCATEGORIZED", "U+1F447", "\xF0\x9F\x91\x87", "white down pointing backhand index",
+"TYPE_UNCATEGORIZED", "U+1F448", "\xF0\x9F\x91\x88", "white left pointing backhand index",
+"TYPE_UNCATEGORIZED", "U+1F449", "\xF0\x9F\x91\x89", "white right pointing backhand index",
+"TYPE_UNCATEGORIZED", "U+1F44A", "\xF0\x9F\x91\x8A", "fisted hand sign",
+"TYPE_UNCATEGORIZED", "U+1F44B", "\xF0\x9F\x91\x8B", "waving hand sign",
+"TYPE_UNCATEGORIZED", "U+1F44C", "\xF0\x9F\x91\x8C", "ok hand sign",
+"TYPE_UNCATEGORIZED", "U+1F44D", "\xF0\x9F\x91\x8D", "thumbs up sign",
+"TYPE_UNCATEGORIZED", "U+1F44E", "\xF0\x9F\x91\x8E", "thumbs down sign",
+"TYPE_UNCATEGORIZED", "U+1F44F", "\xF0\x9F\x91\x8F", "clapping hands sign",
+"TYPE_UNCATEGORIZED", "U+1F450", "\xF0\x9F\x91\x90", "open hands sign",
+"TYPE_UNCATEGORIZED", "U+1F451", "\xF0\x9F\x91\x91", "crown",
+"TYPE_UNCATEGORIZED", "U+1F452", "\xF0\x9F\x91\x92", "womans hat",
+"TYPE_UNCATEGORIZED", "U+1F453", "\xF0\x9F\x91\x93", "eyeglasses",
+"TYPE_UNCATEGORIZED", "U+1F454", "\xF0\x9F\x91\x94", "necktie",
+"TYPE_UNCATEGORIZED", "U+1F455", "\xF0\x9F\x91\x95", "t-shirt",
+"TYPE_UNCATEGORIZED", "U+1F456", "\xF0\x9F\x91\x96", "jeans",
+"TYPE_UNCATEGORIZED", "U+1F457", "\xF0\x9F\x91\x97", "dress",
+"TYPE_UNCATEGORIZED", "U+1F458", "\xF0\x9F\x91\x98", "kimono",
+"TYPE_UNCATEGORIZED", "U+1F459", "\xF0\x9F\x91\x99", "bikini",
+"TYPE_UNCATEGORIZED", "U+1F45A", "\xF0\x9F\x91\x9A", "womans clothes",
+"TYPE_UNCATEGORIZED", "U+1F45B", "\xF0\x9F\x91\x9B", "purse",
+"TYPE_UNCATEGORIZED", "U+1F45C", "\xF0\x9F\x91\x9C", "handbag",
+"TYPE_UNCATEGORIZED", "U+1F45D", "\xF0\x9F\x91\x9D", "pouch",
+"TYPE_UNCATEGORIZED", "U+1F45E", "\xF0\x9F\x91\x9E", "mans shoe",
+"TYPE_UNCATEGORIZED", "U+1F45F", "\xF0\x9F\x91\x9F", "athletic shoe",
+"TYPE_UNCATEGORIZED", "U+1F460", "\xF0\x9F\x91\xA0", "high-heeled shoe",
+"TYPE_UNCATEGORIZED", "U+1F461", "\xF0\x9F\x91\xA1", "womans sandal",
+"TYPE_UNCATEGORIZED", "U+1F462", "\xF0\x9F\x91\xA2", "womans boots",
+"TYPE_UNCATEGORIZED", "U+1F463", "\xF0\x9F\x91\xA3", "footprints",
+"TYPE_UNCATEGORIZED", "U+1F464", "\xF0\x9F\x91\xA4", "bust in silhouette",
+"TYPE_UNCATEGORIZED", "U+1F466", "\xF0\x9F\x91\xA6", "boy",
+"TYPE_UNCATEGORIZED", "U+1F467", "\xF0\x9F\x91\xA7", "girl",
+"TYPE_UNCATEGORIZED", "U+1F468", "\xF0\x9F\x91\xA8", "man",
+"TYPE_UNCATEGORIZED", "U+1F469", "\xF0\x9F\x91\xA9", "woman",
+"TYPE_UNCATEGORIZED", "U+1F46A", "\xF0\x9F\x91\xAA", "family",
+"TYPE_UNCATEGORIZED", "U+1F46B", "\xF0\x9F\x91\xAB", "man and woman holding hands",
+"TYPE_UNCATEGORIZED", "U+1F46E", "\xF0\x9F\x91\xAE", "police officer",
+"TYPE_UNCATEGORIZED", "U+1F46F", "\xF0\x9F\x91\xAF", "woman with bunny ears",
+"TYPE_UNCATEGORIZED", "U+1F470", "\xF0\x9F\x91\xB0", "bride with veil",
+"TYPE_UNCATEGORIZED", "U+1F471", "\xF0\x9F\x91\xB1", "person with blond hair",
+"TYPE_UNCATEGORIZED", "U+1F472", "\xF0\x9F\x91\xB2", "man with gua pi mao",
+"TYPE_UNCATEGORIZED", "U+1F473", "\xF0\x9F\x91\xB3", "man with turban",
+"TYPE_UNCATEGORIZED", "U+1F474", "\xF0\x9F\x91\xB4", "older man",
+"TYPE_UNCATEGORIZED", "U+1F475", "\xF0\x9F\x91\xB5", "older woman",
+"TYPE_UNCATEGORIZED", "U+1F476", "\xF0\x9F\x91\xB6", "baby",
+"TYPE_UNCATEGORIZED", "U+1F477", "\xF0\x9F\x91\xB7", "construction worker",
+"TYPE_UNCATEGORIZED", "U+1F478", "\xF0\x9F\x91\xB8", "princess",
+"TYPE_UNCATEGORIZED", "U+1F479", "\xF0\x9F\x91\xB9", "japanese ogre",
+"TYPE_UNCATEGORIZED", "U+1F47A", "\xF0\x9F\x91\xBA", "japanese goblin",
+"TYPE_UNCATEGORIZED", "U+1F47B", "\xF0\x9F\x91\xBB", "ghost",
+"TYPE_UNCATEGORIZED", "U+1F47C", "\xF0\x9F\x91\xBC", "baby angel",
+"TYPE_UNCATEGORIZED", "U+1F47D", "\xF0\x9F\x91\xBD", "extraterrestrial alien",
+"TYPE_UNCATEGORIZED", "U+1F47E", "\xF0\x9F\x91\xBE", "alien monster",
+"TYPE_UNCATEGORIZED", "U+1F47F", "\xF0\x9F\x91\xBF", "imp",
+"TYPE_UNCATEGORIZED", "U+1F480", "\xF0\x9F\x92\x80", "skull",
+"TYPE_UNCATEGORIZED", "U+1F481", "\xF0\x9F\x92\x81", "information desk person",
+"TYPE_UNCATEGORIZED", "U+1F482", "\xF0\x9F\x92\x82", "guardsman",
+"TYPE_UNCATEGORIZED", "U+1F483", "\xF0\x9F\x92\x83", "dancer",
+"TYPE_UNCATEGORIZED", "U+1F484", "\xF0\x9F\x92\x84", "lipstick",
+"TYPE_UNCATEGORIZED", "U+1F485", "\xF0\x9F\x92\x85", "nail polish",
+"TYPE_UNCATEGORIZED", "U+1F486", "\xF0\x9F\x92\x86", "face massage",
+"TYPE_UNCATEGORIZED", "U+1F487", "\xF0\x9F\x92\x87", "haircut",
+"TYPE_UNCATEGORIZED", "U+1F488", "\xF0\x9F\x92\x88", "barber pole",
+"TYPE_UNCATEGORIZED", "U+1F489", "\xF0\x9F\x92\x89", "syringe",
+"TYPE_UNCATEGORIZED", "U+1F48A", "\xF0\x9F\x92\x8A", "pill",
+"TYPE_UNCATEGORIZED", "U+1F48B", "\xF0\x9F\x92\x8B", "kiss mark",
+"TYPE_UNCATEGORIZED", "U+1F48C", "\xF0\x9F\x92\x8C", "love letter",
+"TYPE_UNCATEGORIZED", "U+1F48D", "\xF0\x9F\x92\x8D", "ring",
+"TYPE_UNCATEGORIZED", "U+1F48E", "\xF0\x9F\x92\x8E", "gem stone",
+"TYPE_UNCATEGORIZED", "U+1F48F", "\xF0\x9F\x92\x8F", "kiss",
+"TYPE_UNCATEGORIZED", "U+1F490", "\xF0\x9F\x92\x90", "bouquet",
+"TYPE_UNCATEGORIZED", "U+1F491", "\xF0\x9F\x92\x91", "couple with heart",
+"TYPE_UNCATEGORIZED", "U+1F492", "\xF0\x9F\x92\x92", "wedding",
+"TYPE_UNCATEGORIZED", "U+1F493", "\xF0\x9F\x92\x93", "beating heart",
+"TYPE_UNCATEGORIZED", "U+1F494", "\xF0\x9F\x92\x94", "broken heart",
+"TYPE_UNCATEGORIZED", "U+1F495", "\xF0\x9F\x92\x95", "two hearts",
+"TYPE_UNCATEGORIZED", "U+1F496", "\xF0\x9F\x92\x96", "sparkling heart",
+"TYPE_UNCATEGORIZED", "U+1F497", "\xF0\x9F\x92\x97", "growing heart",
+"TYPE_UNCATEGORIZED", "U+1F498", "\xF0\x9F\x92\x98", "heart with arrow",
+"TYPE_UNCATEGORIZED", "U+1F499", "\xF0\x9F\x92\x99", "blue heart",
+"TYPE_UNCATEGORIZED", "U+1F49A", "\xF0\x9F\x92\x9A", "green heart",
+"TYPE_UNCATEGORIZED", "U+1F49B", "\xF0\x9F\x92\x9B", "yellow heart",
+"TYPE_UNCATEGORIZED", "U+1F49C", "\xF0\x9F\x92\x9C", "purple heart",
+"TYPE_UNCATEGORIZED", "U+1F49D", "\xF0\x9F\x92\x9D", "heart with ribbon",
+"TYPE_UNCATEGORIZED", "U+1F49E", "\xF0\x9F\x92\x9E", "revolving hearts",
+"TYPE_UNCATEGORIZED", "U+1F49F", "\xF0\x9F\x92\x9F", "heart decoration",
+"TYPE_UNCATEGORIZED", "U+1F4A0", "\xF0\x9F\x92\xA0", "diamond shape with a dot inside",
+"TYPE_UNCATEGORIZED", "U+1F4A1", "\xF0\x9F\x92\xA1", "electric light bulb",
+"TYPE_UNCATEGORIZED", "U+1F4A2", "\xF0\x9F\x92\xA2", "anger symbol",
+"TYPE_UNCATEGORIZED", "U+1F4A3", "\xF0\x9F\x92\xA3", "bomb",
+"TYPE_UNCATEGORIZED", "U+1F4A4", "\xF0\x9F\x92\xA4", "sleeping symbol",
+"TYPE_UNCATEGORIZED", "U+1F4A5", "\xF0\x9F\x92\xA5", "collision symbol",
+"TYPE_UNCATEGORIZED", "U+1F4A6", "\xF0\x9F\x92\xA6", "splashing sweat symbol",
+"TYPE_UNCATEGORIZED", "U+1F4A7", "\xF0\x9F\x92\xA7", "droplet",
+"TYPE_UNCATEGORIZED", "U+1F4A8", "\xF0\x9F\x92\xA8", "dash symbol",
+"TYPE_UNCATEGORIZED", "U+1F4A9", "\xF0\x9F\x92\xA9", "pile of poo",
+"TYPE_UNCATEGORIZED", "U+1F4AA", "\xF0\x9F\x92\xAA", "flexed biceps",
+"TYPE_UNCATEGORIZED", "U+1F4AB", "\xF0\x9F\x92\xAB", "dizzy symbol",
+"TYPE_UNCATEGORIZED", "U+1F4AC", "\xF0\x9F\x92\xAC", "speech balloon",
+"TYPE_UNCATEGORIZED", "U+1F4AE", "\xF0\x9F\x92\xAE", "white flower",
+"TYPE_UNCATEGORIZED", "U+1F4AF", "\xF0\x9F\x92\xAF", "hundred points symbol",
+"TYPE_UNCATEGORIZED", "U+1F4B0", "\xF0\x9F\x92\xB0", "money bag",
+"TYPE_UNCATEGORIZED", "U+1F4B1", "\xF0\x9F\x92\xB1", "currency exchange",
+"TYPE_UNCATEGORIZED", "U+1F4B2", "\xF0\x9F\x92\xB2", "heavy dollar sign",
+"TYPE_UNCATEGORIZED", "U+1F4B3", "\xF0\x9F\x92\xB3", "credit card",
+"TYPE_UNCATEGORIZED", "U+1F4B4", "\xF0\x9F\x92\xB4", "banknote with yen sign",
+"TYPE_UNCATEGORIZED", "U+1F4B5", "\xF0\x9F\x92\xB5", "banknote with dollar sign",
+"TYPE_UNCATEGORIZED", "U+1F4B8", "\xF0\x9F\x92\xB8", "money with wings",
+"TYPE_UNCATEGORIZED", "U+1F4B9", "\xF0\x9F\x92\xB9", "chart with upwards trend and yen sign",
+"TYPE_UNCATEGORIZED", "U+1F4BA", "\xF0\x9F\x92\xBA", "seat",
+"TYPE_UNCATEGORIZED", "U+1F4BB", "\xF0\x9F\x92\xBB", "personal computer",
+"TYPE_UNCATEGORIZED", "U+1F4BC", "\xF0\x9F\x92\xBC", "briefcase",
+"TYPE_UNCATEGORIZED", "U+1F4BD", "\xF0\x9F\x92\xBD", "minidisc",
+"TYPE_UNCATEGORIZED", "U+1F4BE", "\xF0\x9F\x92\xBE", "floppy disk",
+"TYPE_UNCATEGORIZED", "U+1F4BF", "\xF0\x9F\x92\xBF", "optical disc",
+"TYPE_UNCATEGORIZED", "U+1F4C0", "\xF0\x9F\x93\x80", "dvd",
+"TYPE_UNCATEGORIZED", "U+1F4C1", "\xF0\x9F\x93\x81", "file folder",
+"TYPE_UNCATEGORIZED", "U+1F4C2", "\xF0\x9F\x93\x82", "open file folder",
+"TYPE_UNCATEGORIZED", "U+1F4C3", "\xF0\x9F\x93\x83", "page with curl",
+"TYPE_UNCATEGORIZED", "U+1F4C4", "\xF0\x9F\x93\x84", "page facing up",
+"TYPE_UNCATEGORIZED", "U+1F4C5", "\xF0\x9F\x93\x85", "calendar",
+"TYPE_UNCATEGORIZED", "U+1F4C6", "\xF0\x9F\x93\x86", "tear-off calendar",
+"TYPE_UNCATEGORIZED", "U+1F4C7", "\xF0\x9F\x93\x87", "card index",
+"TYPE_UNCATEGORIZED", "U+1F4C8", "\xF0\x9F\x93\x88", "chart with upwards trend",
+"TYPE_UNCATEGORIZED", "U+1F4C9", "\xF0\x9F\x93\x89", "chart with downwards trend",
+"TYPE_UNCATEGORIZED", "U+1F4CA", "\xF0\x9F\x93\x8A", "bar chart",
+"TYPE_UNCATEGORIZED", "U+1F4CB", "\xF0\x9F\x93\x8B", "clipboard",
+"TYPE_UNCATEGORIZED", "U+1F4CC", "\xF0\x9F\x93\x8C", "pushpin",
+"TYPE_UNCATEGORIZED", "U+1F4CD", "\xF0\x9F\x93\x8D", "round pushpin",
+"TYPE_UNCATEGORIZED", "U+1F4CE", "\xF0\x9F\x93\x8E", "paperclip",
+"TYPE_UNCATEGORIZED", "U+1F4CF", "\xF0\x9F\x93\x8F", "straight ruler",
+"TYPE_UNCATEGORIZED", "U+1F4D0", "\xF0\x9F\x93\x90", "triangular ruler",
+"TYPE_UNCATEGORIZED", "U+1F4D1", "\xF0\x9F\x93\x91", "bookmark tabs",
+"TYPE_UNCATEGORIZED", "U+1F4D2", "\xF0\x9F\x93\x92", "ledger",
+"TYPE_UNCATEGORIZED", "U+1F4D3", "\xF0\x9F\x93\x93", "notebook",
+"TYPE_UNCATEGORIZED", "U+1F4D4", "\xF0\x9F\x93\x94", "notebook with decorative cover",
+"TYPE_UNCATEGORIZED", "U+1F4D5", "\xF0\x9F\x93\x95", "closed book",
+"TYPE_UNCATEGORIZED", "U+1F4D6", "\xF0\x9F\x93\x96", "open book",
+"TYPE_UNCATEGORIZED", "U+1F4D7", "\xF0\x9F\x93\x97", "green book",
+"TYPE_UNCATEGORIZED", "U+1F4D8", "\xF0\x9F\x93\x98", "blue book",
+"TYPE_UNCATEGORIZED", "U+1F4D9", "\xF0\x9F\x93\x99", "orange book",
+"TYPE_UNCATEGORIZED", "U+1F4DA", "\xF0\x9F\x93\x9A", "books",
+"TYPE_UNCATEGORIZED", "U+1F4DB", "\xF0\x9F\x93\x9B", "name badge",
+"TYPE_UNCATEGORIZED", "U+1F4DC", "\xF0\x9F\x93\x9C", "scroll",
+"TYPE_UNCATEGORIZED", "U+1F4DD", "\xF0\x9F\x93\x9D", "memo",
+"TYPE_UNCATEGORIZED", "U+1F4DE", "\xF0\x9F\x93\x9E", "telephone receiver",
+"TYPE_UNCATEGORIZED", "U+1F4DF", "\xF0\x9F\x93\x9F", "pager",
+"TYPE_UNCATEGORIZED", "U+1F4E0", "\xF0\x9F\x93\xA0", "fax machine",
+"TYPE_UNCATEGORIZED", "U+1F4E1", "\xF0\x9F\x93\xA1", "satellite antenna",
+"TYPE_UNCATEGORIZED", "U+1F4E2", "\xF0\x9F\x93\xA2", "public address loudspeaker",
+"TYPE_UNCATEGORIZED", "U+1F4E3", "\xF0\x9F\x93\xA3", "cheering megaphone",
+"TYPE_UNCATEGORIZED", "U+1F4E4", "\xF0\x9F\x93\xA4", "outbox tray",
+"TYPE_UNCATEGORIZED", "U+1F4E5", "\xF0\x9F\x93\xA5", "inbox tray",
+"TYPE_UNCATEGORIZED", "U+1F4E6", "\xF0\x9F\x93\xA6", "package",
+"TYPE_UNCATEGORIZED", "U+1F4E7", "\xF0\x9F\x93\xA7", "e-mail symbol",
+"TYPE_UNCATEGORIZED", "U+1F4E8", "\xF0\x9F\x93\xA8", "incoming envelope",
+"TYPE_UNCATEGORIZED", "U+1F4E9", "\xF0\x9F\x93\xA9", "envelope with downwards arrow above",
+"TYPE_UNCATEGORIZED", "U+1F4EA", "\xF0\x9F\x93\xAA", "closed mailbox with lowered flag",
+"TYPE_UNCATEGORIZED", "U+1F4EB", "\xF0\x9F\x93\xAB", "closed mailbox with raised flag",
+"TYPE_UNCATEGORIZED", "U+1F4EE", "\xF0\x9F\x93\xAE", "postbox",
+"TYPE_UNCATEGORIZED", "U+1F4F0", "\xF0\x9F\x93\xB0", "newspaper",
+"TYPE_UNCATEGORIZED", "U+1F4F1", "\xF0\x9F\x93\xB1", "mobile phone",
+"TYPE_UNCATEGORIZED", "U+1F4F2", "\xF0\x9F\x93\xB2", "mobile phone with rightwards arrow at left",
+"TYPE_UNCATEGORIZED", "U+1F4F3", "\xF0\x9F\x93\xB3", "vibration mode",
+"TYPE_UNCATEGORIZED", "U+1F4F4", "\xF0\x9F\x93\xB4", "mobile phone off",
+"TYPE_UNCATEGORIZED", "U+1F4F6", "\xF0\x9F\x93\xB6", "antenna with bars",
+"TYPE_UNCATEGORIZED", "U+1F4F7", "\xF0\x9F\x93\xB7", "camera",
+"TYPE_UNCATEGORIZED", "U+1F4F9", "\xF0\x9F\x93\xB9", "video camera",
+"TYPE_UNCATEGORIZED", "U+1F4FA", "\xF0\x9F\x93\xBA", "television",
+"TYPE_UNCATEGORIZED", "U+1F4FB", "\xF0\x9F\x93\xBB", "radio",
+"TYPE_UNCATEGORIZED", "U+1F4FC", "\xF0\x9F\x93\xBC", "videocassette",
+"TYPE_UNCATEGORIZED", "U+1F503", "\xF0\x9F\x94\x83", "clockwise downwards and upwards open circle arrows",
+"TYPE_UNCATEGORIZED", "U+1F50A", "\xF0\x9F\x94\x8A", "speaker with three sound waves",
+"TYPE_UNCATEGORIZED", "U+1F50B", "\xF0\x9F\x94\x8B", "battery",
+"TYPE_UNCATEGORIZED", "U+1F50C", "\xF0\x9F\x94\x8C", "electric plug",
+"TYPE_UNCATEGORIZED", "U+1F50D", "\xF0\x9F\x94\x8D", "left-pointing magnifying glass",
+"TYPE_UNCATEGORIZED", "U+1F50E", "\xF0\x9F\x94\x8E", "right-pointing magnifying glass",
+"TYPE_UNCATEGORIZED", "U+1F50F", "\xF0\x9F\x94\x8F", "lock with ink pen",
+"TYPE_UNCATEGORIZED", "U+1F510", "\xF0\x9F\x94\x90", "closed lock with key",
+"TYPE_UNCATEGORIZED", "U+1F511", "\xF0\x9F\x94\x91", "key",
+"TYPE_UNCATEGORIZED", "U+1F512", "\xF0\x9F\x94\x92", "lock",
+"TYPE_UNCATEGORIZED", "U+1F513", "\xF0\x9F\x94\x93", "open lock",
+"TYPE_UNCATEGORIZED", "U+1F514", "\xF0\x9F\x94\x94", "bell",
+"TYPE_UNCATEGORIZED", "U+1F516", "\xF0\x9F\x94\x96", "bookmark",
+"TYPE_UNCATEGORIZED", "U+1F517", "\xF0\x9F\x94\x97", "link symbol",
+"TYPE_UNCATEGORIZED", "U+1F518", "\xF0\x9F\x94\x98", "radio button",
+"TYPE_UNCATEGORIZED", "U+1F519", "\xF0\x9F\x94\x99", "back with leftwards arrow above",
+"TYPE_UNCATEGORIZED", "U+1F51A", "\xF0\x9F\x94\x9A", "end with leftwards arrow above",
+"TYPE_UNCATEGORIZED", "U+1F51B", "\xF0\x9F\x94\x9B", "on with exclamation mark with left right arrow above",
+"TYPE_UNCATEGORIZED", "U+1F51C", "\xF0\x9F\x94\x9C", "soon with rightwards arrow above",
+"TYPE_UNCATEGORIZED", "U+1F51D", "\xF0\x9F\x94\x9D", "top with upwards arrow above",
+"TYPE_UNCATEGORIZED", "U+1F51E", "\xF0\x9F\x94\x9E", "no one under eighteen symbol",
+"TYPE_UNCATEGORIZED", "U+1F51F", "\xF0\x9F\x94\x9F", "keycap ten",
+"TYPE_UNCATEGORIZED", "U+1F520", "\xF0\x9F\x94\xA0", "input symbol for latin capital letters",
+"TYPE_UNCATEGORIZED", "U+1F521", "\xF0\x9F\x94\xA1", "input symbol for latin small letters",
+"TYPE_UNCATEGORIZED", "U+1F522", "\xF0\x9F\x94\xA2", "input symbol for numbers",
+"TYPE_UNCATEGORIZED", "U+1F523", "\xF0\x9F\x94\xA3", "input symbol for symbols",
+"TYPE_UNCATEGORIZED", "U+1F524", "\xF0\x9F\x94\xA4", "input symbol for latin letters",
+"TYPE_UNCATEGORIZED", "U+1F525", "\xF0\x9F\x94\xA5", "fire",
+"TYPE_UNCATEGORIZED", "U+1F526", "\xF0\x9F\x94\xA6", "electric torch",
+"TYPE_UNCATEGORIZED", "U+1F527", "\xF0\x9F\x94\xA7", "wrench",
+"TYPE_UNCATEGORIZED", "U+1F528", "\xF0\x9F\x94\xA8", "hammer",
+"TYPE_UNCATEGORIZED", "U+1F529", "\xF0\x9F\x94\xA9", "nut and bolt",
+"TYPE_UNCATEGORIZED", "U+1F52A", "\xF0\x9F\x94\xAA", "hocho",
+"TYPE_UNCATEGORIZED", "U+1F52B", "\xF0\x9F\x94\xAB", "pistol",
+"TYPE_UNCATEGORIZED", "U+1F52E", "\xF0\x9F\x94\xAE", "crystal ball",
+"TYPE_UNCATEGORIZED", "U+1F52F", "\xF0\x9F\x94\xAF", "six pointed star with middle dot",
+"TYPE_UNCATEGORIZED", "U+1F530", "\xF0\x9F\x94\xB0", "japanese symbol for beginner",
+"TYPE_UNCATEGORIZED", "U+1F531", "\xF0\x9F\x94\xB1", "trident emblem",
+"TYPE_UNCATEGORIZED", "U+1F532", "\xF0\x9F\x94\xB2", "black square button",
+"TYPE_UNCATEGORIZED", "U+1F533", "\xF0\x9F\x94\xB3", "white square button",
+"TYPE_UNCATEGORIZED", "U+1F534", "\xF0\x9F\x94\xB4", "large red circle",
+"TYPE_UNCATEGORIZED", "U+1F535", "\xF0\x9F\x94\xB5", "large blue circle",
+"TYPE_UNCATEGORIZED", "U+1F536", "\xF0\x9F\x94\xB6", "large orange diamond",
+"TYPE_UNCATEGORIZED", "U+1F537", "\xF0\x9F\x94\xB7", "large blue diamond",
+"TYPE_UNCATEGORIZED", "U+1F538", "\xF0\x9F\x94\xB8", "small orange diamond",
+"TYPE_UNCATEGORIZED", "U+1F539", "\xF0\x9F\x94\xB9", "small blue diamond",
+"TYPE_UNCATEGORIZED", "U+1F53A", "\xF0\x9F\x94\xBA", "up-pointing red triangle",
+"TYPE_UNCATEGORIZED", "U+1F53B", "\xF0\x9F\x94\xBB", "down-pointing red triangle",
+"TYPE_UNCATEGORIZED", "U+1F53C", "\xF0\x9F\x94\xBC", "up-pointing small red triangle",
+"TYPE_UNCATEGORIZED", "U+1F53D", "\xF0\x9F\x94\xBD", "down-pointing small red triangle",
+"TYPE_UNCATEGORIZED", "U+1F550", "\xF0\x9F\x95\x90", "clock face one oclock",
+"TYPE_UNCATEGORIZED", "U+1F551", "\xF0\x9F\x95\x91", "clock face two oclock",
+"TYPE_UNCATEGORIZED", "U+1F552", "\xF0\x9F\x95\x92", "clock face three oclock",
+"TYPE_UNCATEGORIZED", "U+1F553", "\xF0\x9F\x95\x93", "clock face four oclock",
+"TYPE_UNCATEGORIZED", "U+1F554", "\xF0\x9F\x95\x94", "clock face five oclock",
+"TYPE_UNCATEGORIZED", "U+1F555", "\xF0\x9F\x95\x95", "clock face six oclock",
+"TYPE_UNCATEGORIZED", "U+1F556", "\xF0\x9F\x95\x96", "clock face seven oclock",
+"TYPE_UNCATEGORIZED", "U+1F557", "\xF0\x9F\x95\x97", "clock face eight oclock",
+"TYPE_UNCATEGORIZED", "U+1F558", "\xF0\x9F\x95\x98", "clock face nine oclock",
+"TYPE_UNCATEGORIZED", "U+1F559", "\xF0\x9F\x95\x99", "clock face ten oclock",
+"TYPE_UNCATEGORIZED", "U+1F55A", "\xF0\x9F\x95\x9A", "clock face eleven oclock",
+"TYPE_UNCATEGORIZED", "U+1F55B", "\xF0\x9F\x95\x9B", "clock face twelve oclock",
+"TYPE_UNCATEGORIZED", "U+1F5FB", "\xF0\x9F\x97\xBB", "mount fuji",
+"TYPE_UNCATEGORIZED", "U+1F5FC", "\xF0\x9F\x97\xBC", "tokyo tower",
+"TYPE_UNCATEGORIZED", "U+1F5FD", "\xF0\x9F\x97\xBD", "statue of liberty",
+"TYPE_UNCATEGORIZED", "U+1F5FE", "\xF0\x9F\x97\xBE", "silhouette of japan",
+"TYPE_UNCATEGORIZED", "U+1F5FF", "\xF0\x9F\x97\xBF", "moyai",
+
+"TYPE_UNCATEGORIZED", "U+1F30D", "\xF0\x9F\x8C\x8D", "earth globe europe-africa",
+"TYPE_UNCATEGORIZED", "U+1F30E", "\xF0\x9F\x8C\x8E", "earth globe americas",
+"TYPE_UNCATEGORIZED", "U+1F310", "\xF0\x9F\x8C\x90", "globe with meridians",
+"TYPE_UNCATEGORIZED", "U+1F312", "\xF0\x9F\x8C\x92", "waxing crescent moon symbol",
+"TYPE_UNCATEGORIZED", "U+1F316", "\xF0\x9F\x8C\x96", "waning gibbous moon symbol",
+"TYPE_UNCATEGORIZED", "U+1F317", "\xF0\x9F\x8C\x97", "last quarter moon symbol",
+"TYPE_UNCATEGORIZED", "U+1F318", "\xF0\x9F\x8C\x98", "waning crescent moon symbol",
+"TYPE_UNCATEGORIZED", "U+1F31A", "\xF0\x9F\x8C\x9A", "new moon with face",
+"TYPE_UNCATEGORIZED", "U+1F31C", "\xF0\x9F\x8C\x9C", "last quarter moon with face",
+"TYPE_UNCATEGORIZED", "U+1F31D", "\xF0\x9F\x8C\x9D", "full moon with face",
+"TYPE_UNCATEGORIZED", "U+1F31E", "\xF0\x9F\x8C\x9E", "sun with face",
+"TYPE_UNCATEGORIZED", "U+1F332", "\xF0\x9F\x8C\xB2", "evergreen tree",
+"TYPE_UNCATEGORIZED", "U+1F333", "\xF0\x9F\x8C\xB3", "deciduous tree",
+"TYPE_UNCATEGORIZED", "U+1F34B", "\xF0\x9F\x8D\x8B", "lemon",
+"TYPE_UNCATEGORIZED", "U+1F350", "\xF0\x9F\x8D\x90", "pear",
+"TYPE_UNCATEGORIZED", "U+1F37C", "\xF0\x9F\x8D\xBC", "baby bottle",
+"TYPE_UNCATEGORIZED", "U+1F3C7", "\xF0\x9F\x8F\x87", "horse racing",
+"TYPE_UNCATEGORIZED", "U+1F3C9", "\xF0\x9F\x8F\x89", "rugby football",
+"TYPE_UNCATEGORIZED", "U+1F3E4", "\xF0\x9F\x8F\xA4", "european post office",
+"TYPE_UNCATEGORIZED", "U+1F400", "\xF0\x9F\x90\x80", "rat",
+"TYPE_UNCATEGORIZED", "U+1F401", "\xF0\x9F\x90\x81", "mouse",
+"TYPE_UNCATEGORIZED", "U+1F402", "\xF0\x9F\x90\x82", "ox",
+"TYPE_UNCATEGORIZED", "U+1F403", "\xF0\x9F\x90\x83", "water buffalo",
+"TYPE_UNCATEGORIZED", "U+1F404", "\xF0\x9F\x90\x84", "cow",
+"TYPE_UNCATEGORIZED", "U+1F405", "\xF0\x9F\x90\x85", "tiger",
+"TYPE_UNCATEGORIZED", "U+1F406", "\xF0\x9F\x90\x86", "leopard",
+"TYPE_UNCATEGORIZED", "U+1F407", "\xF0\x9F\x90\x87", "rabbit",
+"TYPE_UNCATEGORIZED", "U+1F408", "\xF0\x9F\x90\x88", "cat",
+"TYPE_UNCATEGORIZED", "U+1F409", "\xF0\x9F\x90\x89", "dragon",
+"TYPE_UNCATEGORIZED", "U+1F40A", "\xF0\x9F\x90\x8A", "crocodile",
+"TYPE_UNCATEGORIZED", "U+1F40B", "\xF0\x9F\x90\x8B", "whale",
+"TYPE_UNCATEGORIZED", "U+1F40F", "\xF0\x9F\x90\x8F", "ram",
+"TYPE_UNCATEGORIZED", "U+1F410", "\xF0\x9F\x90\x90", "goat",
+"TYPE_UNCATEGORIZED", "U+1F413", "\xF0\x9F\x90\x93", "rooster",
+"TYPE_UNCATEGORIZED", "U+1F415", "\xF0\x9F\x90\x95", "dog",
+"TYPE_UNCATEGORIZED", "U+1F416", "\xF0\x9F\x90\x96", "pig",
+"TYPE_UNCATEGORIZED", "U+1F42A", "\xF0\x9F\x90\xAA", "dromedary camel",
+"TYPE_UNCATEGORIZED", "U+1F465", "\xF0\x9F\x91\xA5", "busts in silhouette",
+"TYPE_UNCATEGORIZED", "U+1F46C", "\xF0\x9F\x91\xAC", "two men holding hands",
+"TYPE_UNCATEGORIZED", "U+1F46D", "\xF0\x9F\x91\xAD", "two women holding hands",
+"TYPE_UNCATEGORIZED", "U+1F4AD", "\xF0\x9F\x92\xAD", "thought balloon",
+"TYPE_UNCATEGORIZED", "U+1F4B6", "\xF0\x9F\x92\xB6", "banknote with euro sign",
+"TYPE_UNCATEGORIZED", "U+1F4B7", "\xF0\x9F\x92\xB7", "banknote with pound sign",
+"TYPE_UNCATEGORIZED", "U+1F4EC", "\xF0\x9F\x93\xAC", "open mailbox with raised flag",
+"TYPE_UNCATEGORIZED", "U+1F4ED", "\xF0\x9F\x93\xAD", "open mailbox with lowered flag",
+"TYPE_UNCATEGORIZED", "U+1F4EF", "\xF0\x9F\x93\xAF", "postal horn",
+"TYPE_UNCATEGORIZED", "U+1F4F5", "\xF0\x9F\x93\xB5", "no mobile phones",
+"TYPE_UNCATEGORIZED", "U+1F500", "\xF0\x9F\x94\x80", "twisted rightwards arrows",
+"TYPE_UNCATEGORIZED", "U+1F501", "\xF0\x9F\x94\x81", "clockwise rightwards and leftwards open circle arrows",
+"TYPE_UNCATEGORIZED", "U+1F502", "\xF0\x9F\x94\x82", "clockwise rightwards and leftwards open circle arrows with circled one overlay",
+"TYPE_UNCATEGORIZED", "U+1F504", "\xF0\x9F\x94\x84", "anticlockwise downwards and upwards open circle arrows",
+"TYPE_UNCATEGORIZED", "U+1F505", "\xF0\x9F\x94\x85", "low brightness symbol",
+"TYPE_UNCATEGORIZED", "U+1F506", "\xF0\x9F\x94\x86", "high brightness symbol",
+"TYPE_UNCATEGORIZED", "U+1F507", "\xF0\x9F\x94\x87", "speaker with cancellation stroke",
+"TYPE_UNCATEGORIZED", "U+1F509", "\xF0\x9F\x94\x89", "speaker with one sound wave",
+"TYPE_UNCATEGORIZED", "U+1F515", "\xF0\x9F\x94\x95", "bell with cancellation stroke",
+"TYPE_UNCATEGORIZED", "U+1F52C", "\xF0\x9F\x94\xAC", "microscope",
+"TYPE_UNCATEGORIZED", "U+1F52D", "\xF0\x9F\x94\xAD", "telescope",
+"TYPE_UNCATEGORIZED", "U+1F55C", "\xF0\x9F\x95\x9C", "clock face one-thirty",
+"TYPE_UNCATEGORIZED", "U+1F55D", "\xF0\x9F\x95\x9D", "clock face two-thirty",
+"TYPE_UNCATEGORIZED", "U+1F55E", "\xF0\x9F\x95\x9E", "clock face three-thirty",
+"TYPE_UNCATEGORIZED", "U+1F55F", "\xF0\x9F\x95\x9F", "clock face four-thirty",
+"TYPE_UNCATEGORIZED", "U+1F560", "\xF0\x9F\x95\xA0", "clock face five-thirty",
+"TYPE_UNCATEGORIZED", "U+1F561", "\xF0\x9F\x95\xA1", "clock face six-thirty",
+"TYPE_UNCATEGORIZED", "U+1F562", "\xF0\x9F\x95\xA2", "clock face seven-thirty",
+"TYPE_UNCATEGORIZED", "U+1F563", "\xF0\x9F\x95\xA3", "clock face eight-thirty",
+"TYPE_UNCATEGORIZED", "U+1F564", "\xF0\x9F\x95\xA4", "clock face nine-thirty",
+"TYPE_UNCATEGORIZED", "U+1F565", "\xF0\x9F\x95\xA5", "clock face ten-thirty",
+"TYPE_UNCATEGORIZED", "U+1F566", "\xF0\x9F\x95\xA6", "clock face eleven-thirty",
+"TYPE_UNCATEGORIZED", "U+1F567", "\xF0\x9F\x95\xA7", "clock face twelve-thirty",
+]
+
+name_map = {
+"U+1F44D": ":+1:",
+"U+1F44E": ":-1:",
+"U+1F4AF": ":100:",
+"U+1F522": ":1234:",
+"U+1F3B1": ":8ball:",
+"U+1F170": ":a:",
+"U+1F18E": ":ab:",
+"U+1F524": ":abc:",
+"U+1F521": ":abcd:",
+"U+1F251": ":accept:",
+"U+1F6A1": ":aerial_tramway:",
+"U+02708": ":airplane:",
+"U+023F0": ":alarm_clock:",
+"U+1F47D": ":alien:",
+"U+1F691": ":ambulance:",
+"U+02693": ":anchor:",
+"U+1F47C": ":angel:",
+"U+1F4A2": ":anger:",
+"U+1F620": ":angry:",
+"U+1F627": ":anguished:",
+"U+1F41C": ":ant:",
+"U+1F34E": ":apple:",
+"U+02652": ":aquarius:",
+"U+02648": ":aries:",
+"U+025C0": ":arrow_backward:",
+"U+023EC": ":arrow_double_down:",
+"U+023EB": ":arrow_double_up:",
+"U+02B07": ":arrow_down:",
+"U+1F53D": ":arrow_down_small:",
+"U+025B6": ":arrow_forward:",
+"U+02935": ":arrow_heading_down:",
+"U+02934": ":arrow_heading_up:",
+"U+02B05": ":arrow_left:",
+"U+02199": ":arrow_lower_left:",
+"U+02198": ":arrow_lower_right:",
+"U+027A1": ":arrow_right:",
+"U+021AA": ":arrow_right_hook:",
+"U+02B06": ":arrow_up:",
+"U+02195": ":arrow_up_down:",
+"U+1F53C": ":arrow_up_small:",
+"U+02196": ":arrow_upper_left:",
+"U+02197": ":arrow_upper_right:",
+"U+1F503": ":arrows_clockwise:",
+"U+1F504": ":arrows_counterclockwise:",
+"U+1F3A8": ":art:",
+"U+1F69B": ":articulated_lorry:",
+"U+1F632": ":astonished:",
+"U+1F45F": ":athletic_shoe:",
+"U+1F3E7": ":atm:",
+"U+1F171": ":b:",
+"U+1F476": ":baby:",
+"U+1F37C": ":baby_bottle:",
+"U+1F424": ":baby_chick:",
+"U+1F6BC": ":baby_symbol:",
+"U+1F519": ":back:",
+"U+1F6C4": ":baggage_claim:",
+"U+1F388": ":balloon:",
+"U+02611": ":ballot_box_with_check:",
+"U+1F38D": ":bamboo:",
+"U+1F34C": ":banana:",
+"U+0203C": ":bangbang:",
+"U+1F3E6": ":bank:",
+"U+1F4CA": ":bar_chart:",
+"U+1F488": ":barber:",
+"U+026BE": ":baseball:",
+"U+1F3C0": ":basketball:",
+"U+1F6C0": ":bath:",
+"U+1F6C1": ":bathtub:",
+"U+1F50B": ":battery:",
+"U+1F43B": ":bear:",
+"U+1F41D": ":bee:",
+"U+1F37A": ":beer:",
+"U+1F37B": ":beers:",
+"U+1F41E": ":beetle:",
+"U+1F530": ":beginner:",
+"U+1F514": ":bell:",
+"U+1F371": ":bento:",
+"U+1F6B4": ":bicyclist:",
+"U+1F6B2": ":bike:",
+"U+1F459": ":bikini:",
+"U+1F426": ":bird:",
+"U+1F382": ":birthday:",
+"U+026AB": ":black_circle:",
+"U+1F0CF": ":black_joker:",
+"U+02B1B": ":black_large_square:",
+"U+025FE": ":black_medium_small_square:",
+"U+025FC": ":black_medium_square:",
+"U+02712": ":black_nib:",
+"U+025AA": ":black_small_square:",
+"U+1F532": ":black_square_button:",
+"U+1F33C": ":blossom:",
+"U+1F421": ":blowfish:",
+"U+1F4D8": ":blue_book:",
+"U+1F699": ":blue_car:",
+"U+1F499": ":blue_heart:",
+"U+1F60A": ":blush:",
+"U+1F417": ":boar:",
+"U+026F5": ":boat:",
+"U+1F4A3": ":bomb:",
+"U+1F4D6": ":book:",
+"U+1F516": ":bookmark:",
+"U+1F4D1": ":bookmark_tabs:",
+"U+1F4DA": ":books:",
+"U+1F4A5": ":boom:",
+"U+1F462": ":boot:",
+"U+1F490": ":bouquet:",
+"U+1F647": ":bow:",
+"U+1F3B3": ":bowling:",
+"U+1F466": ":boy:",
+"U+1F35E": ":bread:",
+"U+1F470": ":bride_with_veil:",
+"U+1F309": ":bridge_at_night:",
+"U+1F4BC": ":briefcase:",
+"U+1F494": ":broken_heart:",
+"U+1F41B": ":bug:",
+"U+1F4A1": ":bulb:",
+"U+1F685": ":bullettrain_front:",
+"U+1F684": ":bullettrain_side:",
+"U+1F68C": ":bus:",
+"U+1F68F": ":busstop:",
+"U+1F464": ":bust_in_silhouette:",
+"U+1F465": ":busts_in_silhouette:",
+"U+1F335": ":cactus:",
+"U+1F370": ":cake:",
+"U+1F4C6": ":calendar:",
+"U+1F4F2": ":calling:",
+"U+1F42B": ":camel:",
+"U+1F4F7": ":camera:",
+"U+0264B": ":cancer:",
+"U+1F36C": ":candy:",
+"U+1F520": ":capital_abcd:",
+"U+02651": ":capricorn:",
+"U+1F697": ":car:",
+"U+1F4C7": ":card_index:",
+"U+1F3A0": ":carousel_horse:",
+"U+1F431": ":cat:",
+"U+1F408": ":cat2:",
+"U+1F4BF": ":cd:",
+"U+1F4B9": ":chart:",
+"U+1F4C9": ":chart_with_downwards_trend:",
+"U+1F4C8": ":chart_with_upwards_trend:",
+"U+1F3C1": ":checkered_flag:",
+"U+1F352": ":cherries:",
+"U+1F338": ":cherry_blossom:",
+"U+1F330": ":chestnut:",
+"U+1F414": ":chicken:",
+"U+1F6B8": ":children_crossing:",
+"U+1F36B": ":chocolate_bar:",
+"U+1F384": ":christmas_tree:",
+"U+026EA": ":church:",
+"U+1F3A6": ":cinema:",
+"U+1F3AA": ":circus_tent:",
+"U+1F307": ":city_sunrise:",
+"U+1F306": ":city_sunset:",
+"U+1F191": ":cl:",
+"U+1F44F": ":clap:",
+"U+1F3AC": ":clapper:",
+"U+1F4CB": ":clipboard:",
+"U+1F550": ":clock1:",
+"U+1F559": ":clock10:",
+"U+1F565": ":clock1030:",
+"U+1F55A": ":clock11:",
+"U+1F566": ":clock1130:",
+"U+1F55B": ":clock12:",
+"U+1F567": ":clock1230:",
+"U+1F55C": ":clock130:",
+"U+1F551": ":clock2:",
+"U+1F55D": ":clock230:",
+"U+1F552": ":clock3:",
+"U+1F55E": ":clock330:",
+"U+1F553": ":clock4:",
+"U+1F55F": ":clock430:",
+"U+1F554": ":clock5:",
+"U+1F560": ":clock530:",
+"U+1F555": ":clock6:",
+"U+1F561": ":clock630:",
+"U+1F556": ":clock7:",
+"U+1F562": ":clock730:",
+"U+1F557": ":clock8:",
+"U+1F563": ":clock830:",
+"U+1F558": ":clock9:",
+"U+1F564": ":clock930:",
+"U+1F4D5": ":closed_book:",
+"U+1F510": ":closed_lock_with_key:",
+"U+1F302": ":closed_umbrella:",
+"U+02601": ":cloud:",
+"U+02663": ":clubs:",
+"U+1F378": ":cocktail:",
+"U+02615": ":coffee:",
+"U+1F630": ":cold_sweat:",
+"U+1F4A5": ":collision:",
+"U+1F4BB": ":computer:",
+"U+1F38A": ":confetti_ball:",
+"U+1F616": ":confounded:",
+"U+1F615": ":confused:",
+"U+03297": ":congratulations:",
+"U+1F6A7": ":construction:",
+"U+1F477": ":construction_worker:",
+"U+1F3EA": ":convenience_store:",
+"U+1F36A": ":cookie:",
+"U+1F192": ":cool:",
+"U+1F46E": ":cop:",
+"U+000A9": ":copyright:",
+"U+1F33D": ":corn:",
+"U+1F46B": ":couple:",
+"U+1F491": ":couple_with_heart:",
+"U+1F48F": ":couplekiss:",
+"U+1F42E": ":cow:",
+"U+1F404": ":cow2:",
+"U+1F4B3": ":credit_card:",
+"U+1F319": ":crescent_moon:",
+"U+1F40A": ":crocodile:",
+"U+1F38C": ":crossed_flags:",
+"U+1F451": ":crown:",
+"U+1F622": ":cry:",
+"U+1F63F": ":crying_cat_face:",
+"U+1F52E": ":crystal_ball:",
+"U+1F498": ":cupid:",
+"U+027B0": ":curly_loop:",
+"U+1F4B1": ":currency_exchange:",
+"U+1F35B": ":curry:",
+"U+1F36E": ":custard:",
+"U+1F6C3": ":customs:",
+"U+1F300": ":cyclone:",
+"U+1F483": ":dancer:",
+"U+1F46F": ":dancers:",
+"U+1F361": ":dango:",
+"U+1F3AF": ":dart:",
+"U+1F4A8": ":dash:",
+"U+1F4C5": ":date:",
+"U+1F333": ":deciduous_tree:",
+"U+1F3EC": ":department_store:",
+"U+1F4A0": ":diamond_shape_with_a_dot_inside:",
+"U+02666": ":diamonds:",
+"U+1F61E": ":disappointed:",
+"U+1F625": ":disappointed_relieved:",
+"U+1F4AB": ":dizzy:",
+"U+1F635": ":dizzy_face:",
+"U+1F6AF": ":do_not_litter:",
+"U+1F436": ":dog:",
+"U+1F415": ":dog2:",
+"U+1F4B5": ":dollar:",
+"U+1F38E": ":dolls:",
+"U+1F42C": ":dolphin:",
+"U+1F6AA": ":door:",
+"U+1F369": ":doughnut:",
+"U+1F409": ":dragon:",
+"U+1F432": ":dragon_face:",
+"U+1F457": ":dress:",
+"U+1F42A": ":dromedary_camel:",
+"U+1F4A7": ":droplet:",
+"U+1F4C0": ":dvd:",
+"U+1F4E7": ":e-mail:",
+"U+1F442": ":ear:",
+"U+1F33E": ":ear_of_rice:",
+"U+1F30D": ":earth_africa:",
+"U+1F30E": ":earth_americas:",
+"U+1F30F": ":earth_asia:",
+"U+1F373": ":egg:",
+"U+1F346": ":eggplant:",
+"U+02734": ":eight_pointed_black_star:",
+"U+02733": ":eight_spoked_asterisk:",
+"U+1F50C": ":electric_plug:",
+"U+1F418": ":elephant:",
+"U+02709": ":email:",
+"U+1F51A": ":end:",
+"U+02709": ":envelope:",
+"U+1F4E9": ":envelope_with_arrow:",
+"U+1F4B6": ":euro:",
+"U+1F3F0": ":european_castle:",
+"U+1F3E4": ":european_post_office:",
+"U+1F332": ":evergreen_tree:",
+"U+02757": ":exclamation:",
+"U+1F611": ":expressionless:",
+"U+1F453": ":eyeglasses:",
+"U+1F440": ":eyes:",
+"U+1F44A": ":facepunch:",
+"U+1F3ED": ":factory:",
+"U+1F342": ":fallen_leaf:",
+"U+1F46A": ":family:",
+"U+023E9": ":fast_forward:",
+"U+1F4E0": ":fax:",
+"U+1F628": ":fearful:",
+"U+1F43E": ":feet:",
+"U+1F3A1": ":ferris_wheel:",
+"U+1F4C1": ":file_folder:",
+"U+1F525": ":fire:",
+"U+1F692": ":fire_engine:",
+"U+1F386": ":fireworks:",
+"U+1F313": ":first_quarter_moon:",
+"U+1F31B": ":first_quarter_moon_with_face:",
+"U+1F41F": ":fish:",
+"U+1F365": ":fish_cake:",
+"U+1F3A3": ":fishing_pole_and_fish:",
+"U+0270A": ":fist:",
+"U+1F38F": ":flags:",
+"U+1F526": ":flashlight:",
+"U+1F42C": ":flipper:",
+"U+1F4BE": ":floppy_disk:",
+"U+1F3B4": ":flower_playing_cards:",
+"U+1F633": ":flushed:",
+"U+1F301": ":foggy:",
+"U+1F3C8": ":football:",
+"U+1F463": ":footprints:",
+"U+1F374": ":fork_and_knife:",
+"U+026F2": ":fountain:",
+"U+1F340": ":four_leaf_clover:",
+"U+1F193": ":free:",
+"U+1F364": ":fried_shrimp:",
+"U+1F35F": ":fries:",
+"U+1F438": ":frog:",
+"U+1F626": ":frowning:",
+"U+026FD": ":fuelpump:",
+"U+1F315": ":full_moon:",
+"U+1F31D": ":full_moon_with_face:",
+"U+1F3B2": ":game_die:",
+"U+1F48E": ":gem:",
+"U+0264A": ":gemini:",
+"U+1F47B": ":ghost:",
+"U+1F381": ":gift:",
+"U+1F49D": ":gift_heart:",
+"U+1F467": ":girl:",
+"U+1F310": ":globe_with_meridians:",
+"U+1F410": ":goat:",
+"U+026F3": ":golf:",
+"U+1F347": ":grapes:",
+"U+1F34F": ":green_apple:",
+"U+1F4D7": ":green_book:",
+"U+1F49A": ":green_heart:",
+"U+02755": ":grey_exclamation:",
+"U+02754": ":grey_question:",
+"U+1F62C": ":grimacing:",
+"U+1F601": ":grin:",
+"U+1F600": ":grinning:",
+"U+1F482": ":guardsman:",
+"U+1F3B8": ":guitar:",
+"U+1F52B": ":gun:",
+"U+1F487": ":haircut:",
+"U+1F354": ":hamburger:",
+"U+1F528": ":hammer:",
+"U+1F439": ":hamster:",
+"U+0270B": ":hand:",
+"U+1F45C": ":handbag:",
+"U+1F4A9": ":hankey:",
+"U+1F425": ":hatched_chick:",
+"U+1F423": ":hatching_chick:",
+"U+1F3A7": ":headphones:",
+"U+1F649": ":hear_no_evil:",
+"U+02764": ":heart:",
+"U+1F49F": ":heart_decoration:",
+"U+1F60D": ":heart_eyes:",
+"U+1F63B": ":heart_eyes_cat:",
+"U+1F493": ":heartbeat:",
+"U+1F497": ":heartpulse:",
+"U+02665": ":hearts:",
+"U+02714": ":heavy_check_mark:",
+"U+02797": ":heavy_division_sign:",
+"U+1F4B2": ":heavy_dollar_sign:",
+"U+02757": ":heavy_exclamation_mark:",
+"U+02796": ":heavy_minus_sign:",
+"U+02716": ":heavy_multiplication_x:",
+"U+02795": ":heavy_plus_sign:",
+"U+1F681": ":helicopter:",
+"U+1F33F": ":herb:",
+"U+1F33A": ":hibiscus:",
+"U+1F506": ":high_brightness:",
+"U+1F460": ":high_heel:",
+"U+1F52A": ":hocho:",
+"U+1F36F": ":honey_pot:",
+"U+1F41D": ":honeybee:",
+"U+1F434": ":horse:",
+"U+1F3C7": ":horse_racing:",
+"U+1F3E5": ":hospital:",
+"U+1F3E8": ":hotel:",
+"U+02668": ":hotsprings:",
+"U+0231B": ":hourglass:",
+"U+023F3": ":hourglass_flowing_sand:",
+"U+1F3E0": ":house:",
+"U+1F3E1": ":house_with_garden:",
+"U+1F62F": ":hushed:",
+"U+1F368": ":ice_cream:",
+"U+1F366": ":icecream:",
+"U+1F194": ":id:",
+"U+1F250": ":ideograph_advantage:",
+"U+1F47F": ":imp:",
+"U+1F4E5": ":inbox_tray:",
+"U+1F4E8": ":incoming_envelope:",
+"U+1F481": ":information_desk_person:",
+"U+02139": ":information_source:",
+"U+1F607": ":innocent:",
+"U+02049": ":interrobang:",
+"U+1F4F1": ":iphone:",
+"U+1F3EE": ":izakaya_lantern:",
+"U+1F383": ":jack_o_lantern:",
+"U+1F5FE": ":japan:",
+"U+1F3EF": ":japanese_castle:",
+"U+1F47A": ":japanese_goblin:",
+"U+1F479": ":japanese_ogre:",
+"U+1F456": ":jeans:",
+"U+1F602": ":joy:",
+"U+1F639": ":joy_cat:",
+"U+1F511": ":key:",
+"U+1F51F": ":keycap_ten:",
+"U+1F458": ":kimono:",
+"U+1F48B": ":kiss:",
+"U+1F617": ":kissing:",
+"U+1F63D": ":kissing_cat:",
+"U+1F61A": ":kissing_closed_eyes:",
+"U+1F618": ":kissing_heart:",
+"U+1F619": ":kissing_smiling_eyes:",
+"U+1F428": ":koala:",
+"U+1F201": ":koko:",
+"U+1F3EE": ":lantern:",
+"U+1F535": ":large_blue_circle:",
+"U+1F537": ":large_blue_diamond:",
+"U+1F536": ":large_orange_diamond:",
+"U+1F317": ":last_quarter_moon:",
+"U+1F31C": ":last_quarter_moon_with_face:",
+"U+1F606": ":laughing:",
+"U+1F343": ":leaves:",
+"U+1F4D2": ":ledger:",
+"U+1F6C5": ":left_luggage:",
+"U+02194": ":left_right_arrow:",
+"U+021A9": ":leftwards_arrow_with_hook:",
+"U+1F34B": ":lemon:",
+"U+0264C": ":leo:",
+"U+1F406": ":leopard:",
+"U+0264E": ":libra:",
+"U+1F688": ":light_rail:",
+"U+1F517": ":link:",
+"U+1F444": ":lips:",
+"U+1F484": ":lipstick:",
+"U+1F512": ":lock:",
+"U+1F50F": ":lock_with_ink_pen:",
+"U+1F36D": ":lollipop:",
+"U+027BF": ":loop:",
+"U+1F4E2": ":loudspeaker:",
+"U+1F3E9": ":love_hotel:",
+"U+1F48C": ":love_letter:",
+"U+1F505": ":low_brightness:",
+"U+024C2": ":m:",
+"U+1F50D": ":mag:",
+"U+1F50E": ":mag_right:",
+"U+1F004": ":mahjong:",
+"U+1F4EB": ":mailbox:",
+"U+1F4EA": ":mailbox_closed:",
+"U+1F4EC": ":mailbox_with_mail:",
+"U+1F4ED": ":mailbox_with_no_mail:",
+"U+1F468": ":man:",
+"U+1F472": ":man_with_gua_pi_mao:",
+"U+1F473": ":man_with_turban:",
+"U+1F45E": ":mans_shoe:",
+"U+1F341": ":maple_leaf:",
+"U+1F637": ":mask:",
+"U+1F486": ":massage:",
+"U+1F356": ":meat_on_bone:",
+"U+1F4E3": ":mega:",
+"U+1F348": ":melon:",
+"U+1F4DD": ":memo:",
+"U+1F6B9": ":mens:",
+"U+1F687": ":metro:",
+"U+1F3A4": ":microphone:",
+"U+1F52C": ":microscope:",
+"U+1F30C": ":milky_way:",
+"U+1F690": ":minibus:",
+"U+1F4BD": ":minidisc:",
+"U+1F4F4": ":mobile_phone_off:",
+"U+1F4B8": ":money_with_wings:",
+"U+1F4B0": ":moneybag:",
+"U+1F412": ":monkey:",
+"U+1F435": ":monkey_face:",
+"U+1F69D": ":monorail:",
+"U+1F314": ":moon:",
+"U+1F393": ":mortar_board:",
+"U+1F5FB": ":mount_fuji:",
+"U+1F6B5": ":mountain_bicyclist:",
+"U+1F6A0": ":mountain_cableway:",
+"U+1F69E": ":mountain_railway:",
+"U+1F42D": ":mouse:",
+"U+1F401": ":mouse2:",
+"U+1F3A5": ":movie_camera:",
+"U+1F5FF": ":moyai:",
+"U+1F4AA": ":muscle:",
+"U+1F344": ":mushroom:",
+"U+1F3B9": ":musical_keyboard:",
+"U+1F3B5": ":musical_note:",
+"U+1F3BC": ":musical_score:",
+"U+1F507": ":mute:",
+"U+1F485": ":nail_care:",
+"U+1F4DB": ":name_badge:",
+"U+1F454": ":necktie:",
+"U+0274E": ":negative_squared_cross_mark:",
+"U+1F610": ":neutral_face:",
+"U+1F195": ":new:",
+"U+1F311": ":new_moon:",
+"U+1F31A": ":new_moon_with_face:",
+"U+1F4F0": ":newspaper:",
+"U+1F196": ":ng:",
+"U+1F515": ":no_bell:",
+"U+1F6B3": ":no_bicycles:",
+"U+026D4": ":no_entry:",
+"U+1F6AB": ":no_entry_sign:",
+"U+1F645": ":no_good:",
+"U+1F4F5": ":no_mobile_phones:",
+"U+1F636": ":no_mouth:",
+"U+1F6B7": ":no_pedestrians:",
+"U+1F6AD": ":no_smoking:",
+"U+1F6B1": ":non-potable_water:",
+"U+1F443": ":nose:",
+"U+1F4D3": ":notebook:",
+"U+1F4D4": ":notebook_with_decorative_cover:",
+"U+1F3B6": ":notes:",
+"U+1F529": ":nut_and_bolt:",
+"U+02B55": ":o:",
+"U+1F17E": ":o2:",
+"U+1F30A": ":ocean:",
+"U+1F419": ":octopus:",
+"U+1F362": ":oden:",
+"U+1F3E2": ":office:",
+"U+1F197": ":ok:",
+"U+1F44C": ":ok_hand:",
+"U+1F646": ":ok_woman:",
+"U+1F474": ":older_man:",
+"U+1F475": ":older_woman:",
+"U+1F51B": ":on:",
+"U+1F698": ":oncoming_automobile:",
+"U+1F68D": ":oncoming_bus:",
+"U+1F694": ":oncoming_police_car:",
+"U+1F696": ":oncoming_taxi:",
+"U+1F4D6": ":open_book:",
+"U+1F4C2": ":open_file_folder:",
+"U+1F450": ":open_hands:",
+"U+1F62E": ":open_mouth:",
+"U+026CE": ":ophiuchus:",
+"U+1F4D9": ":orange_book:",
+"U+1F4E4": ":outbox_tray:",
+"U+1F402": ":ox:",
+"U+1F4E6": ":package:",
+"U+1F4C4": ":page_facing_up:",
+"U+1F4C3": ":page_with_curl:",
+"U+1F4DF": ":pager:",
+"U+1F334": ":palm_tree:",
+"U+1F43C": ":panda_face:",
+"U+1F4CE": ":paperclip:",
+"U+1F17F": ":parking:",
+"U+0303D": ":part_alternation_mark:",
+"U+026C5": ":partly_sunny:",
+"U+1F6C2": ":passport_control:",
+"U+1F43E": ":paw_prints:",
+"U+1F351": ":peach:",
+"U+1F350": ":pear:",
+"U+1F4DD": ":pencil:",
+"U+0270F": ":pencil2:",
+"U+1F427": ":penguin:",
+"U+1F614": ":pensive:",
+"U+1F3AD": ":performing_arts:",
+"U+1F623": ":persevere:",
+"U+1F64D": ":person_frowning:",
+"U+1F471": ":person_with_blond_hair:",
+"U+1F64E": ":person_with_pouting_face:",
+"U+0260E": ":phone:",
+"U+1F437": ":pig:",
+"U+1F416": ":pig2:",
+"U+1F43D": ":pig_nose:",
+"U+1F48A": ":pill:",
+"U+1F34D": ":pineapple:",
+"U+02653": ":pisces:",
+"U+1F355": ":pizza:",
+"U+1F447": ":point_down:",
+"U+1F448": ":point_left:",
+"U+1F449": ":point_right:",
+"U+0261D": ":point_up:",
+"U+1F446": ":point_up_2:",
+"U+1F693": ":police_car:",
+"U+1F429": ":poodle:",
+"U+1F4A9": ":poop:",
+"U+1F3E3": ":post_office:",
+"U+1F4EF": ":postal_horn:",
+"U+1F4EE": ":postbox:",
+"U+1F6B0": ":potable_water:",
+"U+1F45D": ":pouch:",
+"U+1F357": ":poultry_leg:",
+"U+1F4B7": ":pound:",
+"U+1F63E": ":pouting_cat:",
+"U+1F64F": ":pray:",
+"U+1F478": ":princess:",
+"U+1F44A": ":punch:",
+"U+1F49C": ":purple_heart:",
+"U+1F45B": ":purse:",
+"U+1F4CC": ":pushpin:",
+"U+1F6AE": ":put_litter_in_its_place:",
+"U+02753": ":question:",
+"U+1F430": ":rabbit:",
+"U+1F407": ":rabbit2:",
+"U+1F40E": ":racehorse:",
+"U+1F4FB": ":radio:",
+"U+1F518": ":radio_button:",
+"U+1F621": ":rage:",
+"U+1F683": ":railway_car:",
+"U+1F308": ":rainbow:",
+"U+0270B": ":raised_hand:",
+"U+1F64C": ":raised_hands:",
+"U+1F64B": ":raising_hand:",
+"U+1F40F": ":ram:",
+"U+1F35C": ":ramen:",
+"U+1F400": ":rat:",
+"U+0267B": ":recycle:",
+"U+1F697": ":red_car:",
+"U+1F534": ":red_circle:",
+"U+000AE": ":registered:",
+"U+0263A": ":relaxed:",
+"U+1F60C": ":relieved:",
+"U+1F501": ":repeat:",
+"U+1F502": ":repeat_one:",
+"U+1F6BB": ":restroom:",
+"U+1F49E": ":revolving_hearts:",
+"U+023EA": ":rewind:",
+"U+1F380": ":ribbon:",
+"U+1F35A": ":rice:",
+"U+1F359": ":rice_ball:",
+"U+1F358": ":rice_cracker:",
+"U+1F391": ":rice_scene:",
+"U+1F48D": ":ring:",
+"U+1F680": ":rocket:",
+"U+1F3A2": ":roller_coaster:",
+"U+1F413": ":rooster:",
+"U+1F339": ":rose:",
+"U+1F6A8": ":rotating_light:",
+"U+1F4CD": ":round_pushpin:",
+"U+1F6A3": ":rowboat:",
+"U+1F3C9": ":rugby_football:",
+"U+1F3C3": ":runner:",
+"U+1F3C3": ":running:",
+"U+1F3BD": ":running_shirt_with_sash:",
+"U+1F202": ":sa:",
+"U+02650": ":sagittarius:",
+"U+026F5": ":sailboat:",
+"U+1F376": ":sake:",
+"U+1F461": ":sandal:",
+"U+1F385": ":santa:",
+"U+1F4E1": ":satellite:",
+"U+1F606": ":satisfied:",
+"U+1F3B7": ":saxophone:",
+"U+1F3EB": ":school:",
+"U+1F392": ":school_satchel:",
+"U+02702": ":scissors:",
+"U+0264F": ":scorpius:",
+"U+1F631": ":scream:",
+"U+1F640": ":scream_cat:",
+"U+1F4DC": ":scroll:",
+"U+1F4BA": ":seat:",
+"U+03299": ":secret:",
+"U+1F648": ":see_no_evil:",
+"U+1F331": ":seedling:",
+"U+1F367": ":shaved_ice:",
+"U+1F411": ":sheep:",
+"U+1F41A": ":shell:",
+"U+1F6A2": ":ship:",
+"U+1F455": ":shirt:",
+"U+1F4A9": ":shit:",
+"U+1F45E": ":shoe:",
+"U+1F6BF": ":shower:",
+"U+1F4F6": ":signal_strength:",
+"U+1F52F": ":six_pointed_star:",
+"U+1F3BF": ":ski:",
+"U+1F480": ":skull:",
+"U+1F634": ":sleeping:",
+"U+1F62A": ":sleepy:",
+"U+1F3B0": ":slot_machine:",
+"U+1F539": ":small_blue_diamond:",
+"U+1F538": ":small_orange_diamond:",
+"U+1F53A": ":small_red_triangle:",
+"U+1F53B": ":small_red_triangle_down:",
+"U+1F604": ":smile:",
+"U+1F638": ":smile_cat:",
+"U+1F603": ":smiley:",
+"U+1F63A": ":smiley_cat:",
+"U+1F608": ":smiling_imp:",
+"U+1F60F": ":smirk:",
+"U+1F63C": ":smirk_cat:",
+"U+1F6AC": ":smoking:",
+"U+1F40C": ":snail:",
+"U+1F40D": ":snake:",
+"U+1F3C2": ":snowboarder:",
+"U+02744": ":snowflake:",
+"U+026C4": ":snowman:",
+"U+1F62D": ":sob:",
+"U+026BD": ":soccer:",
+"U+1F51C": ":soon:",
+"U+1F198": ":sos:",
+"U+1F509": ":sound:",
+"U+1F47E": ":space_invader:",
+"U+02660": ":spades:",
+"U+1F35D": ":spaghetti:",
+"U+02747": ":sparkle:",
+"U+1F387": ":sparkler:",
+"U+02728": ":sparkles:",
+"U+1F496": ":sparkling_heart:",
+"U+1F64A": ":speak_no_evil:",
+"U+1F50A": ":speaker:",
+"U+1F4AC": ":speech_balloon:",
+"U+1F6A4": ":speedboat:",
+"U+02B50": ":star:",
+"U+1F31F": ":star2:",
+"U+1F303": ":stars:",
+"U+1F689": ":station:",
+"U+1F5FD": ":statue_of_liberty:",
+"U+1F682": ":steam_locomotive:",
+"U+1F372": ":stew:",
+"U+1F4CF": ":straight_ruler:",
+"U+1F353": ":strawberry:",
+"U+1F61B": ":stuck_out_tongue:",
+"U+1F61D": ":stuck_out_tongue_closed_eyes:",
+"U+1F61C": ":stuck_out_tongue_winking_eye:",
+"U+1F31E": ":sun_with_face:",
+"U+1F33B": ":sunflower:",
+"U+1F60E": ":sunglasses:",
+"U+02600": ":sunny:",
+"U+1F305": ":sunrise:",
+"U+1F304": ":sunrise_over_mountains:",
+"U+1F3C4": ":surfer:",
+"U+1F363": ":sushi:",
+"U+1F69F": ":suspension_railway:",
+"U+1F613": ":sweat:",
+"U+1F4A6": ":sweat_drops:",
+"U+1F605": ":sweat_smile:",
+"U+1F360": ":sweet_potato:",
+"U+1F3CA": ":swimmer:",
+"U+1F523": ":symbols:",
+"U+1F489": ":syringe:",
+"U+1F389": ":tada:",
+"U+1F38B": ":tanabata_tree:",
+"U+1F34A": ":tangerine:",
+"U+02649": ":taurus:",
+"U+1F695": ":taxi:",
+"U+1F375": ":tea:",
+"U+0260E": ":telephone:",
+"U+1F4DE": ":telephone_receiver:",
+"U+1F52D": ":telescope:",
+"U+1F3BE": ":tennis:",
+"U+026FA": ":tent:",
+"U+1F4AD": ":thought_balloon:",
+"U+1F44E": ":thumbsdown:",
+"U+1F44D": ":thumbsup:",
+"U+1F3AB": ":ticket:",
+"U+1F42F": ":tiger:",
+"U+1F405": ":tiger2:",
+"U+1F62B": ":tired_face:",
+"U+02122": ":tm:",
+"U+1F6BD": ":toilet:",
+"U+1F5FC": ":tokyo_tower:",
+"U+1F345": ":tomato:",
+"U+1F445": ":tongue:",
+"U+1F51D": ":top:",
+"U+1F3A9": ":tophat:",
+"U+1F69C": ":tractor:",
+"U+1F6A5": ":traffic_light:",
+"U+1F683": ":train:",
+"U+1F686": ":train2:",
+"U+1F68A": ":tram:",
+"U+1F6A9": ":triangular_flag_on_post:",
+"U+1F4D0": ":triangular_ruler:",
+"U+1F531": ":trident:",
+"U+1F624": ":triumph:",
+"U+1F68E": ":trolleybus:",
+"U+1F3C6": ":trophy:",
+"U+1F379": ":tropical_drink:",
+"U+1F420": ":tropical_fish:",
+"U+1F69A": ":truck:",
+"U+1F3BA": ":trumpet:",
+"U+1F455": ":tshirt:",
+"U+1F337": ":tulip:",
+"U+1F422": ":turtle:",
+"U+1F4FA": ":tv:",
+"U+1F500": ":twisted_rightwards_arrows:",
+"U+1F495": ":two_hearts:",
+"U+1F46C": ":two_men_holding_hands:",
+"U+1F46D": ":two_women_holding_hands:",
+"U+1F239": ":u5272:",
+"U+1F234": ":u5408:",
+"U+1F23A": ":u55b6:",
+"U+1F22F": ":u6307:",
+"U+1F237": ":u6708:",
+"U+1F236": ":u6709:",
+"U+1F235": ":u6e80:",
+"U+1F21A": ":u7121:",
+"U+1F238": ":u7533:",
+"U+1F232": ":u7981:",
+"U+1F233": ":u7a7a:",
+"U+02614": ":umbrella:",
+"U+1F612": ":unamused:",
+"U+1F51E": ":underage:",
+"U+1F513": ":unlock:",
+"U+1F199": ":up:",
+"U+0270C": ":v:",
+"U+1F6A6": ":vertical_traffic_light:",
+"U+1F4FC": ":vhs:",
+"U+1F4F3": ":vibration_mode:",
+"U+1F4F9": ":video_camera:",
+"U+1F3AE": ":video_game:",
+"U+1F3BB": ":violin:",
+"U+0264D": ":virgo:",
+"U+1F30B": ":volcano:",
+"U+1F19A": ":vs:",
+"U+1F6B6": ":walking:",
+"U+1F318": ":waning_crescent_moon:",
+"U+1F316": ":waning_gibbous_moon:",
+"U+026A0": ":warning:",
+"U+0231A": ":watch:",
+"U+1F403": ":water_buffalo:",
+"U+1F349": ":watermelon:",
+"U+1F44B": ":wave:",
+"U+03030": ":wavy_dash:",
+"U+1F312": ":waxing_crescent_moon:",
+"U+1F314": ":waxing_gibbous_moon:",
+"U+1F6BE": ":wc:",
+"U+1F629": ":weary:",
+"U+1F492": ":wedding:",
+"U+1F433": ":whale:",
+"U+1F40B": ":whale2:",
+"U+0267F": ":wheelchair:",
+"U+02705": ":white_check_mark:",
+"U+026AA": ":white_circle:",
+"U+1F4AE": ":white_flower:",
+"U+02B1C": ":white_large_square:",
+"U+025FD": ":white_medium_small_square:",
+"U+025FB": ":white_medium_square:",
+"U+025AB": ":white_small_square:",
+"U+1F533": ":white_square_button:",
+"U+1F390": ":wind_chime:",
+"U+1F377": ":wine_glass:",
+"U+1F609": ":wink:",
+"U+1F43A": ":wolf:",
+"U+1F469": ":woman:",
+"U+1F45A": ":womans_clothes:",
+"U+1F452": ":womans_hat:",
+"U+1F6BA": ":womens:",
+"U+1F61F": ":worried:",
+"U+1F527": ":wrench:",
+"U+0274C": ":x:",
+"U+1F49B": ":yellow_heart:",
+"U+1F4B4": ":yen:",
+"U+1F60B": ":yum:",
+"U+026A1": ":zap:",
+"U+1F4A4": ":zzz:",
+}
+
+def to_java_repr(s):
+ s = s.decode('utf-8').encode('utf-16be')
+ rep = ""
+ i = 0
+ for c in s:
+ if i <= 0:
+ i = 2
+ rep += "\\u"
+ rep += hex(ord(c))[2:].zfill(2).upper()
+ i -= 1
+ return rep
+
+last_type = ""
+total = 0
+i = 0
+while i < len(emoji_list):
+ emoji_type = emoji_list[i]
+ ucode = emoji_list[i + 1]
+ bytecode = to_java_repr(emoji_list[i + 2])
+ desc = emoji_list[i + 3]
+ name = name_map[ucode] if ucode in name_map else ""
+ i += 4
+ if emoji_type != last_type:
+ if last_type != "":
+ print "});"
+ print "emoji_type_map.put(%s, new Emoji[]" % emoji_type
+ print "{"
+ last_type = emoji_type
+ print '\tnew Emoji("%s", "%s", "%s"),' % (name, bytecode, desc)
+ total += 1
+if last_type != "":
+ print "});"
+
+# print "Total: %d" % total
diff --git a/project.properties b/project.properties
index 916037e..00cf62b 100644
--- a/project.properties
+++ b/project.properties
@@ -11,4 +11,4 @@
#proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt
# Project target.
-target=android-23
+target=android-22
diff --git a/res/layout/emoji_pane.xml b/res/layout/emoji_pane.xml
new file mode 100644
index 0000000..8fe9fe4
--- /dev/null
+++ b/res/layout/emoji_pane.xml
@@ -0,0 +1,7 @@
+
+
+
+
diff --git a/res/layout/input.xml b/res/layout/keyboard.xml
similarity index 100%
rename from res/layout/input.xml
rename to res/layout/keyboard.xml
diff --git a/srcs/juloo.keyboard2/Emoji.java b/srcs/juloo.keyboard2/Emoji.java
new file mode 100644
index 0000000..ed28603
--- /dev/null
+++ b/srcs/juloo.keyboard2/Emoji.java
@@ -0,0 +1,906 @@
+package juloo.keyboard2;
+
+import java.util.HashMap;
+
+public class Emoji
+{
+ public static final int TYPE_EMOTICONS = 1;
+ public static final int TYPE_DINGBATS = 2;
+ public static final int TYPE_TRANSPORT = 3;
+ public static final int TYPE_UNCATEGORIZED = 4;
+ public static final int TYPE_ENCLOSED_CHARACTERS = 5;
+
+ private final String _name;
+ private final String _bytecode;
+ private final String _desc;
+
+ private Emoji(String name, String bytecode, String desc)
+ {
+ _name = name;
+ _bytecode = bytecode;
+ _desc = desc;
+ }
+
+ public String getName()
+ {
+ return (_name);
+ }
+
+ public String getBytecode()
+ {
+ return (_bytecode);
+ }
+
+ public String getDescription()
+ {
+ return (_desc);
+ }
+
+ private static final HashMap emoji_type_map = new HashMap();
+
+ public static Emoji[] getEmojiByType(int type)
+ {
+ return (emoji_type_map.get(type));
+ }
+
+ static
+ {
+ emoji_type_map.put(TYPE_EMOTICONS, new Emoji[]
+ {
+ new Emoji(":grin:", "\uD83D\uDE01", "grinning face with smiling eyes"),
+ new Emoji(":joy:", "\uD83D\uDE02", "face with tears of joy"),
+ new Emoji(":smiley:", "\uD83D\uDE03", "smiling face with open mouth"),
+ new Emoji(":smile:", "\uD83D\uDE04", "smiling face with open mouth and smiling eyes"),
+ new Emoji(":sweat_smile:", "\uD83D\uDE05", "smiling face with open mouth and cold sweat"),
+ new Emoji(":satisfied:", "\uD83D\uDE06", "smiling face with open mouth and tightly-closed eyes"),
+ new Emoji(":wink:", "\uD83D\uDE09", "winking face"),
+ new Emoji(":blush:", "\uD83D\uDE0A", "smiling face with smiling eyes"),
+ new Emoji(":yum:", "\uD83D\uDE0B", "face savouring delicious food"),
+ new Emoji(":relieved:", "\uD83D\uDE0C", "relieved face"),
+ new Emoji(":heart_eyes:", "\uD83D\uDE0D", "smiling face with heart-shaped eyes"),
+ new Emoji(":smirk:", "\uD83D\uDE0F", "smirking face"),
+ new Emoji(":unamused:", "\uD83D\uDE12", "unamused face"),
+ new Emoji(":sweat:", "\uD83D\uDE13", "face with cold sweat"),
+ new Emoji(":pensive:", "\uD83D\uDE14", "pensive face"),
+ new Emoji(":confounded:", "\uD83D\uDE16", "confounded face"),
+ new Emoji(":kissing_heart:", "\uD83D\uDE18", "face throwing a kiss"),
+ new Emoji(":kissing_closed_eyes:", "\uD83D\uDE1A", "kissing face with closed eyes"),
+ new Emoji(":stuck_out_tongue_winking_eye:", "\uD83D\uDE1C", "face with stuck-out tongue and winking eye"),
+ new Emoji(":stuck_out_tongue_closed_eyes:", "\uD83D\uDE1D", "face with stuck-out tongue and tightly-closed eyes"),
+ new Emoji(":disappointed:", "\uD83D\uDE1E", "disappointed face"),
+ new Emoji(":angry:", "\uD83D\uDE20", "angry face"),
+ new Emoji(":rage:", "\uD83D\uDE21", "pouting face"),
+ new Emoji(":cry:", "\uD83D\uDE22", "crying face"),
+ new Emoji(":persevere:", "\uD83D\uDE23", "persevering face"),
+ new Emoji(":triumph:", "\uD83D\uDE24", "face with look of triumph"),
+ new Emoji(":disappointed_relieved:", "\uD83D\uDE25", "disappointed but relieved face"),
+ new Emoji(":fearful:", "\uD83D\uDE28", "fearful face"),
+ new Emoji(":weary:", "\uD83D\uDE29", "weary face"),
+ new Emoji(":sleepy:", "\uD83D\uDE2A", "sleepy face"),
+ new Emoji(":tired_face:", "\uD83D\uDE2B", "tired face"),
+ new Emoji(":sob:", "\uD83D\uDE2D", "loudly crying face"),
+ new Emoji(":cold_sweat:", "\uD83D\uDE30", "face with open mouth and cold sweat"),
+ new Emoji(":scream:", "\uD83D\uDE31", "face screaming in fear"),
+ new Emoji(":astonished:", "\uD83D\uDE32", "astonished face"),
+ new Emoji(":flushed:", "\uD83D\uDE33", "flushed face"),
+ new Emoji(":dizzy_face:", "\uD83D\uDE35", "dizzy face"),
+ new Emoji(":mask:", "\uD83D\uDE37", "face with medical mask"),
+ new Emoji(":smile_cat:", "\uD83D\uDE38", "grinning cat face with smiling eyes"),
+ new Emoji(":joy_cat:", "\uD83D\uDE39", "cat face with tears of joy"),
+ new Emoji(":smiley_cat:", "\uD83D\uDE3A", "smiling cat face with open mouth"),
+ new Emoji(":heart_eyes_cat:", "\uD83D\uDE3B", "smiling cat face with heart-shaped eyes"),
+ new Emoji(":smirk_cat:", "\uD83D\uDE3C", "cat face with wry smile"),
+ new Emoji(":kissing_cat:", "\uD83D\uDE3D", "kissing cat face with closed eyes"),
+ new Emoji(":pouting_cat:", "\uD83D\uDE3E", "pouting cat face"),
+ new Emoji(":crying_cat_face:", "\uD83D\uDE3F", "crying cat face"),
+ new Emoji(":scream_cat:", "\uD83D\uDE40", "weary cat face"),
+ new Emoji(":no_good:", "\uD83D\uDE45", "face with no good gesture"),
+ new Emoji(":ok_woman:", "\uD83D\uDE46", "face with ok gesture"),
+ new Emoji(":bow:", "\uD83D\uDE47", "person bowing deeply"),
+ new Emoji(":see_no_evil:", "\uD83D\uDE48", "see-no-evil monkey"),
+ new Emoji(":hear_no_evil:", "\uD83D\uDE49", "hear-no-evil monkey"),
+ new Emoji(":speak_no_evil:", "\uD83D\uDE4A", "speak-no-evil monkey"),
+ new Emoji(":raising_hand:", "\uD83D\uDE4B", "happy person raising one hand"),
+ new Emoji(":raised_hands:", "\uD83D\uDE4C", "person raising both hands in celebration"),
+ new Emoji(":person_frowning:", "\uD83D\uDE4D", "person frowning"),
+ new Emoji(":person_with_pouting_face:", "\uD83D\uDE4E", "person with pouting face"),
+ new Emoji(":pray:", "\uD83D\uDE4F", "person with folded hands"),
+ new Emoji(":grinning:", "\uD83D\uDE00", "grinning face"),
+ new Emoji(":innocent:", "\uD83D\uDE07", "smiling face with halo"),
+ new Emoji(":smiling_imp:", "\uD83D\uDE08", "smiling face with horns"),
+ new Emoji(":sunglasses:", "\uD83D\uDE0E", "smiling face with sunglasses"),
+ new Emoji(":neutral_face:", "\uD83D\uDE10", "neutral face"),
+ new Emoji(":expressionless:", "\uD83D\uDE11", "expressionless face"),
+ new Emoji(":confused:", "\uD83D\uDE15", "confused face"),
+ new Emoji(":kissing:", "\uD83D\uDE17", "kissing face"),
+ new Emoji(":kissing_smiling_eyes:", "\uD83D\uDE19", "kissing face with smiling eyes"),
+ new Emoji(":stuck_out_tongue:", "\uD83D\uDE1B", "face with stuck-out tongue"),
+ new Emoji(":worried:", "\uD83D\uDE1F", "worried face"),
+ new Emoji(":frowning:", "\uD83D\uDE26", "frowning face with open mouth"),
+ new Emoji(":anguished:", "\uD83D\uDE27", "anguished face"),
+ new Emoji(":grimacing:", "\uD83D\uDE2C", "grimacing face"),
+ new Emoji(":open_mouth:", "\uD83D\uDE2E", "face with open mouth"),
+ new Emoji(":hushed:", "\uD83D\uDE2F", "hushed face"),
+ new Emoji(":sleeping:", "\uD83D\uDE34", "sleeping face"),
+ new Emoji(":no_mouth:", "\uD83D\uDE36", "face without mouth"),
+ });
+ emoji_type_map.put(TYPE_DINGBATS, new Emoji[]
+ {
+ new Emoji("", "\u2702", "black scissors"),
+ new Emoji("", "\u2705", "white heavy check mark"),
+ new Emoji("", "\u2708", "airplane"),
+ new Emoji("", "\u2709", "envelope"),
+ new Emoji("", "\u270A", "raised fist"),
+ new Emoji("", "\u270B", "raised hand"),
+ new Emoji("", "\u270C", "victory hand"),
+ new Emoji("", "\u270F", "pencil"),
+ new Emoji("", "\u2712", "black nib"),
+ new Emoji("", "\u2714", "heavy check mark"),
+ new Emoji("", "\u2716", "heavy multiplication x"),
+ new Emoji("", "\u2728", "sparkles"),
+ new Emoji("", "\u2733", "eight spoked asterisk"),
+ new Emoji("", "\u2734", "eight pointed black star"),
+ new Emoji("", "\u2744", "snowflake"),
+ new Emoji("", "\u2747", "sparkle"),
+ new Emoji("", "\u274C", "cross mark"),
+ new Emoji("", "\u274E", "negative squared cross mark"),
+ new Emoji("", "\u2753", "black question mark ornament"),
+ new Emoji("", "\u2754", "white question mark ornament"),
+ new Emoji("", "\u2755", "white exclamation mark ornament"),
+ new Emoji("", "\u2757", "heavy exclamation mark symbol"),
+ new Emoji("", "\u2764", "heavy black heart"),
+ new Emoji("", "\u2795", "heavy plus sign"),
+ new Emoji("", "\u2796", "heavy minus sign"),
+ new Emoji("", "\u2797", "heavy division sign"),
+ new Emoji("", "\u27A1", "black rightwards arrow"),
+ new Emoji("", "\u27B0", "curly loop"),
+ });
+ emoji_type_map.put(TYPE_TRANSPORT, new Emoji[]
+ {
+ new Emoji(":rocket:", "\uD83D\uDE80", "rocket"),
+ new Emoji(":train:", "\uD83D\uDE83", "railway car"),
+ new Emoji(":bullettrain_side:", "\uD83D\uDE84", "high-speed train"),
+ new Emoji(":bullettrain_front:", "\uD83D\uDE85", "high-speed train with bullet nose"),
+ new Emoji(":metro:", "\uD83D\uDE87", "metro"),
+ new Emoji(":station:", "\uD83D\uDE89", "station"),
+ new Emoji(":bus:", "\uD83D\uDE8C", "bus"),
+ new Emoji(":busstop:", "\uD83D\uDE8F", "bus stop"),
+ new Emoji(":ambulance:", "\uD83D\uDE91", "ambulance"),
+ new Emoji(":fire_engine:", "\uD83D\uDE92", "fire engine"),
+ new Emoji(":police_car:", "\uD83D\uDE93", "police car"),
+ new Emoji(":taxi:", "\uD83D\uDE95", "taxi"),
+ new Emoji(":red_car:", "\uD83D\uDE97", "automobile"),
+ new Emoji(":blue_car:", "\uD83D\uDE99", "recreational vehicle"),
+ new Emoji(":truck:", "\uD83D\uDE9A", "delivery truck"),
+ new Emoji(":ship:", "\uD83D\uDEA2", "ship"),
+ new Emoji(":speedboat:", "\uD83D\uDEA4", "speedboat"),
+ new Emoji(":traffic_light:", "\uD83D\uDEA5", "horizontal traffic light"),
+ new Emoji(":construction:", "\uD83D\uDEA7", "construction sign"),
+ new Emoji(":rotating_light:", "\uD83D\uDEA8", "police cars revolving light"),
+ new Emoji(":triangular_flag_on_post:", "\uD83D\uDEA9", "triangular flag on post"),
+ new Emoji(":door:", "\uD83D\uDEAA", "door"),
+ new Emoji(":no_entry_sign:", "\uD83D\uDEAB", "no entry sign"),
+ new Emoji(":smoking:", "\uD83D\uDEAC", "smoking symbol"),
+ new Emoji(":no_smoking:", "\uD83D\uDEAD", "no smoking symbol"),
+ new Emoji(":bike:", "\uD83D\uDEB2", "bicycle"),
+ new Emoji(":walking:", "\uD83D\uDEB6", "pedestrian"),
+ new Emoji(":mens:", "\uD83D\uDEB9", "mens symbol"),
+ new Emoji(":womens:", "\uD83D\uDEBA", "womens symbol"),
+ new Emoji(":restroom:", "\uD83D\uDEBB", "restroom"),
+ new Emoji(":baby_symbol:", "\uD83D\uDEBC", "baby symbol"),
+ new Emoji(":toilet:", "\uD83D\uDEBD", "toilet"),
+ new Emoji(":wc:", "\uD83D\uDEBE", "water closet"),
+ new Emoji(":bath:", "\uD83D\uDEC0", "bath"),
+ new Emoji(":helicopter:", "\uD83D\uDE81", "helicopter"),
+ new Emoji(":steam_locomotive:", "\uD83D\uDE82", "steam locomotive"),
+ new Emoji(":train2:", "\uD83D\uDE86", "train"),
+ new Emoji(":light_rail:", "\uD83D\uDE88", "light rail"),
+ new Emoji(":tram:", "\uD83D\uDE8A", "tram"),
+ new Emoji(":oncoming_bus:", "\uD83D\uDE8D", "oncoming bus"),
+ new Emoji(":trolleybus:", "\uD83D\uDE8E", "trolleybus"),
+ new Emoji(":minibus:", "\uD83D\uDE90", "minibus"),
+ new Emoji(":oncoming_police_car:", "\uD83D\uDE94", "oncoming police car"),
+ new Emoji(":oncoming_taxi:", "\uD83D\uDE96", "oncoming taxi"),
+ new Emoji(":oncoming_automobile:", "\uD83D\uDE98", "oncoming automobile"),
+ new Emoji(":articulated_lorry:", "\uD83D\uDE9B", "articulated lorry"),
+ new Emoji(":tractor:", "\uD83D\uDE9C", "tractor"),
+ new Emoji(":monorail:", "\uD83D\uDE9D", "monorail"),
+ new Emoji(":mountain_railway:", "\uD83D\uDE9E", "mountain railway"),
+ new Emoji(":suspension_railway:", "\uD83D\uDE9F", "suspension railway"),
+ new Emoji(":mountain_cableway:", "\uD83D\uDEA0", "mountain cableway"),
+ new Emoji(":aerial_tramway:", "\uD83D\uDEA1", "aerial tramway"),
+ new Emoji(":rowboat:", "\uD83D\uDEA3", "rowboat"),
+ new Emoji(":vertical_traffic_light:", "\uD83D\uDEA6", "vertical traffic light"),
+ new Emoji(":put_litter_in_its_place:", "\uD83D\uDEAE", "put litter in its place symbol"),
+ new Emoji(":do_not_litter:", "\uD83D\uDEAF", "do not litter symbol"),
+ new Emoji(":potable_water:", "\uD83D\uDEB0", "potable water symbol"),
+ new Emoji(":non-potable_water:", "\uD83D\uDEB1", "non-potable water symbol"),
+ new Emoji(":no_bicycles:", "\uD83D\uDEB3", "no bicycles"),
+ new Emoji(":bicyclist:", "\uD83D\uDEB4", "bicyclist"),
+ new Emoji(":mountain_bicyclist:", "\uD83D\uDEB5", "mountain bicyclist"),
+ new Emoji(":no_pedestrians:", "\uD83D\uDEB7", "no pedestrians"),
+ new Emoji(":children_crossing:", "\uD83D\uDEB8", "children crossing"),
+ new Emoji(":shower:", "\uD83D\uDEBF", "shower"),
+ new Emoji(":bathtub:", "\uD83D\uDEC1", "bathtub"),
+ new Emoji(":passport_control:", "\uD83D\uDEC2", "passport control"),
+ new Emoji(":customs:", "\uD83D\uDEC3", "customs"),
+ new Emoji(":baggage_claim:", "\uD83D\uDEC4", "baggage claim"),
+ new Emoji(":left_luggage:", "\uD83D\uDEC5", "left luggage"),
+ });
+ emoji_type_map.put(TYPE_ENCLOSED_CHARACTERS, new Emoji[]
+ {
+ new Emoji("", "\u24C2", "circled latin capital letter m"),
+ new Emoji(":a:", "\uD83C\uDD70", "negative squared latin capital letter a"),
+ new Emoji(":b:", "\uD83C\uDD71", "negative squared latin capital letter b"),
+ new Emoji(":o2:", "\uD83C\uDD7E", "negative squared latin capital letter o"),
+ new Emoji(":parking:", "\uD83C\uDD7F", "negative squared latin capital letter p"),
+ new Emoji(":ab:", "\uD83C\uDD8E", "negative squared ab"),
+ new Emoji(":cl:", "\uD83C\uDD91", "squared cl"),
+ new Emoji(":cool:", "\uD83C\uDD92", "squared cool"),
+ new Emoji(":free:", "\uD83C\uDD93", "squared free"),
+ new Emoji(":id:", "\uD83C\uDD94", "squared id"),
+ new Emoji(":new:", "\uD83C\uDD95", "squared new"),
+ new Emoji(":ng:", "\uD83C\uDD96", "squared ng"),
+ new Emoji(":ok:", "\uD83C\uDD97", "squared ok"),
+ new Emoji(":sos:", "\uD83C\uDD98", "squared sos"),
+ new Emoji(":up:", "\uD83C\uDD99", "squared up with exclamation mark"),
+ new Emoji(":vs:", "\uD83C\uDD9A", "squared vs"),
+ new Emoji("", "\uD83C\uDDE9\uD83C\uDDEA", "regional indicator symbol letter d + regional indicator symbol letter e"),
+ new Emoji("", "\uD83C\uDDEC\uD83C\uDDE7", "regional indicator symbol letter g + regional indicator symbol letter b"),
+ new Emoji("", "\uD83C\uDDE8\uD83C\uDDF3", "regional indicator symbol letter c + regional indicator symbol letter n"),
+ new Emoji("", "\uD83C\uDDEF\uD83C\uDDF5", "regional indicator symbol letter j + regional indicator symbol letter p"),
+ new Emoji("", "\uD83C\uDDF0\uD83C\uDDF7", "regional indicator symbol letter k + regional indicator symbol letter r"),
+ new Emoji("", "\uD83C\uDDEB\uD83C\uDDF7", "regional indicator symbol letter f + regional indicator symbol letter r"),
+ new Emoji("", "\uD83C\uDDEA\uD83C\uDDF8", "regional indicator symbol letter e + regional indicator symbol letter s"),
+ new Emoji("", "\uD83C\uDDEE\uD83C\uDDF9", "regional indicator symbol letter i + regional indicator symbol letter t"),
+ new Emoji("", "\uD83C\uDDFA\uD83C\uDDF8", "regional indicator symbol letter u + regional indicator symbol letter s"),
+ new Emoji("", "\uD83C\uDDF7\uD83C\uDDFA", "regional indicator symbol letter r + regional indicator symbol letter u"),
+ new Emoji(":koko:", "\uD83C\uDE01", "squared katakana koko"),
+ new Emoji(":sa:", "\uD83C\uDE02", "squared katakana sa"),
+ new Emoji(":u7121:", "\uD83C\uDE1A", "squared cjk unified ideograph-7121"),
+ new Emoji(":u6307:", "\uD83C\uDE2F", "squared cjk unified ideograph-6307"),
+ new Emoji(":u7981:", "\uD83C\uDE32", "squared cjk unified ideograph-7981"),
+ new Emoji(":u7a7a:", "\uD83C\uDE33", "squared cjk unified ideograph-7a7a"),
+ new Emoji(":u5408:", "\uD83C\uDE34", "squared cjk unified ideograph-5408"),
+ new Emoji(":u6e80:", "\uD83C\uDE35", "squared cjk unified ideograph-6e80"),
+ new Emoji(":u6709:", "\uD83C\uDE36", "squared cjk unified ideograph-6709"),
+ new Emoji(":u6708:", "\uD83C\uDE37", "squared cjk unified ideograph-6708"),
+ new Emoji(":u7533:", "\uD83C\uDE38", "squared cjk unified ideograph-7533"),
+ new Emoji(":u5272:", "\uD83C\uDE39", "squared cjk unified ideograph-5272"),
+ new Emoji(":u55b6:", "\uD83C\uDE3A", "squared cjk unified ideograph-55b6"),
+ new Emoji(":ideograph_advantage:", "\uD83C\uDE50", "circled ideograph advantage"),
+ new Emoji(":accept:", "\uD83C\uDE51", "circled ideograph accept"),
+ });
+ emoji_type_map.put(TYPE_UNCATEGORIZED, new Emoji[]
+ {
+ new Emoji("", "\u00A9", "copyright sign"),
+ new Emoji("", "\u00AE", "registered sign"),
+ new Emoji("", "\u203C", "double exclamation mark"),
+ new Emoji("", "\u2049", "exclamation question mark"),
+ new Emoji("", "\u0038\u20E3", "digit eight + combining enclosing keycap"),
+ new Emoji("", "\u0039\u20E3", "digit nine + combining enclosing keycap"),
+ new Emoji("", "\u0037\u20E3", "digit seven + combining enclosing keycap"),
+ new Emoji("", "\u0036\u20E3", "digit six + combining enclosing keycap"),
+ new Emoji("", "\u0031\u20E3", "digit one + combining enclosing keycap"),
+ new Emoji("", "\u0030\u20E3", "digit zero + combining enclosing keycap"),
+ new Emoji("", "\u0032\u20E3", "digit two + combining enclosing keycap"),
+ new Emoji("", "\u0033\u20E3", "digit three + combining enclosing keycap"),
+ new Emoji("", "\u0035\u20E3", "digit five + combining enclosing keycap"),
+ new Emoji("", "\u0034\u20E3", "digit four + combining enclosing keycap"),
+ new Emoji("", "\u0023\u20E3", "number sign + combining enclosing keycap"),
+ new Emoji("", "\u2122", "trade mark sign"),
+ new Emoji("", "\u2139", "information source"),
+ new Emoji("", "\u2194", "left right arrow"),
+ new Emoji("", "\u2195", "up down arrow"),
+ new Emoji("", "\u2196", "north west arrow"),
+ new Emoji("", "\u2197", "north east arrow"),
+ new Emoji("", "\u2198", "south east arrow"),
+ new Emoji("", "\u2199", "south west arrow"),
+ new Emoji("", "\u21A9", "leftwards arrow with hook"),
+ new Emoji("", "\u21AA", "rightwards arrow with hook"),
+ new Emoji("", "\u231A", "watch"),
+ new Emoji("", "\u231B", "hourglass"),
+ new Emoji("", "\u23E9", "black right-pointing double triangle"),
+ new Emoji("", "\u23EA", "black left-pointing double triangle"),
+ new Emoji("", "\u23EB", "black up-pointing double triangle"),
+ new Emoji("", "\u23EC", "black down-pointing double triangle"),
+ new Emoji("", "\u23F0", "alarm clock"),
+ new Emoji("", "\u23F3", "hourglass with flowing sand"),
+ new Emoji("", "\u25AA", "black small square"),
+ new Emoji("", "\u25AB", "white small square"),
+ new Emoji("", "\u25B6", "black right-pointing triangle"),
+ new Emoji("", "\u25C0", "black left-pointing triangle"),
+ new Emoji("", "\u25FB", "white medium square"),
+ new Emoji("", "\u25FC", "black medium square"),
+ new Emoji("", "\u25FD", "white medium small square"),
+ new Emoji("", "\u25FE", "black medium small square"),
+ new Emoji("", "\u2600", "black sun with rays"),
+ new Emoji("", "\u2601", "cloud"),
+ new Emoji("", "\u260E", "black telephone"),
+ new Emoji("", "\u2611", "ballot box with check"),
+ new Emoji("", "\u2614", "umbrella with rain drops"),
+ new Emoji("", "\u2615", "hot beverage"),
+ new Emoji("", "\u261D", "white up pointing index"),
+ new Emoji("", "\u263A", "white smiling face"),
+ new Emoji("", "\u2648", "aries"),
+ new Emoji("", "\u2649", "taurus"),
+ new Emoji("", "\u264A", "gemini"),
+ new Emoji("", "\u264B", "cancer"),
+ new Emoji("", "\u264C", "leo"),
+ new Emoji("", "\u264D", "virgo"),
+ new Emoji("", "\u264E", "libra"),
+ new Emoji("", "\u264F", "scorpius"),
+ new Emoji("", "\u2650", "sagittarius"),
+ new Emoji("", "\u2651", "capricorn"),
+ new Emoji("", "\u2652", "aquarius"),
+ new Emoji("", "\u2653", "pisces"),
+ new Emoji("", "\u2660", "black spade suit"),
+ new Emoji("", "\u2663", "black club suit"),
+ new Emoji("", "\u2665", "black heart suit"),
+ new Emoji("", "\u2666", "black diamond suit"),
+ new Emoji("", "\u2668", "hot springs"),
+ new Emoji("", "\u267B", "black universal recycling symbol"),
+ new Emoji("", "\u267F", "wheelchair symbol"),
+ new Emoji("", "\u2693", "anchor"),
+ new Emoji("", "\u26A0", "warning sign"),
+ new Emoji("", "\u26A1", "high voltage sign"),
+ new Emoji("", "\u26AA", "medium white circle"),
+ new Emoji("", "\u26AB", "medium black circle"),
+ new Emoji("", "\u26BD", "soccer ball"),
+ new Emoji("", "\u26BE", "baseball"),
+ new Emoji("", "\u26C4", "snowman without snow"),
+ new Emoji("", "\u26C5", "sun behind cloud"),
+ new Emoji("", "\u26CE", "ophiuchus"),
+ new Emoji("", "\u26D4", "no entry"),
+ new Emoji("", "\u26EA", "church"),
+ new Emoji("", "\u26F2", "fountain"),
+ new Emoji("", "\u26F3", "flag in hole"),
+ new Emoji("", "\u26F5", "sailboat"),
+ new Emoji("", "\u26FA", "tent"),
+ new Emoji("", "\u26FD", "fuel pump"),
+ new Emoji("", "\u2934", "arrow pointing rightwards then curving upwards"),
+ new Emoji("", "\u2935", "arrow pointing rightwards then curving downwards"),
+ new Emoji("", "\u2B05", "leftwards black arrow"),
+ new Emoji("", "\u2B06", "upwards black arrow"),
+ new Emoji("", "\u2B07", "downwards black arrow"),
+ new Emoji("", "\u2B1B", "black large square"),
+ new Emoji("", "\u2B1C", "white large square"),
+ new Emoji("", "\u2B50", "white medium star"),
+ new Emoji("", "\u2B55", "heavy large circle"),
+ new Emoji("", "\u3030", "wavy dash"),
+ new Emoji("", "\u303D", "part alternation mark"),
+ new Emoji("", "\u3297", "circled ideograph congratulation"),
+ new Emoji("", "\u3299", "circled ideograph secret"),
+ new Emoji(":mahjong:", "\uD83C\uDC04", "mahjong tile red dragon"),
+ new Emoji(":black_joker:", "\uD83C\uDCCF", "playing card black joker"),
+ new Emoji(":cyclone:", "\uD83C\uDF00", "cyclone"),
+ new Emoji(":foggy:", "\uD83C\uDF01", "foggy"),
+ new Emoji(":closed_umbrella:", "\uD83C\uDF02", "closed umbrella"),
+ new Emoji(":stars:", "\uD83C\uDF03", "night with stars"),
+ new Emoji(":sunrise_over_mountains:", "\uD83C\uDF04", "sunrise over mountains"),
+ new Emoji(":sunrise:", "\uD83C\uDF05", "sunrise"),
+ new Emoji(":city_sunset:", "\uD83C\uDF06", "cityscape at dusk"),
+ new Emoji(":city_sunrise:", "\uD83C\uDF07", "sunset over buildings"),
+ new Emoji(":rainbow:", "\uD83C\uDF08", "rainbow"),
+ new Emoji(":bridge_at_night:", "\uD83C\uDF09", "bridge at night"),
+ new Emoji(":ocean:", "\uD83C\uDF0A", "water wave"),
+ new Emoji(":volcano:", "\uD83C\uDF0B", "volcano"),
+ new Emoji(":milky_way:", "\uD83C\uDF0C", "milky way"),
+ new Emoji(":earth_asia:", "\uD83C\uDF0F", "earth globe asia-australia"),
+ new Emoji(":new_moon:", "\uD83C\uDF11", "new moon symbol"),
+ new Emoji(":first_quarter_moon:", "\uD83C\uDF13", "first quarter moon symbol"),
+ new Emoji(":waxing_gibbous_moon:", "\uD83C\uDF14", "waxing gibbous moon symbol"),
+ new Emoji(":full_moon:", "\uD83C\uDF15", "full moon symbol"),
+ new Emoji(":crescent_moon:", "\uD83C\uDF19", "crescent moon"),
+ new Emoji(":first_quarter_moon_with_face:", "\uD83C\uDF1B", "first quarter moon with face"),
+ new Emoji(":star2:", "\uD83C\uDF1F", "glowing star"),
+ new Emoji("", "\uD83C\uDF20", "shooting star"),
+ new Emoji(":chestnut:", "\uD83C\uDF30", "chestnut"),
+ new Emoji(":seedling:", "\uD83C\uDF31", "seedling"),
+ new Emoji(":palm_tree:", "\uD83C\uDF34", "palm tree"),
+ new Emoji(":cactus:", "\uD83C\uDF35", "cactus"),
+ new Emoji(":tulip:", "\uD83C\uDF37", "tulip"),
+ new Emoji(":cherry_blossom:", "\uD83C\uDF38", "cherry blossom"),
+ new Emoji(":rose:", "\uD83C\uDF39", "rose"),
+ new Emoji(":hibiscus:", "\uD83C\uDF3A", "hibiscus"),
+ new Emoji(":sunflower:", "\uD83C\uDF3B", "sunflower"),
+ new Emoji(":blossom:", "\uD83C\uDF3C", "blossom"),
+ new Emoji(":corn:", "\uD83C\uDF3D", "ear of maize"),
+ new Emoji(":ear_of_rice:", "\uD83C\uDF3E", "ear of rice"),
+ new Emoji(":herb:", "\uD83C\uDF3F", "herb"),
+ new Emoji(":four_leaf_clover:", "\uD83C\uDF40", "four leaf clover"),
+ new Emoji(":maple_leaf:", "\uD83C\uDF41", "maple leaf"),
+ new Emoji(":fallen_leaf:", "\uD83C\uDF42", "fallen leaf"),
+ new Emoji(":leaves:", "\uD83C\uDF43", "leaf fluttering in wind"),
+ new Emoji(":mushroom:", "\uD83C\uDF44", "mushroom"),
+ new Emoji(":tomato:", "\uD83C\uDF45", "tomato"),
+ new Emoji(":eggplant:", "\uD83C\uDF46", "aubergine"),
+ new Emoji(":grapes:", "\uD83C\uDF47", "grapes"),
+ new Emoji(":melon:", "\uD83C\uDF48", "melon"),
+ new Emoji(":watermelon:", "\uD83C\uDF49", "watermelon"),
+ new Emoji(":tangerine:", "\uD83C\uDF4A", "tangerine"),
+ new Emoji(":banana:", "\uD83C\uDF4C", "banana"),
+ new Emoji(":pineapple:", "\uD83C\uDF4D", "pineapple"),
+ new Emoji(":apple:", "\uD83C\uDF4E", "red apple"),
+ new Emoji(":green_apple:", "\uD83C\uDF4F", "green apple"),
+ new Emoji(":peach:", "\uD83C\uDF51", "peach"),
+ new Emoji(":cherries:", "\uD83C\uDF52", "cherries"),
+ new Emoji(":strawberry:", "\uD83C\uDF53", "strawberry"),
+ new Emoji(":hamburger:", "\uD83C\uDF54", "hamburger"),
+ new Emoji(":pizza:", "\uD83C\uDF55", "slice of pizza"),
+ new Emoji(":meat_on_bone:", "\uD83C\uDF56", "meat on bone"),
+ new Emoji(":poultry_leg:", "\uD83C\uDF57", "poultry leg"),
+ new Emoji(":rice_cracker:", "\uD83C\uDF58", "rice cracker"),
+ new Emoji(":rice_ball:", "\uD83C\uDF59", "rice ball"),
+ new Emoji(":rice:", "\uD83C\uDF5A", "cooked rice"),
+ new Emoji(":curry:", "\uD83C\uDF5B", "curry and rice"),
+ new Emoji(":ramen:", "\uD83C\uDF5C", "steaming bowl"),
+ new Emoji(":spaghetti:", "\uD83C\uDF5D", "spaghetti"),
+ new Emoji(":bread:", "\uD83C\uDF5E", "bread"),
+ new Emoji(":fries:", "\uD83C\uDF5F", "french fries"),
+ new Emoji(":sweet_potato:", "\uD83C\uDF60", "roasted sweet potato"),
+ new Emoji(":dango:", "\uD83C\uDF61", "dango"),
+ new Emoji(":oden:", "\uD83C\uDF62", "oden"),
+ new Emoji(":sushi:", "\uD83C\uDF63", "sushi"),
+ new Emoji(":fried_shrimp:", "\uD83C\uDF64", "fried shrimp"),
+ new Emoji(":fish_cake:", "\uD83C\uDF65", "fish cake with swirl design"),
+ new Emoji(":icecream:", "\uD83C\uDF66", "soft ice cream"),
+ new Emoji(":shaved_ice:", "\uD83C\uDF67", "shaved ice"),
+ new Emoji(":ice_cream:", "\uD83C\uDF68", "ice cream"),
+ new Emoji(":doughnut:", "\uD83C\uDF69", "doughnut"),
+ new Emoji(":cookie:", "\uD83C\uDF6A", "cookie"),
+ new Emoji(":chocolate_bar:", "\uD83C\uDF6B", "chocolate bar"),
+ new Emoji(":candy:", "\uD83C\uDF6C", "candy"),
+ new Emoji(":lollipop:", "\uD83C\uDF6D", "lollipop"),
+ new Emoji(":custard:", "\uD83C\uDF6E", "custard"),
+ new Emoji(":honey_pot:", "\uD83C\uDF6F", "honey pot"),
+ new Emoji(":cake:", "\uD83C\uDF70", "shortcake"),
+ new Emoji(":bento:", "\uD83C\uDF71", "bento box"),
+ new Emoji(":stew:", "\uD83C\uDF72", "pot of food"),
+ new Emoji(":egg:", "\uD83C\uDF73", "cooking"),
+ new Emoji(":fork_and_knife:", "\uD83C\uDF74", "fork and knife"),
+ new Emoji(":tea:", "\uD83C\uDF75", "teacup without handle"),
+ new Emoji(":sake:", "\uD83C\uDF76", "sake bottle and cup"),
+ new Emoji(":wine_glass:", "\uD83C\uDF77", "wine glass"),
+ new Emoji(":cocktail:", "\uD83C\uDF78", "cocktail glass"),
+ new Emoji(":tropical_drink:", "\uD83C\uDF79", "tropical drink"),
+ new Emoji(":beer:", "\uD83C\uDF7A", "beer mug"),
+ new Emoji(":beers:", "\uD83C\uDF7B", "clinking beer mugs"),
+ new Emoji(":ribbon:", "\uD83C\uDF80", "ribbon"),
+ new Emoji(":gift:", "\uD83C\uDF81", "wrapped present"),
+ new Emoji(":birthday:", "\uD83C\uDF82", "birthday cake"),
+ new Emoji(":jack_o_lantern:", "\uD83C\uDF83", "jack-o-lantern"),
+ new Emoji(":christmas_tree:", "\uD83C\uDF84", "christmas tree"),
+ new Emoji(":santa:", "\uD83C\uDF85", "father christmas"),
+ new Emoji(":fireworks:", "\uD83C\uDF86", "fireworks"),
+ new Emoji(":sparkler:", "\uD83C\uDF87", "firework sparkler"),
+ new Emoji(":balloon:", "\uD83C\uDF88", "balloon"),
+ new Emoji(":tada:", "\uD83C\uDF89", "party popper"),
+ new Emoji(":confetti_ball:", "\uD83C\uDF8A", "confetti ball"),
+ new Emoji(":tanabata_tree:", "\uD83C\uDF8B", "tanabata tree"),
+ new Emoji(":crossed_flags:", "\uD83C\uDF8C", "crossed flags"),
+ new Emoji(":bamboo:", "\uD83C\uDF8D", "pine decoration"),
+ new Emoji(":dolls:", "\uD83C\uDF8E", "japanese dolls"),
+ new Emoji(":flags:", "\uD83C\uDF8F", "carp streamer"),
+ new Emoji(":wind_chime:", "\uD83C\uDF90", "wind chime"),
+ new Emoji(":rice_scene:", "\uD83C\uDF91", "moon viewing ceremony"),
+ new Emoji(":school_satchel:", "\uD83C\uDF92", "school satchel"),
+ new Emoji(":mortar_board:", "\uD83C\uDF93", "graduation cap"),
+ new Emoji(":carousel_horse:", "\uD83C\uDFA0", "carousel horse"),
+ new Emoji(":ferris_wheel:", "\uD83C\uDFA1", "ferris wheel"),
+ new Emoji(":roller_coaster:", "\uD83C\uDFA2", "roller coaster"),
+ new Emoji(":fishing_pole_and_fish:", "\uD83C\uDFA3", "fishing pole and fish"),
+ new Emoji(":microphone:", "\uD83C\uDFA4", "microphone"),
+ new Emoji(":movie_camera:", "\uD83C\uDFA5", "movie camera"),
+ new Emoji(":cinema:", "\uD83C\uDFA6", "cinema"),
+ new Emoji(":headphones:", "\uD83C\uDFA7", "headphone"),
+ new Emoji(":art:", "\uD83C\uDFA8", "artist palette"),
+ new Emoji(":tophat:", "\uD83C\uDFA9", "top hat"),
+ new Emoji(":circus_tent:", "\uD83C\uDFAA", "circus tent"),
+ new Emoji(":ticket:", "\uD83C\uDFAB", "ticket"),
+ new Emoji(":clapper:", "\uD83C\uDFAC", "clapper board"),
+ new Emoji(":performing_arts:", "\uD83C\uDFAD", "performing arts"),
+ new Emoji(":video_game:", "\uD83C\uDFAE", "video game"),
+ new Emoji(":dart:", "\uD83C\uDFAF", "direct hit"),
+ new Emoji(":slot_machine:", "\uD83C\uDFB0", "slot machine"),
+ new Emoji(":8ball:", "\uD83C\uDFB1", "billiards"),
+ new Emoji(":game_die:", "\uD83C\uDFB2", "game die"),
+ new Emoji(":bowling:", "\uD83C\uDFB3", "bowling"),
+ new Emoji(":flower_playing_cards:", "\uD83C\uDFB4", "flower playing cards"),
+ new Emoji(":musical_note:", "\uD83C\uDFB5", "musical note"),
+ new Emoji(":notes:", "\uD83C\uDFB6", "multiple musical notes"),
+ new Emoji(":saxophone:", "\uD83C\uDFB7", "saxophone"),
+ new Emoji(":guitar:", "\uD83C\uDFB8", "guitar"),
+ new Emoji(":musical_keyboard:", "\uD83C\uDFB9", "musical keyboard"),
+ new Emoji(":trumpet:", "\uD83C\uDFBA", "trumpet"),
+ new Emoji(":violin:", "\uD83C\uDFBB", "violin"),
+ new Emoji(":musical_score:", "\uD83C\uDFBC", "musical score"),
+ new Emoji(":running_shirt_with_sash:", "\uD83C\uDFBD", "running shirt with sash"),
+ new Emoji(":tennis:", "\uD83C\uDFBE", "tennis racquet and ball"),
+ new Emoji(":ski:", "\uD83C\uDFBF", "ski and ski boot"),
+ new Emoji(":basketball:", "\uD83C\uDFC0", "basketball and hoop"),
+ new Emoji(":checkered_flag:", "\uD83C\uDFC1", "chequered flag"),
+ new Emoji(":snowboarder:", "\uD83C\uDFC2", "snowboarder"),
+ new Emoji(":running:", "\uD83C\uDFC3", "runner"),
+ new Emoji(":surfer:", "\uD83C\uDFC4", "surfer"),
+ new Emoji(":trophy:", "\uD83C\uDFC6", "trophy"),
+ new Emoji(":football:", "\uD83C\uDFC8", "american football"),
+ new Emoji(":swimmer:", "\uD83C\uDFCA", "swimmer"),
+ new Emoji(":house:", "\uD83C\uDFE0", "house building"),
+ new Emoji(":house_with_garden:", "\uD83C\uDFE1", "house with garden"),
+ new Emoji(":office:", "\uD83C\uDFE2", "office building"),
+ new Emoji(":post_office:", "\uD83C\uDFE3", "japanese post office"),
+ new Emoji(":hospital:", "\uD83C\uDFE5", "hospital"),
+ new Emoji(":bank:", "\uD83C\uDFE6", "bank"),
+ new Emoji(":atm:", "\uD83C\uDFE7", "automated teller machine"),
+ new Emoji(":hotel:", "\uD83C\uDFE8", "hotel"),
+ new Emoji(":love_hotel:", "\uD83C\uDFE9", "love hotel"),
+ new Emoji(":convenience_store:", "\uD83C\uDFEA", "convenience store"),
+ new Emoji(":school:", "\uD83C\uDFEB", "school"),
+ new Emoji(":department_store:", "\uD83C\uDFEC", "department store"),
+ new Emoji(":factory:", "\uD83C\uDFED", "factory"),
+ new Emoji(":lantern:", "\uD83C\uDFEE", "izakaya lantern"),
+ new Emoji(":japanese_castle:", "\uD83C\uDFEF", "japanese castle"),
+ new Emoji(":european_castle:", "\uD83C\uDFF0", "european castle"),
+ new Emoji(":snail:", "\uD83D\uDC0C", "snail"),
+ new Emoji(":snake:", "\uD83D\uDC0D", "snake"),
+ new Emoji(":racehorse:", "\uD83D\uDC0E", "horse"),
+ new Emoji(":sheep:", "\uD83D\uDC11", "sheep"),
+ new Emoji(":monkey:", "\uD83D\uDC12", "monkey"),
+ new Emoji(":chicken:", "\uD83D\uDC14", "chicken"),
+ new Emoji(":boar:", "\uD83D\uDC17", "boar"),
+ new Emoji(":elephant:", "\uD83D\uDC18", "elephant"),
+ new Emoji(":octopus:", "\uD83D\uDC19", "octopus"),
+ new Emoji(":shell:", "\uD83D\uDC1A", "spiral shell"),
+ new Emoji(":bug:", "\uD83D\uDC1B", "bug"),
+ new Emoji(":ant:", "\uD83D\uDC1C", "ant"),
+ new Emoji(":honeybee:", "\uD83D\uDC1D", "honeybee"),
+ new Emoji(":beetle:", "\uD83D\uDC1E", "lady beetle"),
+ new Emoji(":fish:", "\uD83D\uDC1F", "fish"),
+ new Emoji(":tropical_fish:", "\uD83D\uDC20", "tropical fish"),
+ new Emoji(":blowfish:", "\uD83D\uDC21", "blowfish"),
+ new Emoji(":turtle:", "\uD83D\uDC22", "turtle"),
+ new Emoji(":hatching_chick:", "\uD83D\uDC23", "hatching chick"),
+ new Emoji(":baby_chick:", "\uD83D\uDC24", "baby chick"),
+ new Emoji(":hatched_chick:", "\uD83D\uDC25", "front-facing baby chick"),
+ new Emoji(":bird:", "\uD83D\uDC26", "bird"),
+ new Emoji(":penguin:", "\uD83D\uDC27", "penguin"),
+ new Emoji(":koala:", "\uD83D\uDC28", "koala"),
+ new Emoji(":poodle:", "\uD83D\uDC29", "poodle"),
+ new Emoji(":camel:", "\uD83D\uDC2B", "bactrian camel"),
+ new Emoji(":flipper:", "\uD83D\uDC2C", "dolphin"),
+ new Emoji(":mouse:", "\uD83D\uDC2D", "mouse face"),
+ new Emoji(":cow:", "\uD83D\uDC2E", "cow face"),
+ new Emoji(":tiger:", "\uD83D\uDC2F", "tiger face"),
+ new Emoji(":rabbit:", "\uD83D\uDC30", "rabbit face"),
+ new Emoji(":cat:", "\uD83D\uDC31", "cat face"),
+ new Emoji(":dragon_face:", "\uD83D\uDC32", "dragon face"),
+ new Emoji(":whale:", "\uD83D\uDC33", "spouting whale"),
+ new Emoji(":horse:", "\uD83D\uDC34", "horse face"),
+ new Emoji(":monkey_face:", "\uD83D\uDC35", "monkey face"),
+ new Emoji(":dog:", "\uD83D\uDC36", "dog face"),
+ new Emoji(":pig:", "\uD83D\uDC37", "pig face"),
+ new Emoji(":frog:", "\uD83D\uDC38", "frog face"),
+ new Emoji(":hamster:", "\uD83D\uDC39", "hamster face"),
+ new Emoji(":wolf:", "\uD83D\uDC3A", "wolf face"),
+ new Emoji(":bear:", "\uD83D\uDC3B", "bear face"),
+ new Emoji(":panda_face:", "\uD83D\uDC3C", "panda face"),
+ new Emoji(":pig_nose:", "\uD83D\uDC3D", "pig nose"),
+ new Emoji(":paw_prints:", "\uD83D\uDC3E", "paw prints"),
+ new Emoji(":eyes:", "\uD83D\uDC40", "eyes"),
+ new Emoji(":ear:", "\uD83D\uDC42", "ear"),
+ new Emoji(":nose:", "\uD83D\uDC43", "nose"),
+ new Emoji(":lips:", "\uD83D\uDC44", "mouth"),
+ new Emoji(":tongue:", "\uD83D\uDC45", "tongue"),
+ new Emoji(":point_up_2:", "\uD83D\uDC46", "white up pointing backhand index"),
+ new Emoji(":point_down:", "\uD83D\uDC47", "white down pointing backhand index"),
+ new Emoji(":point_left:", "\uD83D\uDC48", "white left pointing backhand index"),
+ new Emoji(":point_right:", "\uD83D\uDC49", "white right pointing backhand index"),
+ new Emoji(":punch:", "\uD83D\uDC4A", "fisted hand sign"),
+ new Emoji(":wave:", "\uD83D\uDC4B", "waving hand sign"),
+ new Emoji(":ok_hand:", "\uD83D\uDC4C", "ok hand sign"),
+ new Emoji(":thumbsup:", "\uD83D\uDC4D", "thumbs up sign"),
+ new Emoji(":thumbsdown:", "\uD83D\uDC4E", "thumbs down sign"),
+ new Emoji(":clap:", "\uD83D\uDC4F", "clapping hands sign"),
+ new Emoji(":open_hands:", "\uD83D\uDC50", "open hands sign"),
+ new Emoji(":crown:", "\uD83D\uDC51", "crown"),
+ new Emoji(":womans_hat:", "\uD83D\uDC52", "womans hat"),
+ new Emoji(":eyeglasses:", "\uD83D\uDC53", "eyeglasses"),
+ new Emoji(":necktie:", "\uD83D\uDC54", "necktie"),
+ new Emoji(":tshirt:", "\uD83D\uDC55", "t-shirt"),
+ new Emoji(":jeans:", "\uD83D\uDC56", "jeans"),
+ new Emoji(":dress:", "\uD83D\uDC57", "dress"),
+ new Emoji(":kimono:", "\uD83D\uDC58", "kimono"),
+ new Emoji(":bikini:", "\uD83D\uDC59", "bikini"),
+ new Emoji(":womans_clothes:", "\uD83D\uDC5A", "womans clothes"),
+ new Emoji(":purse:", "\uD83D\uDC5B", "purse"),
+ new Emoji(":handbag:", "\uD83D\uDC5C", "handbag"),
+ new Emoji(":pouch:", "\uD83D\uDC5D", "pouch"),
+ new Emoji(":shoe:", "\uD83D\uDC5E", "mans shoe"),
+ new Emoji(":athletic_shoe:", "\uD83D\uDC5F", "athletic shoe"),
+ new Emoji(":high_heel:", "\uD83D\uDC60", "high-heeled shoe"),
+ new Emoji(":sandal:", "\uD83D\uDC61", "womans sandal"),
+ new Emoji(":boot:", "\uD83D\uDC62", "womans boots"),
+ new Emoji(":footprints:", "\uD83D\uDC63", "footprints"),
+ new Emoji(":bust_in_silhouette:", "\uD83D\uDC64", "bust in silhouette"),
+ new Emoji(":boy:", "\uD83D\uDC66", "boy"),
+ new Emoji(":girl:", "\uD83D\uDC67", "girl"),
+ new Emoji(":man:", "\uD83D\uDC68", "man"),
+ new Emoji(":woman:", "\uD83D\uDC69", "woman"),
+ new Emoji(":family:", "\uD83D\uDC6A", "family"),
+ new Emoji(":couple:", "\uD83D\uDC6B", "man and woman holding hands"),
+ new Emoji(":cop:", "\uD83D\uDC6E", "police officer"),
+ new Emoji(":dancers:", "\uD83D\uDC6F", "woman with bunny ears"),
+ new Emoji(":bride_with_veil:", "\uD83D\uDC70", "bride with veil"),
+ new Emoji(":person_with_blond_hair:", "\uD83D\uDC71", "person with blond hair"),
+ new Emoji(":man_with_gua_pi_mao:", "\uD83D\uDC72", "man with gua pi mao"),
+ new Emoji(":man_with_turban:", "\uD83D\uDC73", "man with turban"),
+ new Emoji(":older_man:", "\uD83D\uDC74", "older man"),
+ new Emoji(":older_woman:", "\uD83D\uDC75", "older woman"),
+ new Emoji(":baby:", "\uD83D\uDC76", "baby"),
+ new Emoji(":construction_worker:", "\uD83D\uDC77", "construction worker"),
+ new Emoji(":princess:", "\uD83D\uDC78", "princess"),
+ new Emoji(":japanese_ogre:", "\uD83D\uDC79", "japanese ogre"),
+ new Emoji(":japanese_goblin:", "\uD83D\uDC7A", "japanese goblin"),
+ new Emoji(":ghost:", "\uD83D\uDC7B", "ghost"),
+ new Emoji(":angel:", "\uD83D\uDC7C", "baby angel"),
+ new Emoji(":alien:", "\uD83D\uDC7D", "extraterrestrial alien"),
+ new Emoji(":space_invader:", "\uD83D\uDC7E", "alien monster"),
+ new Emoji(":imp:", "\uD83D\uDC7F", "imp"),
+ new Emoji(":skull:", "\uD83D\uDC80", "skull"),
+ new Emoji(":information_desk_person:", "\uD83D\uDC81", "information desk person"),
+ new Emoji(":guardsman:", "\uD83D\uDC82", "guardsman"),
+ new Emoji(":dancer:", "\uD83D\uDC83", "dancer"),
+ new Emoji(":lipstick:", "\uD83D\uDC84", "lipstick"),
+ new Emoji(":nail_care:", "\uD83D\uDC85", "nail polish"),
+ new Emoji(":massage:", "\uD83D\uDC86", "face massage"),
+ new Emoji(":haircut:", "\uD83D\uDC87", "haircut"),
+ new Emoji(":barber:", "\uD83D\uDC88", "barber pole"),
+ new Emoji(":syringe:", "\uD83D\uDC89", "syringe"),
+ new Emoji(":pill:", "\uD83D\uDC8A", "pill"),
+ new Emoji(":kiss:", "\uD83D\uDC8B", "kiss mark"),
+ new Emoji(":love_letter:", "\uD83D\uDC8C", "love letter"),
+ new Emoji(":ring:", "\uD83D\uDC8D", "ring"),
+ new Emoji(":gem:", "\uD83D\uDC8E", "gem stone"),
+ new Emoji(":couplekiss:", "\uD83D\uDC8F", "kiss"),
+ new Emoji(":bouquet:", "\uD83D\uDC90", "bouquet"),
+ new Emoji(":couple_with_heart:", "\uD83D\uDC91", "couple with heart"),
+ new Emoji(":wedding:", "\uD83D\uDC92", "wedding"),
+ new Emoji(":heartbeat:", "\uD83D\uDC93", "beating heart"),
+ new Emoji(":broken_heart:", "\uD83D\uDC94", "broken heart"),
+ new Emoji(":two_hearts:", "\uD83D\uDC95", "two hearts"),
+ new Emoji(":sparkling_heart:", "\uD83D\uDC96", "sparkling heart"),
+ new Emoji(":heartpulse:", "\uD83D\uDC97", "growing heart"),
+ new Emoji(":cupid:", "\uD83D\uDC98", "heart with arrow"),
+ new Emoji(":blue_heart:", "\uD83D\uDC99", "blue heart"),
+ new Emoji(":green_heart:", "\uD83D\uDC9A", "green heart"),
+ new Emoji(":yellow_heart:", "\uD83D\uDC9B", "yellow heart"),
+ new Emoji(":purple_heart:", "\uD83D\uDC9C", "purple heart"),
+ new Emoji(":gift_heart:", "\uD83D\uDC9D", "heart with ribbon"),
+ new Emoji(":revolving_hearts:", "\uD83D\uDC9E", "revolving hearts"),
+ new Emoji(":heart_decoration:", "\uD83D\uDC9F", "heart decoration"),
+ new Emoji(":diamond_shape_with_a_dot_inside:", "\uD83D\uDCA0", "diamond shape with a dot inside"),
+ new Emoji(":bulb:", "\uD83D\uDCA1", "electric light bulb"),
+ new Emoji(":anger:", "\uD83D\uDCA2", "anger symbol"),
+ new Emoji(":bomb:", "\uD83D\uDCA3", "bomb"),
+ new Emoji(":zzz:", "\uD83D\uDCA4", "sleeping symbol"),
+ new Emoji(":collision:", "\uD83D\uDCA5", "collision symbol"),
+ new Emoji(":sweat_drops:", "\uD83D\uDCA6", "splashing sweat symbol"),
+ new Emoji(":droplet:", "\uD83D\uDCA7", "droplet"),
+ new Emoji(":dash:", "\uD83D\uDCA8", "dash symbol"),
+ new Emoji(":shit:", "\uD83D\uDCA9", "pile of poo"),
+ new Emoji(":muscle:", "\uD83D\uDCAA", "flexed biceps"),
+ new Emoji(":dizzy:", "\uD83D\uDCAB", "dizzy symbol"),
+ new Emoji(":speech_balloon:", "\uD83D\uDCAC", "speech balloon"),
+ new Emoji(":white_flower:", "\uD83D\uDCAE", "white flower"),
+ new Emoji(":100:", "\uD83D\uDCAF", "hundred points symbol"),
+ new Emoji(":moneybag:", "\uD83D\uDCB0", "money bag"),
+ new Emoji(":currency_exchange:", "\uD83D\uDCB1", "currency exchange"),
+ new Emoji(":heavy_dollar_sign:", "\uD83D\uDCB2", "heavy dollar sign"),
+ new Emoji(":credit_card:", "\uD83D\uDCB3", "credit card"),
+ new Emoji(":yen:", "\uD83D\uDCB4", "banknote with yen sign"),
+ new Emoji(":dollar:", "\uD83D\uDCB5", "banknote with dollar sign"),
+ new Emoji(":money_with_wings:", "\uD83D\uDCB8", "money with wings"),
+ new Emoji(":chart:", "\uD83D\uDCB9", "chart with upwards trend and yen sign"),
+ new Emoji(":seat:", "\uD83D\uDCBA", "seat"),
+ new Emoji(":computer:", "\uD83D\uDCBB", "personal computer"),
+ new Emoji(":briefcase:", "\uD83D\uDCBC", "briefcase"),
+ new Emoji(":minidisc:", "\uD83D\uDCBD", "minidisc"),
+ new Emoji(":floppy_disk:", "\uD83D\uDCBE", "floppy disk"),
+ new Emoji(":cd:", "\uD83D\uDCBF", "optical disc"),
+ new Emoji(":dvd:", "\uD83D\uDCC0", "dvd"),
+ new Emoji(":file_folder:", "\uD83D\uDCC1", "file folder"),
+ new Emoji(":open_file_folder:", "\uD83D\uDCC2", "open file folder"),
+ new Emoji(":page_with_curl:", "\uD83D\uDCC3", "page with curl"),
+ new Emoji(":page_facing_up:", "\uD83D\uDCC4", "page facing up"),
+ new Emoji(":date:", "\uD83D\uDCC5", "calendar"),
+ new Emoji(":calendar:", "\uD83D\uDCC6", "tear-off calendar"),
+ new Emoji(":card_index:", "\uD83D\uDCC7", "card index"),
+ new Emoji(":chart_with_upwards_trend:", "\uD83D\uDCC8", "chart with upwards trend"),
+ new Emoji(":chart_with_downwards_trend:", "\uD83D\uDCC9", "chart with downwards trend"),
+ new Emoji(":bar_chart:", "\uD83D\uDCCA", "bar chart"),
+ new Emoji(":clipboard:", "\uD83D\uDCCB", "clipboard"),
+ new Emoji(":pushpin:", "\uD83D\uDCCC", "pushpin"),
+ new Emoji(":round_pushpin:", "\uD83D\uDCCD", "round pushpin"),
+ new Emoji(":paperclip:", "\uD83D\uDCCE", "paperclip"),
+ new Emoji(":straight_ruler:", "\uD83D\uDCCF", "straight ruler"),
+ new Emoji(":triangular_ruler:", "\uD83D\uDCD0", "triangular ruler"),
+ new Emoji(":bookmark_tabs:", "\uD83D\uDCD1", "bookmark tabs"),
+ new Emoji(":ledger:", "\uD83D\uDCD2", "ledger"),
+ new Emoji(":notebook:", "\uD83D\uDCD3", "notebook"),
+ new Emoji(":notebook_with_decorative_cover:", "\uD83D\uDCD4", "notebook with decorative cover"),
+ new Emoji(":closed_book:", "\uD83D\uDCD5", "closed book"),
+ new Emoji(":open_book:", "\uD83D\uDCD6", "open book"),
+ new Emoji(":green_book:", "\uD83D\uDCD7", "green book"),
+ new Emoji(":blue_book:", "\uD83D\uDCD8", "blue book"),
+ new Emoji(":orange_book:", "\uD83D\uDCD9", "orange book"),
+ new Emoji(":books:", "\uD83D\uDCDA", "books"),
+ new Emoji(":name_badge:", "\uD83D\uDCDB", "name badge"),
+ new Emoji(":scroll:", "\uD83D\uDCDC", "scroll"),
+ new Emoji(":pencil:", "\uD83D\uDCDD", "memo"),
+ new Emoji(":telephone_receiver:", "\uD83D\uDCDE", "telephone receiver"),
+ new Emoji(":pager:", "\uD83D\uDCDF", "pager"),
+ new Emoji(":fax:", "\uD83D\uDCE0", "fax machine"),
+ new Emoji(":satellite:", "\uD83D\uDCE1", "satellite antenna"),
+ new Emoji(":loudspeaker:", "\uD83D\uDCE2", "public address loudspeaker"),
+ new Emoji(":mega:", "\uD83D\uDCE3", "cheering megaphone"),
+ new Emoji(":outbox_tray:", "\uD83D\uDCE4", "outbox tray"),
+ new Emoji(":inbox_tray:", "\uD83D\uDCE5", "inbox tray"),
+ new Emoji(":package:", "\uD83D\uDCE6", "package"),
+ new Emoji(":e-mail:", "\uD83D\uDCE7", "e-mail symbol"),
+ new Emoji(":incoming_envelope:", "\uD83D\uDCE8", "incoming envelope"),
+ new Emoji(":envelope_with_arrow:", "\uD83D\uDCE9", "envelope with downwards arrow above"),
+ new Emoji(":mailbox_closed:", "\uD83D\uDCEA", "closed mailbox with lowered flag"),
+ new Emoji(":mailbox:", "\uD83D\uDCEB", "closed mailbox with raised flag"),
+ new Emoji(":postbox:", "\uD83D\uDCEE", "postbox"),
+ new Emoji(":newspaper:", "\uD83D\uDCF0", "newspaper"),
+ new Emoji(":iphone:", "\uD83D\uDCF1", "mobile phone"),
+ new Emoji(":calling:", "\uD83D\uDCF2", "mobile phone with rightwards arrow at left"),
+ new Emoji(":vibration_mode:", "\uD83D\uDCF3", "vibration mode"),
+ new Emoji(":mobile_phone_off:", "\uD83D\uDCF4", "mobile phone off"),
+ new Emoji(":signal_strength:", "\uD83D\uDCF6", "antenna with bars"),
+ new Emoji(":camera:", "\uD83D\uDCF7", "camera"),
+ new Emoji(":video_camera:", "\uD83D\uDCF9", "video camera"),
+ new Emoji(":tv:", "\uD83D\uDCFA", "television"),
+ new Emoji(":radio:", "\uD83D\uDCFB", "radio"),
+ new Emoji(":vhs:", "\uD83D\uDCFC", "videocassette"),
+ new Emoji(":arrows_clockwise:", "\uD83D\uDD03", "clockwise downwards and upwards open circle arrows"),
+ new Emoji(":speaker:", "\uD83D\uDD0A", "speaker with three sound waves"),
+ new Emoji(":battery:", "\uD83D\uDD0B", "battery"),
+ new Emoji(":electric_plug:", "\uD83D\uDD0C", "electric plug"),
+ new Emoji(":mag:", "\uD83D\uDD0D", "left-pointing magnifying glass"),
+ new Emoji(":mag_right:", "\uD83D\uDD0E", "right-pointing magnifying glass"),
+ new Emoji(":lock_with_ink_pen:", "\uD83D\uDD0F", "lock with ink pen"),
+ new Emoji(":closed_lock_with_key:", "\uD83D\uDD10", "closed lock with key"),
+ new Emoji(":key:", "\uD83D\uDD11", "key"),
+ new Emoji(":lock:", "\uD83D\uDD12", "lock"),
+ new Emoji(":unlock:", "\uD83D\uDD13", "open lock"),
+ new Emoji(":bell:", "\uD83D\uDD14", "bell"),
+ new Emoji(":bookmark:", "\uD83D\uDD16", "bookmark"),
+ new Emoji(":link:", "\uD83D\uDD17", "link symbol"),
+ new Emoji(":radio_button:", "\uD83D\uDD18", "radio button"),
+ new Emoji(":back:", "\uD83D\uDD19", "back with leftwards arrow above"),
+ new Emoji(":end:", "\uD83D\uDD1A", "end with leftwards arrow above"),
+ new Emoji(":on:", "\uD83D\uDD1B", "on with exclamation mark with left right arrow above"),
+ new Emoji(":soon:", "\uD83D\uDD1C", "soon with rightwards arrow above"),
+ new Emoji(":top:", "\uD83D\uDD1D", "top with upwards arrow above"),
+ new Emoji(":underage:", "\uD83D\uDD1E", "no one under eighteen symbol"),
+ new Emoji(":keycap_ten:", "\uD83D\uDD1F", "keycap ten"),
+ new Emoji(":capital_abcd:", "\uD83D\uDD20", "input symbol for latin capital letters"),
+ new Emoji(":abcd:", "\uD83D\uDD21", "input symbol for latin small letters"),
+ new Emoji(":1234:", "\uD83D\uDD22", "input symbol for numbers"),
+ new Emoji(":symbols:", "\uD83D\uDD23", "input symbol for symbols"),
+ new Emoji(":abc:", "\uD83D\uDD24", "input symbol for latin letters"),
+ new Emoji(":fire:", "\uD83D\uDD25", "fire"),
+ new Emoji(":flashlight:", "\uD83D\uDD26", "electric torch"),
+ new Emoji(":wrench:", "\uD83D\uDD27", "wrench"),
+ new Emoji(":hammer:", "\uD83D\uDD28", "hammer"),
+ new Emoji(":nut_and_bolt:", "\uD83D\uDD29", "nut and bolt"),
+ new Emoji(":hocho:", "\uD83D\uDD2A", "hocho"),
+ new Emoji(":gun:", "\uD83D\uDD2B", "pistol"),
+ new Emoji(":crystal_ball:", "\uD83D\uDD2E", "crystal ball"),
+ new Emoji(":six_pointed_star:", "\uD83D\uDD2F", "six pointed star with middle dot"),
+ new Emoji(":beginner:", "\uD83D\uDD30", "japanese symbol for beginner"),
+ new Emoji(":trident:", "\uD83D\uDD31", "trident emblem"),
+ new Emoji(":black_square_button:", "\uD83D\uDD32", "black square button"),
+ new Emoji(":white_square_button:", "\uD83D\uDD33", "white square button"),
+ new Emoji(":red_circle:", "\uD83D\uDD34", "large red circle"),
+ new Emoji(":large_blue_circle:", "\uD83D\uDD35", "large blue circle"),
+ new Emoji(":large_orange_diamond:", "\uD83D\uDD36", "large orange diamond"),
+ new Emoji(":large_blue_diamond:", "\uD83D\uDD37", "large blue diamond"),
+ new Emoji(":small_orange_diamond:", "\uD83D\uDD38", "small orange diamond"),
+ new Emoji(":small_blue_diamond:", "\uD83D\uDD39", "small blue diamond"),
+ new Emoji(":small_red_triangle:", "\uD83D\uDD3A", "up-pointing red triangle"),
+ new Emoji(":small_red_triangle_down:", "\uD83D\uDD3B", "down-pointing red triangle"),
+ new Emoji(":arrow_up_small:", "\uD83D\uDD3C", "up-pointing small red triangle"),
+ new Emoji(":arrow_down_small:", "\uD83D\uDD3D", "down-pointing small red triangle"),
+ new Emoji(":clock1:", "\uD83D\uDD50", "clock face one oclock"),
+ new Emoji(":clock2:", "\uD83D\uDD51", "clock face two oclock"),
+ new Emoji(":clock3:", "\uD83D\uDD52", "clock face three oclock"),
+ new Emoji(":clock4:", "\uD83D\uDD53", "clock face four oclock"),
+ new Emoji(":clock5:", "\uD83D\uDD54", "clock face five oclock"),
+ new Emoji(":clock6:", "\uD83D\uDD55", "clock face six oclock"),
+ new Emoji(":clock7:", "\uD83D\uDD56", "clock face seven oclock"),
+ new Emoji(":clock8:", "\uD83D\uDD57", "clock face eight oclock"),
+ new Emoji(":clock9:", "\uD83D\uDD58", "clock face nine oclock"),
+ new Emoji(":clock10:", "\uD83D\uDD59", "clock face ten oclock"),
+ new Emoji(":clock11:", "\uD83D\uDD5A", "clock face eleven oclock"),
+ new Emoji(":clock12:", "\uD83D\uDD5B", "clock face twelve oclock"),
+ new Emoji(":mount_fuji:", "\uD83D\uDDFB", "mount fuji"),
+ new Emoji(":tokyo_tower:", "\uD83D\uDDFC", "tokyo tower"),
+ new Emoji(":statue_of_liberty:", "\uD83D\uDDFD", "statue of liberty"),
+ new Emoji(":japan:", "\uD83D\uDDFE", "silhouette of japan"),
+ new Emoji(":moyai:", "\uD83D\uDDFF", "moyai"),
+ new Emoji(":earth_africa:", "\uD83C\uDF0D", "earth globe europe-africa"),
+ new Emoji(":earth_americas:", "\uD83C\uDF0E", "earth globe americas"),
+ new Emoji(":globe_with_meridians:", "\uD83C\uDF10", "globe with meridians"),
+ new Emoji(":waxing_crescent_moon:", "\uD83C\uDF12", "waxing crescent moon symbol"),
+ new Emoji(":waning_gibbous_moon:", "\uD83C\uDF16", "waning gibbous moon symbol"),
+ new Emoji(":last_quarter_moon:", "\uD83C\uDF17", "last quarter moon symbol"),
+ new Emoji(":waning_crescent_moon:", "\uD83C\uDF18", "waning crescent moon symbol"),
+ new Emoji(":new_moon_with_face:", "\uD83C\uDF1A", "new moon with face"),
+ new Emoji(":last_quarter_moon_with_face:", "\uD83C\uDF1C", "last quarter moon with face"),
+ new Emoji(":full_moon_with_face:", "\uD83C\uDF1D", "full moon with face"),
+ new Emoji(":sun_with_face:", "\uD83C\uDF1E", "sun with face"),
+ new Emoji(":evergreen_tree:", "\uD83C\uDF32", "evergreen tree"),
+ new Emoji(":deciduous_tree:", "\uD83C\uDF33", "deciduous tree"),
+ new Emoji(":lemon:", "\uD83C\uDF4B", "lemon"),
+ new Emoji(":pear:", "\uD83C\uDF50", "pear"),
+ new Emoji(":baby_bottle:", "\uD83C\uDF7C", "baby bottle"),
+ new Emoji(":horse_racing:", "\uD83C\uDFC7", "horse racing"),
+ new Emoji(":rugby_football:", "\uD83C\uDFC9", "rugby football"),
+ new Emoji(":european_post_office:", "\uD83C\uDFE4", "european post office"),
+ new Emoji(":rat:", "\uD83D\uDC00", "rat"),
+ new Emoji(":mouse2:", "\uD83D\uDC01", "mouse"),
+ new Emoji(":ox:", "\uD83D\uDC02", "ox"),
+ new Emoji(":water_buffalo:", "\uD83D\uDC03", "water buffalo"),
+ new Emoji(":cow2:", "\uD83D\uDC04", "cow"),
+ new Emoji(":tiger2:", "\uD83D\uDC05", "tiger"),
+ new Emoji(":leopard:", "\uD83D\uDC06", "leopard"),
+ new Emoji(":rabbit2:", "\uD83D\uDC07", "rabbit"),
+ new Emoji(":cat2:", "\uD83D\uDC08", "cat"),
+ new Emoji(":dragon:", "\uD83D\uDC09", "dragon"),
+ new Emoji(":crocodile:", "\uD83D\uDC0A", "crocodile"),
+ new Emoji(":whale2:", "\uD83D\uDC0B", "whale"),
+ new Emoji(":ram:", "\uD83D\uDC0F", "ram"),
+ new Emoji(":goat:", "\uD83D\uDC10", "goat"),
+ new Emoji(":rooster:", "\uD83D\uDC13", "rooster"),
+ new Emoji(":dog2:", "\uD83D\uDC15", "dog"),
+ new Emoji(":pig2:", "\uD83D\uDC16", "pig"),
+ new Emoji(":dromedary_camel:", "\uD83D\uDC2A", "dromedary camel"),
+ new Emoji(":busts_in_silhouette:", "\uD83D\uDC65", "busts in silhouette"),
+ new Emoji(":two_men_holding_hands:", "\uD83D\uDC6C", "two men holding hands"),
+ new Emoji(":two_women_holding_hands:", "\uD83D\uDC6D", "two women holding hands"),
+ new Emoji(":thought_balloon:", "\uD83D\uDCAD", "thought balloon"),
+ new Emoji(":euro:", "\uD83D\uDCB6", "banknote with euro sign"),
+ new Emoji(":pound:", "\uD83D\uDCB7", "banknote with pound sign"),
+ new Emoji(":mailbox_with_mail:", "\uD83D\uDCEC", "open mailbox with raised flag"),
+ new Emoji(":mailbox_with_no_mail:", "\uD83D\uDCED", "open mailbox with lowered flag"),
+ new Emoji(":postal_horn:", "\uD83D\uDCEF", "postal horn"),
+ new Emoji(":no_mobile_phones:", "\uD83D\uDCF5", "no mobile phones"),
+ new Emoji(":twisted_rightwards_arrows:", "\uD83D\uDD00", "twisted rightwards arrows"),
+ new Emoji(":repeat:", "\uD83D\uDD01", "clockwise rightwards and leftwards open circle arrows"),
+ new Emoji(":repeat_one:", "\uD83D\uDD02", "clockwise rightwards and leftwards open circle arrows with circled one overlay"),
+ new Emoji(":arrows_counterclockwise:", "\uD83D\uDD04", "anticlockwise downwards and upwards open circle arrows"),
+ new Emoji(":low_brightness:", "\uD83D\uDD05", "low brightness symbol"),
+ new Emoji(":high_brightness:", "\uD83D\uDD06", "high brightness symbol"),
+ new Emoji(":mute:", "\uD83D\uDD07", "speaker with cancellation stroke"),
+ new Emoji(":sound:", "\uD83D\uDD09", "speaker with one sound wave"),
+ new Emoji(":no_bell:", "\uD83D\uDD15", "bell with cancellation stroke"),
+ new Emoji(":microscope:", "\uD83D\uDD2C", "microscope"),
+ new Emoji(":telescope:", "\uD83D\uDD2D", "telescope"),
+ new Emoji(":clock130:", "\uD83D\uDD5C", "clock face one-thirty"),
+ new Emoji(":clock230:", "\uD83D\uDD5D", "clock face two-thirty"),
+ new Emoji(":clock330:", "\uD83D\uDD5E", "clock face three-thirty"),
+ new Emoji(":clock430:", "\uD83D\uDD5F", "clock face four-thirty"),
+ new Emoji(":clock530:", "\uD83D\uDD60", "clock face five-thirty"),
+ new Emoji(":clock630:", "\uD83D\uDD61", "clock face six-thirty"),
+ new Emoji(":clock730:", "\uD83D\uDD62", "clock face seven-thirty"),
+ new Emoji(":clock830:", "\uD83D\uDD63", "clock face eight-thirty"),
+ new Emoji(":clock930:", "\uD83D\uDD64", "clock face nine-thirty"),
+ new Emoji(":clock1030:", "\uD83D\uDD65", "clock face ten-thirty"),
+ new Emoji(":clock1130:", "\uD83D\uDD66", "clock face eleven-thirty"),
+ new Emoji(":clock1230:", "\uD83D\uDD67", "clock face twelve-thirty"),
+ });
+ }
+}
diff --git a/srcs/juloo.keyboard2/EmojiGridView.java b/srcs/juloo.keyboard2/EmojiGridView.java
new file mode 100644
index 0000000..f4d2d54
--- /dev/null
+++ b/srcs/juloo.keyboard2/EmojiGridView.java
@@ -0,0 +1,107 @@
+package juloo.keyboard2;
+
+import android.graphics.Typeface;
+import android.view.Gravity;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.AdapterView;
+import android.widget.BaseAdapter;
+import android.widget.GridView;
+import android.widget.TextView;
+
+public class EmojiGridView extends GridView
+ implements GridView.OnItemClickListener
+{
+ public static final int COLUMN_WIDTH = 192;
+ public static final int EMOJI_PANE_HEIGHT = 720;
+ public static final int EMOJI_PANE_BG = 0xFF191919;
+ public static final float EMOJI_SIZE = 32.f;
+
+ public EmojiGridView(Keyboard2 context)
+ {
+ super(context);
+ setOnItemClickListener(this);
+ EmojiViewAdpater adpater = new EmojiViewAdpater(context);
+ adpater.setEmojiSet(Emoji.getEmojiByType(Emoji.TYPE_EMOTICONS));
+ setColumnWidth(COLUMN_WIDTH);
+ setBackgroundColor(EMOJI_PANE_BG);
+ setAdapter(adpater);
+ }
+
+ public void onItemClick(AdapterView> parent, View v, int pos, long id)
+ {
+ System.out.println("Lol emoji: " + Emoji.getEmojiByType(Emoji.TYPE_EMOTICONS)[pos].getName());
+ }
+
+ @Override
+ public void onMeasure(int wSpec, int hSpec)
+ {
+ super.onMeasure(wSpec, hSpec);
+ setNumColumns(getMeasuredWidth() / COLUMN_WIDTH);
+ setMeasuredDimension(wSpec, EMOJI_PANE_HEIGHT);
+ }
+
+ private static class EmojiView extends TextView
+ {
+ private static ViewGroup.LayoutParams _layoutParams = null;
+
+ public EmojiView(Keyboard2 context)
+ {
+ super(context);
+ setTextSize(EMOJI_SIZE);
+ setGravity(Gravity.CENTER);
+ if (_layoutParams == null)
+ _layoutParams = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.FILL_PARENT);
+ setLayoutParams(_layoutParams);
+ }
+
+ public void setEmoji(Emoji emoji)
+ {
+ setText(emoji.getBytecode());
+ }
+ }
+
+ private static class EmojiViewAdpater extends BaseAdapter
+ {
+ private Keyboard2 _main;
+
+ private Emoji[] _emojiSet = null;
+
+ public EmojiViewAdpater(Keyboard2 main)
+ {
+ _main = main;
+ }
+
+ public void setEmojiSet(Emoji[] set)
+ {
+ _emojiSet = set;
+ }
+
+ public int getCount()
+ {
+ if (_emojiSet == null)
+ return (0);
+ return (_emojiSet.length);
+ }
+
+ public Object getItem(int pos)
+ {
+ return (_emojiSet[pos]);
+ }
+
+ public long getItemId(int pos)
+ {
+ return (pos);
+ }
+
+ public View getView(int pos, View convertView, ViewGroup parent)
+ {
+ EmojiView view = (EmojiView)convertView;
+
+ if (view == null)
+ view = new EmojiView(_main);
+ view.setEmoji(_emojiSet[pos]);
+ return (view);
+ }
+ }
+}
diff --git a/srcs/juloo.keyboard2/Keyboard2.java b/srcs/juloo.keyboard2/Keyboard2.java
index ab3c7c0..f38d41d 100644
--- a/srcs/juloo.keyboard2/Keyboard2.java
+++ b/srcs/juloo.keyboard2/Keyboard2.java
@@ -12,10 +12,14 @@ import android.view.KeyEvent;
import android.view.View;
import android.view.ViewGroup;
+/*
+** TODO: move config values in a Config object
+*/
public class Keyboard2 extends InputMethodService
implements SharedPreferences.OnSharedPreferenceChangeListener
{
- private Keyboard2View _inputView = null;
+ private Keyboard2View _keyboardView;
+ private ViewGroup _emojiPane = null;
private KeyboardData _textKeyboard = null;
private KeyboardData _numericKeyboard = null;
@@ -26,34 +30,43 @@ public class Keyboard2 extends InputMethodService
PreferenceManager.setDefaultValues(this, R.xml.settings, false);
PreferenceManager.getDefaultSharedPreferences(this).registerOnSharedPreferenceChangeListener(this);
updateConfig();
- _inputView = (Keyboard2View)getLayoutInflater().inflate(R.layout.input, null);
- _inputView.reset_prefs(this);
+ _keyboardView = (Keyboard2View)getLayoutInflater().inflate(R.layout.keyboard, null);
+ _keyboardView.reset_prefs(this);
+ }
+
+ private View getEmojiPane()
+ {
+ if (_emojiPane == null)
+ {
+ }
+ return (_emojiPane);
}
@Override
public View onCreateInputView()
{
- ViewGroup parent = (ViewGroup)_inputView.getParent();
+ // return (new EmojiGridView(this)); // TMP
+ ViewGroup parent = (ViewGroup)_keyboardView.getParent();
if (parent != null)
- parent.removeView(_inputView);
- return (_inputView);
+ parent.removeView(_keyboardView);
+ return (_keyboardView);
}
@Override
public void onStartInputView(EditorInfo info, boolean restarting)
{
if ((info.inputType & InputType.TYPE_CLASS_NUMBER) != 0)
- _inputView.setKeyboard(_numericKeyboard);
+ _keyboardView.setKeyboard(_numericKeyboard);
else
- _inputView.setKeyboard(_textKeyboard);
+ _keyboardView.setKeyboard(_textKeyboard);
}
@Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key)
{
updateConfig();
- _inputView.reset_prefs(this);
+ _keyboardView.reset_prefs(this);
}
@Override
@@ -64,7 +77,7 @@ public class Keyboard2 extends InputMethodService
@Override
public void onConfigurationChanged(Configuration newConfig)
{
- _inputView.reset();
+ _keyboardView.reset();
}
private void updateConfig()
@@ -83,28 +96,31 @@ public class Keyboard2 extends InputMethodService
public void handleKeyUp(KeyValue key, int flags)
{
+ int eventCode = key.getEventCode();
+ char keyChar = key.getChar(flags);
+
if (getCurrentInputConnection() == null)
return ;
- if (key.getEventCode() == KeyValue.EVENT_CONFIG)
+ if (eventCode == KeyValue.EVENT_CONFIG)
{
Intent intent = new Intent(this, SettingsActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
}
- else if (key.getEventCode() == KeyValue.EVENT_SWITCH_TEXT)
- _inputView.setKeyboard(_textKeyboard);
- else if (key.getEventCode() == KeyValue.EVENT_SWITCH_NUMERIC)
- _inputView.setKeyboard(_numericKeyboard);
+ else if (eventCode == KeyValue.EVENT_SWITCH_TEXT)
+ _keyboardView.setKeyboard(_textKeyboard);
+ else if (eventCode == KeyValue.EVENT_SWITCH_NUMERIC)
+ _keyboardView.setKeyboard(_numericKeyboard);
else if ((flags & (KeyValue.FLAG_CTRL | KeyValue.FLAG_ALT)) != 0)
handleMetaKeyUp(key, flags);
- // else if (key.getEventCode() == KeyEvent.KEYCODE_DEL)
+ // else if (eventCode == KeyEvent.KEYCODE_DEL)
// handleDelKey(1, 0);
- // else if (key.getEventCode() == KeyEvent.KEYCODE_FORWARD_DEL)
+ // else if (eventCode == KeyEvent.KEYCODE_FORWARD_DEL)
// handleDelKey(0, 1);
- else if (key.getChar(flags) == KeyValue.CHAR_NONE && key.getEventCode() != KeyValue.EVENT_NONE)
+ else if (keyChar == KeyValue.CHAR_NONE && eventCode != KeyValue.EVENT_NONE)
handleMetaKeyUp(key, flags);
- else if (key.getChar(flags) != KeyValue.CHAR_NONE)
- sendKeyChar(key.getChar(flags));
+ else if (keyChar != KeyValue.CHAR_NONE)
+ sendKeyChar(keyChar);
}
// private void handleDelKey(int before, int after)
diff --git a/srcs/juloo.keyboard2/Keyboard2View.java b/srcs/juloo.keyboard2/Keyboard2View.java
index 4c7d131..9bb743a 100644
--- a/srcs/juloo.keyboard2/Keyboard2View.java
+++ b/srcs/juloo.keyboard2/Keyboard2View.java
@@ -412,7 +412,7 @@ public class Keyboard2View extends View
canvas.drawText(k.getSymbol(_flags), x, y, right ? _keySubLabelRightPaint : _keySubLabelPaint);
}
- private class KeyDown
+ private static class KeyDown
{
public int pointerId;
public KeyValue value;