diff --git a/Telegram/MetaEmoji.xcodeproj/project.pbxproj b/Telegram/MetaEmoji.xcodeproj/project.pbxproj index 44b35e92e..c56fff40c 100644 --- a/Telegram/MetaEmoji.xcodeproj/project.pbxproj +++ b/Telegram/MetaEmoji.xcodeproj/project.pbxproj @@ -515,7 +515,7 @@ 6DB9C3763D02B1415CD9D565 /* Project object */ = { isa = PBXProject; attributes = { - LastUpgradeCheck = 0610; + LastUpgradeCheck = 0630; }; buildConfigurationList = DAC4C1AA5EDEA1C85E9CA5E6 /* Build configuration list for PBXProject "MetaEmoji" */; compatibilityVersion = "Xcode 3.2"; @@ -589,6 +589,7 @@ ENABLE_STRICT_OBJC_MSGSEND = YES; FRAMEWORK_SEARCH_PATHS = ""; GCC_GENERATE_DEBUGGING_SYMBOLS = NO; + GCC_NO_COMMON_BLOCKS = YES; GCC_VERSION = com.apple.compilers.llvm.clang.1_0; GCC_WARN_64_TO_32_BIT_CONVERSION = NO; GCC_WARN_ABOUT_RETURN_TYPE = YES; @@ -677,6 +678,7 @@ ENABLE_STRICT_OBJC_MSGSEND = YES; FRAMEWORK_SEARCH_PATHS = ""; GCC_GENERATE_DEBUGGING_SYMBOLS = YES; + GCC_NO_COMMON_BLOCKS = YES; GCC_OPTIMIZATION_LEVEL = 0; GCC_VERSION = com.apple.compilers.llvm.clang.1_0; GCC_WARN_64_TO_32_BIT_CONVERSION = NO; diff --git a/Telegram/Resources/lang.strings b/Telegram/Resources/lang.strings index ac2c908f1..3b691a7d5 100644 --- a/Telegram/Resources/lang.strings +++ b/Telegram/Resources/lang.strings @@ -420,6 +420,16 @@ Copyright (c) 2014 John Preston, https://desktop.telegram.org "lng_media_video" = "Video file"; "lng_media_audio" = "Voice message"; +"lng_emoji_category0" = "Frequently used"; +"lng_emoji_category1" = "People"; +"lng_emoji_category2" = "Nature"; +"lng_emoji_category3" = "Food & Drink"; +"lng_emoji_category4" = "Celebration"; +"lng_emoji_category5" = "Activity"; +"lng_emoji_category6" = "Travel & Places"; +"lng_emoji_category7" = "Objects & Symbols"; +"lng_emoji_category8" = "Stickers"; + "lng_in_dlg_photo" = "Photo"; "lng_in_dlg_video" = "Video"; "lng_in_dlg_contact" = "Contact"; diff --git a/Telegram/Resources/style.txt b/Telegram/Resources/style.txt index b3b13e12b..f4d6141ef 100644 --- a/Telegram/Resources/style.txt +++ b/Telegram/Resources/style.txt @@ -21,7 +21,6 @@ semibold: 'Open Sans Semibold'; fsize: 13px; spriteFile: ':/gui/art/sprite.png' / 2:':/gui/art/sprite_125x.png' / 3:':/gui/art/sprite_150x.png' / 4:':/gui/art/sprite_200x.png'; -emojisFile: ':/gui/art/emoji.png' / 2:':/gui/art/emoji_125x.png' / 3:':/gui/art/emoji_150x.png' / 4:':/gui/art/emoji_200x.png'; emojiImgSize: 18px; // exceptional value for retina emojiSize: 18px; emojiPadding: 0px; @@ -123,9 +122,9 @@ sysUnlock: sysButton(sysUpd) { img: sprite(207px, 22px, 19px, 19px); } titleBackButton: iconedButton(btnDefIconed) { - icon: sprite(133px, 197px, 13px, 20px); + icon: sprite(113px, 108px, 13px, 20px); iconPos: point(5px, 9px); - downIcon: sprite(133px, 197px, 13px, 20px); + downIcon: sprite(113px, 108px, 13px, 20px); downIconPos: point(5px, 10px); bgColor: #c4d8e9; @@ -998,7 +997,7 @@ replyHeight: 49px; replyTop: 8px; replyBottom: 6px; replyIconPos: point(13px, 13px); -replyIcon: sprite(174px, 195px, 24px, 24px); +replyIcon: sprite(343px, 197px, 24px, 24px); replyCancel: iconedButton(btnDefIconed) { icon: sprite(165px, 24px, 14px, 14px); iconPos: point(17px, 17px); @@ -1009,7 +1008,7 @@ replyCancel: iconedButton(btnDefIconed) { width: 49px; height: 49px; } -forwardIcon: sprite(368px, 173px, 24px, 24px); +forwardIcon: sprite(368px, 197px, 24px, 24px); historyScroll: flatScroll(scrollDef) { barColor: #89a0b47a; @@ -1460,33 +1459,39 @@ emojiScroll: flatScroll(scrollDef) { topsh: 0px; bottomsh: 0px; } -emojiRecentActive: sprite(290px, 287px, 20px, 20px); -emojiRecentOver: sprite(311px, 287px, 20px, 20px); emojiRecent: sprite(6px, 197px, 20px, 20px); -emojiPeopleActive: sprite(290px, 221px, 20px, 20px); -emojiPeopleOver: sprite(311px, 221px, 20px, 20px); +emojiRecentOver: sprite(290px, 221px, 20px, 20px); +emojiRecentActive: sprite(290px, 242px, 20px, 20px); emojiPeople: sprite(27px, 197px, 20px, 20px); -emojiNatureActive: sprite(245px, 266px, 20px, 20px); -emojiNatureOver: sprite(266px, 266px, 20px, 20px); +emojiPeopleOver: sprite(311px, 221px, 20px, 20px); +emojiPeopleActive: sprite(311px, 242px, 20px, 20px); emojiNature: sprite(48px, 197px, 20px, 20px); -emojiObjectsActive: sprite(290px, 242px, 20px, 20px); -emojiObjectsOver: sprite(311px, 242px, 20px, 20px); -emojiObjects: sprite(69px, 197px, 20px, 20px); -emojiPlacesActive: sprite(245px, 287px, 20px, 20px); -emojiPlacesOver: sprite(266px, 287px, 20px, 20px); -emojiPlaces: sprite(90px, 197px, 20px, 20px); -emojiSymbolsActive: sprite(290px, 266px, 20px, 20px); -emojiSymbolsOver: sprite(311px, 266px, 20px, 20px); -emojiSymbols: sprite(111px, 197px, 20px, 20px); -emojiStickersActive: sprite(311px, 308px, 20px, 20px); -emojiStickersOver: sprite(354px, 200px, 20px, 20px); -emojiStickers: sprite(375px, 200px, 20px, 20px); +emojiNatureOver: sprite(245px, 266px, 20px, 20px); +emojiNatureActive: sprite(245px, 287px, 20px, 20px); +emojiFood: sprite(69px, 197px, 20px, 20px); +emojiFoodOver: sprite(266px, 266px, 20px, 20px); +emojiFoodActive: sprite(266px, 287px, 20px, 20px); +emojiCelebration: sprite(90px, 197px, 20px, 20px); +emojiCelebrationOver: sprite(290px, 266px, 20px, 20px); +emojiCelebrationActive: sprite(290px, 287px, 20px, 20px); +emojiActivity: sprite(111px, 197px, 20px, 20px); +emojiActivityOver: sprite(311px, 266px, 20px, 20px); +emojiActivityActive: sprite(311px, 287px, 20px, 20px); +emojiTravel: sprite(132px, 197px, 20px, 20px); +emojiTravelOver: sprite(321px, 344px, 20px, 20px); +emojiTravelActive: sprite(321px, 365px, 20px, 20px); +emojiObjects: sprite(153px, 197px, 20px, 20px); +emojiObjectsOver: sprite(342px, 344px, 20px, 20px); +emojiObjectsActive: sprite(342px, 365px, 20px, 20px); +emojiStickers: sprite(174px, 197px, 20px, 20px); +emojiStickersOver: sprite(363px, 344px, 20px, 20px); +emojiStickersActive: sprite(363px, 365px, 20px, 20px); rbEmoji: flatCheckbox { textColor: transparent; bgColor: transparent; disColor: transparent; - width: 29px; + width: 28px; height: 36px; textTop: 0px; @@ -1523,6 +1528,38 @@ rbEmojiNature: flatCheckbox(rbEmoji) { disImageRect: emojiNature; chkDisImageRect: emojiNatureActive; } +rbEmojiFood: flatCheckbox(rbEmoji) { + imageRect: emojiFood; + chkImageRect: emojiFoodActive; + overImageRect: emojiFoodOver; + chkOverImageRect: emojiFoodActive; + disImageRect: emojiFood; + chkDisImageRect: emojiFoodActive; +} +rbEmojiCelebration: flatCheckbox(rbEmoji) { + imageRect: emojiCelebration; + chkImageRect: emojiCelebrationActive; + overImageRect: emojiCelebrationOver; + chkOverImageRect: emojiCelebrationActive; + disImageRect: emojiCelebration; + chkDisImageRect: emojiCelebrationActive; +} +rbEmojiActivity: flatCheckbox(rbEmoji) { + imageRect: emojiActivity; + chkImageRect: emojiActivityActive; + overImageRect: emojiActivityOver; + chkOverImageRect: emojiActivityActive; + disImageRect: emojiActivity; + chkDisImageRect: emojiActivityActive; +} +rbEmojiTravel: flatCheckbox(rbEmoji) { + imageRect: emojiTravel; + chkImageRect: emojiTravelActive; + overImageRect: emojiTravelOver; + chkOverImageRect: emojiTravelActive; + disImageRect: emojiTravel; + chkDisImageRect: emojiTravelActive; +} rbEmojiObjects: flatCheckbox(rbEmoji) { imageRect: emojiObjects; chkImageRect: emojiObjectsActive; @@ -1531,22 +1568,6 @@ rbEmojiObjects: flatCheckbox(rbEmoji) { disImageRect: emojiObjects; chkDisImageRect: emojiObjectsActive; } -rbEmojiPlaces: flatCheckbox(rbEmoji) { - imageRect: emojiPlaces; - chkImageRect: emojiPlacesActive; - overImageRect: emojiPlacesOver; - chkOverImageRect: emojiPlacesActive; - disImageRect: emojiPlaces; - chkDisImageRect: emojiPlacesActive; -} -rbEmojiSymbols: flatCheckbox(rbEmoji) { - imageRect: emojiSymbols; - chkImageRect: emojiSymbolsActive; - overImageRect: emojiSymbolsOver; - chkOverImageRect: emojiSymbolsActive; - disImageRect: emojiSymbols; - chkDisImageRect: emojiSymbolsActive; -} rbEmojiStickers: flatCheckbox(rbEmojiRecent) { imageRect: emojiStickers; chkImageRect: emojiStickersActive; @@ -1556,15 +1577,25 @@ rbEmojiStickers: flatCheckbox(rbEmojiRecent) { chkDisImageRect: emojiStickersActive; } emojiPanPadding: margins(5px, 0px, 0px, 5px); -emojiPanSize: size(28px, 28px); -emojiPanSub: 0px; +emojiPanSize: size(35px, 35px); emojiPanDuration: 200; emojiPanHover: #f0f0f0; emojiPanRound: 2px; +emojiPanHeader: 25px; +emojiPanHeaderFont: font(fsize semibold); +emojiPanHeaderColor: #999; +emojiPanHeaderLeft: 5px; +emojiPanHeaderTop: 5px; +emojiPanHeaderBg: #fffd; + +emojiColorsPadding: 5px; +emojiColorsSep: 1px; +emojiColorsSepColor: #d5d5d5; + stickerPanRound: 3px; stickerPanPadding: 2px; -stickerPanDelete: sprite(158px, 197px, 12px, 12px); +stickerPanDelete: sprite(123px, 132px, 12px, 12px); stickerPanDeleteOpacity: 0.5; mvBgColor: #222; @@ -1654,7 +1685,7 @@ mvDocLink: linkButton(btnDefLink) { mvDeltaFromLastAction: 5px; mvSwipeDistance: 80px; -medviewSaveMsgCheck: sprite(341px, 174px, 22px, 18px); +medviewSaveMsgCheck: sprite(311px, 309px, 22px, 18px); medviewSaveMsgFont: font(16px); medviewSaveMsgPadding: margins(55px, 19px, 29px, 20px); medviewSaveMsgCheckPos: point(23px, 21px); @@ -1664,7 +1695,7 @@ medviewSaveMsgShown: 2000; medviewSaveMsgHiding: 2500; medviewSaveMsg: #000000b2; -mvTransparentBrush: sprite(148px, 197px, 8px, 8px); +mvTransparentBrush: sprite(113px, 128px, 8px, 8px); overviewPhotoSkip: 10px; overviewPhotoMinSize: 100px; diff --git a/Telegram/SourceFiles/_other/genemoji.cpp b/Telegram/SourceFiles/_other/genemoji.cpp index 6ffa3523f..122f77a18 100644 --- a/Telegram/SourceFiles/_other/genemoji.cpp +++ b/Telegram/SourceFiles/_other/genemoji.cpp @@ -18,6 +18,7 @@ Copyright (c) 2014 John Preston, https://desktop.telegram.org #include "genemoji.h" #include +#include #ifdef Q_OS_WIN Q_IMPORT_PLUGIN(QWindowsIntegrationPlugin) @@ -34,6 +35,8 @@ Q_IMPORT_PLUGIN(QTgaPlugin) Q_IMPORT_PLUGIN(QTiffPlugin) Q_IMPORT_PLUGIN(QWbmpPlugin) Q_IMPORT_PLUGIN(QWebpPlugin) +#else +#error Only Mac OS X is supported #endif typedef quint32 uint32; @@ -43,6 +46,7 @@ struct EmojiData { uint32 code, code2; int x, y; int category, index; + uint32 color; }; // copied from emojibox.cpp @@ -92,294 +96,380 @@ const uint32 replacesCount = sizeof(replaces) / sizeof(EmojiReplace); typedef QMap ReplaceMap; ReplaceMap replaceMap; -static const int variantsCount = 4, inRow = 40, imSizes[] = { 18, 22, 27, 36 }; -static const char *variantPostfix[] = { "", "_125x", "_150x", "_200x" }; -static const char *shortNames[] = { "One", "OneAndQuarter", "OneAndHalf", "Two" }; +static const int variantsCount = 5, inRow = 40, imSizes[] = { 18, 22, 27, 36, 45 }; +static const int emojiFontSizes[] = { 14, 20, 27, 36, 45 }; +static const int emojiDeltas[] = { 15, 20, 25, 34, 42 }; +static const char *variantPostfix[] = { "", "_125x", "_150x", "_200x", "_250x" }; static const char *variantNames[] = { "dbisOne", "dbisOneAndQuarter", "dbisOneAndHalf", "dbisTwo" }; -typedef QMap EmojisData; -EmojisData emojisData; - -uint64 emojiCategory0[] = { - 0xD83DDE04LLU, - 0xD83DDE03LLU, - 0xD83DDE00LLU, - 0xD83DDE0ALLU, - 0x263ALLU, - 0xD83DDE09LLU, - 0xD83DDE0DLLU, - 0xD83DDE18LLU, - 0xD83DDE1ALLU, - 0xD83DDE17LLU, - 0xD83DDE19LLU, - 0xD83DDE1CLLU, - 0xD83DDE1DLLU, - 0xD83DDE1BLLU, - 0xD83DDE33LLU, - 0xD83DDE01LLU, - 0xD83DDE14LLU, - 0xD83DDE0CLLU, - 0xD83DDE12LLU, - 0xD83DDE1ELLU, - 0xD83DDE23LLU, - 0xD83DDE22LLU, - 0xD83DDE02LLU, - 0xD83DDE2DLLU, - 0xD83DDE2ALLU, - 0xD83DDE25LLU, - 0xD83DDE30LLU, - 0xD83DDE05LLU, - 0xD83DDE13LLU, - 0xD83DDE29LLU, - 0xD83DDE2BLLU, - 0xD83DDE28LLU, - 0xD83DDE31LLU, - 0xD83DDE20LLU, - 0xD83DDE21LLU, - 0xD83DDE24LLU, - 0xD83DDE16LLU, - 0xD83DDE06LLU, - 0xD83DDE0BLLU, - 0xD83DDE37LLU, - 0xD83DDE0ELLU, - 0xD83DDE34LLU, - 0xD83DDE35LLU, - 0xD83DDE32LLU, - 0xD83DDE1FLLU, - 0xD83DDE26LLU, - 0xD83DDE27LLU, - 0xD83DDE08LLU, - 0xD83DDC7FLLU, - 0xD83DDE2ELLU, - 0xD83DDE2CLLU, - 0xD83DDE10LLU, - 0xD83DDE15LLU, - 0xD83DDE2FLLU, - 0xD83DDE36LLU, - 0xD83DDE07LLU, - 0xD83DDE0FLLU, - 0xD83DDE11LLU, - 0xD83DDC72LLU, - 0xD83DDC73LLU, - 0xD83DDC6ELLU, - 0xD83DDC77LLU, - 0xD83DDC82LLU, +uint64 emojiColors[] = { + 0xD83CDFFBLLU, + 0xD83CDFFCLLU, + 0xD83CDFFDLLU, + 0xD83CDFFELLU, + 0xD83CDFFFLLU, +}; +uint64 emojiColored[] = { 0xD83DDC76LLU, 0xD83DDC66LLU, 0xD83DDC67LLU, 0xD83DDC68LLU, 0xD83DDC69LLU, + + 0xD83DDC70LLU, + 0xD83DDC71LLU, + 0xD83DDC72LLU, + 0xD83DDC73LLU, 0xD83DDC74LLU, 0xD83DDC75LLU, - 0xD83DDC71LLU, - 0xD83DDC7CLLU, + 0xD83DDC6ELLU, + 0xD83DDC77LLU, 0xD83DDC78LLU, - 0xD83DDE3ALLU, + 0xD83DDC82LLU, + 0xD83DDC7CLLU, + 0xD83CDF85LLU, + + 0xD83DDE47LLU, + 0xD83DDC81LLU, + 0xD83DDE45LLU, + 0xD83DDE46LLU, + 0xD83DDE4BLLU, + 0xD83DDE4ELLU, + 0xD83DDE4DLLU, + 0xD83DDC86LLU, + 0xD83DDC87LLU, + + 0xD83DDE4CLLU, + 0xD83DDC4FLLU, + 0xD83DDC42LLU, + + 0xD83DDC43LLU, + + 0xD83DDC85LLU, + 0xD83DDC4BLLU, + 0xD83DDC4DLLU, + 0xD83DDC4ELLU, + 0x261DLLU, + 0xD83DDC46LLU, + 0xD83DDC47LLU, + 0xD83DDC48LLU, + 0xD83DDC49LLU, + 0xD83DDC4CLLU, + 0x270CLLU, + 0xD83DDC4ALLU, + 0x270ALLU, + 0x270BLLU, + 0xD83DDCAALLU, + 0xD83DDC50LLU, + 0xD83DDE4FLLU, + + 0xD83CDFC3LLU, + 0xD83DDEB6LLU, + 0xD83DDC83LLU, + 0xD83DDEA3LLU, + 0xD83CDFCALLU, + 0xD83CDFC4LLU, + 0xD83DDEC0LLU, + + 0xD83DDEB4LLU, + 0xD83DDEB5LLU, + 0xD83CDFC7LLU, +}; +const char *emojiSequences[] = { // getter of sequence emojis is done manually + "\xf0\x9f\x91\xa8\xe2\x80\x8d\xf0\x9f\x91\xa9\xe2\x80\x8d\xf0\x9f\x91\xa7", + "\xf0\x9f\x91\xa8\xe2\x80\x8d\xf0\x9f\x91\xa9\xe2\x80\x8d\xf0\x9f\x91\xa7\xe2\x80\x8d\xf0\x9f\x91\xa6", + "\xf0\x9f\x91\xa8\xe2\x80\x8d\xf0\x9f\x91\xa9\xe2\x80\x8d\xf0\x9f\x91\xa6\xe2\x80\x8d\xf0\x9f\x91\xa6", + "\xf0\x9f\x91\xa8\xe2\x80\x8d\xf0\x9f\x91\xa9\xe2\x80\x8d\xf0\x9f\x91\xa7\xe2\x80\x8d\xf0\x9f\x91\xa7", + "\xf0\x9f\x91\xa9\xe2\x80\x8d\xf0\x9f\x91\xa9\xe2\x80\x8d\xf0\x9f\x91\xa6", + "\xf0\x9f\x91\xa9\xe2\x80\x8d\xf0\x9f\x91\xa9\xe2\x80\x8d\xf0\x9f\x91\xa7", + "\xf0\x9f\x91\xa9\xe2\x80\x8d\xf0\x9f\x91\xa9\xe2\x80\x8d\xf0\x9f\x91\xa7\xe2\x80\x8d\xf0\x9f\x91\xa6", + "\xf0\x9f\x91\xa9\xe2\x80\x8d\xf0\x9f\x91\xa9\xe2\x80\x8d\xf0\x9f\x91\xa6\xe2\x80\x8d\xf0\x9f\x91\xa6", + "\xf0\x9f\x91\xa9\xe2\x80\x8d\xf0\x9f\x91\xa9\xe2\x80\x8d\xf0\x9f\x91\xa7\xe2\x80\x8d\xf0\x9f\x91\xa7", + "\xf0\x9f\x91\xa8\xe2\x80\x8d\xf0\x9f\x91\xa8\xe2\x80\x8d\xf0\x9f\x91\xa6", + "\xf0\x9f\x91\xa8\xe2\x80\x8d\xf0\x9f\x91\xa8\xe2\x80\x8d\xf0\x9f\x91\xa7", + "\xf0\x9f\x91\xa8\xe2\x80\x8d\xf0\x9f\x91\xa8\xe2\x80\x8d\xf0\x9f\x91\xa7\xe2\x80\x8d\xf0\x9f\x91\xa6", + "\xf0\x9f\x91\xa8\xe2\x80\x8d\xf0\x9f\x91\xa8\xe2\x80\x8d\xf0\x9f\x91\xa6\xe2\x80\x8d\xf0\x9f\x91\xa6", + "\xf0\x9f\x91\xa8\xe2\x80\x8d\xf0\x9f\x91\xa8\xe2\x80\x8d\xf0\x9f\x91\xa7\xe2\x80\x8d\xf0\x9f\x91\xa7", + + "\xf0\x9f\x91\xa9\xe2\x80\x8d\xe2\x9d\xa4\xef\xb8\x8f\xe2\x80\x8d\xf0\x9f\x91\xa9", + "\xf0\x9f\x91\xa8\xe2\x80\x8d\xe2\x9d\xa4\xef\xb8\x8f\xe2\x80\x8d\xf0\x9f\x91\xa8", + + "\xf0\x9f\x91\xa9\xe2\x80\x8d\xe2\x9d\xa4\xef\xb8\x8f\xe2\x80\x8d\xf0\x9f\x92\x8b\xe2\x80\x8d\xf0\x9f\x91\xa9", + "\xf0\x9f\x91\xa8\xe2\x80\x8d\xe2\x9d\xa4\xef\xb8\x8f\xe2\x80\x8d\xf0\x9f\x92\x8b\xe2\x80\x8d\xf0\x9f\x91\xa8", +}; + +typedef QMap EmojisData; +EmojisData emojisData; + +uint64 emojiCategory1[] = { + 0xD83DDE00LLU, + 0xD83DDE01LLU, + 0xD83DDE02LLU, + 0xD83DDE03LLU, + 0xD83DDE04LLU, + 0xD83DDE05LLU, + 0xD83DDE06LLU, + 0xD83DDE07LLU, + 0xD83DDE08LLU, + 0xD83DDC7FLLU, + 0xD83DDE09LLU, + 0xD83DDE0ALLU, + 0x263ALLU, + 0xD83DDE0BLLU, + 0xD83DDE0CLLU, + 0xD83DDE0DLLU, + 0xD83DDE0ELLU, + 0xD83DDE0FLLU, + 0xD83DDE10LLU, + 0xD83DDE11LLU, + 0xD83DDE12LLU, + 0xD83DDE13LLU, + 0xD83DDE14LLU, + 0xD83DDE15LLU, + 0xD83DDE16LLU, + 0xD83DDE17LLU, + 0xD83DDE18LLU, + 0xD83DDE19LLU, + 0xD83DDE1ALLU, + 0xD83DDE1BLLU, + 0xD83DDE1CLLU, + 0xD83DDE1DLLU, + 0xD83DDE1ELLU, + 0xD83DDE1FLLU, + 0xD83DDE20LLU, + 0xD83DDE21LLU, + 0xD83DDE22LLU, + 0xD83DDE23LLU, + 0xD83DDE24LLU, + 0xD83DDE25LLU, + 0xD83DDE26LLU, + 0xD83DDE27LLU, + 0xD83DDE28LLU, + 0xD83DDE29LLU, + 0xD83DDE2ALLU, + 0xD83DDE2BLLU, + 0xD83DDE2CLLU, + 0xD83DDE2DLLU, + 0xD83DDE2ELLU, + 0xD83DDE2FLLU, + 0xD83DDE30LLU, + 0xD83DDE31LLU, + 0xD83DDE32LLU, + 0xD83DDE33LLU, + 0xD83DDE34LLU, + 0xD83DDE35LLU, + 0xD83DDE36LLU, + 0xD83DDE37LLU, 0xD83DDE38LLU, - 0xD83DDE3BLLU, - 0xD83DDE3DLLU, - 0xD83DDE3CLLU, - 0xD83DDE40LLU, - 0xD83DDE3FLLU, 0xD83DDE39LLU, + 0xD83DDE3ALLU, + 0xD83DDE3BLLU, + 0xD83DDE3CLLU, + 0xD83DDE3DLLU, 0xD83DDE3ELLU, + 0xD83DDE3FLLU, + 0xD83DDE40LLU, + 0xD83DDC63LLU, + 0xD83DDC64LLU, + 0xD83DDC65LLU, + 0xD83DDC76LLU, + 0xD83DDC66LLU, + 0xD83DDC67LLU, + 0xD83DDC68LLU, + 0xD83DDC69LLU, + 0xD83DDC6ALLU, + 0xFFFF0000LLU,//0xD83DDC68LLU,0x200DLLU,0xD83DDC69LLU,0x200DLLU,0xD83DDC67LLU, + 0xFFFF0001LLU,//0xD83DDC68LLU,0x200DLLU,0xD83DDC69LLU,0x200DLLU,0xD83DDC67LLU,0x200DLLU,0xD83DDC66LLU, + 0xFFFF0002LLU,//0xD83DDC68LLU,0x200DLLU,0xD83DDC69LLU,0x200DLLU,0xD83DDC66LLU,0x200DLLU,0xD83DDC66LLU, + 0xFFFF0003LLU,//0xD83DDC68LLU,0x200DLLU,0xD83DDC69LLU,0x200DLLU,0xD83DDC67LLU,0x200DLLU,0xD83DDC67LLU, + 0xFFFF0004LLU,//0xD83DDC69LLU,0x200DLLU,0xD83DDC69LLU,0x200DLLU,0xD83DDC66LLU, + 0xFFFF0005LLU,//0xD83DDC69LLU,0x200DLLU,0xD83DDC69LLU,0x200DLLU,0xD83DDC67LLU, + 0xFFFF0006LLU,//0xD83DDC69LLU,0x200DLLU,0xD83DDC69LLU,0x200DLLU,0xD83DDC67LLU,0x200DLLU,0xD83DDC66LLU, + 0xFFFF0007LLU,//0xD83DDC69LLU,0x200DLLU,0xD83DDC69LLU,0x200DLLU,0xD83DDC66LLU,0x200DLLU,0xD83DDC66LLU, + 0xFFFF0008LLU,//0xD83DDC69LLU,0x200DLLU,0xD83DDC69LLU,0x200DLLU,0xD83DDC67LLU,0x200DLLU,0xD83DDC67LLU, + 0xFFFF0009LLU,//0xD83DDC68LLU,0x200DLLU,0xD83DDC68LLU,0x200DLLU,0xD83DDC66LLU, + 0xFFFF000ALLU,//0xD83DDC68LLU,0x200DLLU,0xD83DDC68LLU,0x200DLLU,0xD83DDC67LLU, + 0xFFFF000BLLU,//0xD83DDC68LLU,0x200DLLU,0xD83DDC68LLU,0x200DLLU,0xD83DDC67LLU,0x200DLLU,0xD83DDC66LLU, + 0xFFFF000CLLU,//0xD83DDC68LLU,0x200DLLU,0xD83DDC68LLU,0x200DLLU,0xD83DDC66LLU,0x200DLLU,0xD83DDC66LLU, + 0xFFFF000DLLU,//0xD83DDC68LLU,0x200DLLU,0xD83DDC68LLU,0x200DLLU,0xD83DDC67LLU,0x200DLLU,0xD83DDC67LLU, + 0xD83DDC6BLLU, + 0xD83DDC6CLLU, + 0xD83DDC6DLLU, + 0xD83DDC6FLLU, + 0xD83DDC70LLU, + 0xD83DDC71LLU, + 0xD83DDC72LLU, + 0xD83DDC73LLU, + 0xD83DDC74LLU, + 0xD83DDC75LLU, + 0xD83DDC6ELLU, + 0xD83DDC77LLU, + 0xD83DDC78LLU, + 0xD83DDC82LLU, + 0xD83DDC7CLLU, + 0xD83CDF85LLU, + 0xD83DDC7BLLU, 0xD83DDC79LLU, 0xD83DDC7ALLU, - 0xD83DDE48LLU, - 0xD83DDE49LLU, - 0xD83DDE4ALLU, + 0xD83DDCA9LLU, 0xD83DDC80LLU, 0xD83DDC7DLLU, - 0xD83DDCA9LLU, - 0xD83DDD25LLU, - 0x2728LLU, - 0xD83CDF1FLLU, - 0xD83DDCABLLU, - 0xD83DDCA5LLU, - 0xD83DDCA2LLU, - 0xD83DDCA6LLU, - 0xD83DDCA7LLU, - 0xD83DDCA4LLU, - 0xD83DDCA8LLU, + 0xD83DDC7ELLU, + 0xD83DDE47LLU, + 0xD83DDC81LLU, + 0xD83DDE45LLU, + 0xD83DDE46LLU, + 0xD83DDE4BLLU, + 0xD83DDE4ELLU, + 0xD83DDE4DLLU, + 0xD83DDC86LLU, + 0xD83DDC87LLU, + 0xD83DDC91LLU, + 0xFFFF000ELLU,//0xD83DDC69LLU,0x200DLLU,0x2764LLU,0xFE0FLLU,0x200DLLU,0xD83DDC69LLU, + 0xFFFF000FLLU,//0xD83DDC68LLU,0x200DLLU,0x2764LLU,0xFE0FLLU,0x200DLLU,0xD83DDC68LLU, + 0xD83DDC8FLLU, + 0xFFFF0010LLU,//0xD83DDC69LLU,0x200DLLU,0x2764LLU,0xFE0FLLU,0x200DLLU,0xD83DDC8BLLU,0x200DLLU,0xD83DDC69LLU, + 0xFFFF0011LLU,//0xD83DDC68LLU,0x200DLLU,0x2764LLU,0xFE0FLLU,0x200DLLU,0xD83DDC8BLLU,0x200DLLU,0xD83DDC68LLU, + 0xD83DDE4CLLU, + 0xD83DDC4FLLU, 0xD83DDC42LLU, 0xD83DDC40LLU, 0xD83DDC43LLU, - 0xD83DDC45LLU, 0xD83DDC44LLU, + 0xD83DDC8BLLU, + 0xD83DDC45LLU, + 0xD83DDC85LLU, + 0xD83DDC4BLLU, 0xD83DDC4DLLU, 0xD83DDC4ELLU, - 0xD83DDC4CLLU, - 0xD83DDC4ALLU, - 0x270ALLU, - 0x270CLLU, - 0xD83DDC4BLLU, - 0x270BLLU, - 0xD83DDC50LLU, + 0x261DLLU, 0xD83DDC46LLU, 0xD83DDC47LLU, - 0xD83DDC49LLU, 0xD83DDC48LLU, - 0xD83DDE4CLLU, - 0xD83DDE4FLLU, - 0x261DLLU, - 0xD83DDC4FLLU, + 0xD83DDC49LLU, + 0xD83DDC4CLLU, + 0x270CLLU, + 0xD83DDC4ALLU, + 0x270ALLU, + 0x270BLLU, 0xD83DDCAALLU, - 0xD83DDEB6LLU, - 0xD83CDFC3LLU, - 0xD83DDC83LLU, - 0xD83DDC6BLLU, - 0xD83DDC6ALLU, - 0xD83DDC6CLLU, - 0xD83DDC6DLLU, - 0xD83DDC8FLLU, - 0xD83DDC91LLU, - 0xD83DDC6FLLU, - 0xD83DDE46LLU, - 0xD83DDE45LLU, - 0xD83DDC81LLU, - 0xD83DDE4BLLU, - 0xD83DDC86LLU, - 0xD83DDC87LLU, - 0xD83DDC85LLU, - 0xD83DDC70LLU, - 0xD83DDE4ELLU, - 0xD83DDE4DLLU, - 0xD83DDE47LLU, - 0xD83CDFA9LLU, - 0xD83DDC51LLU, - 0xD83DDC52LLU, - 0xD83DDC5FLLU, - 0xD83DDC5ELLU, - 0xD83DDC61LLU, - 0xD83DDC60LLU, - 0xD83DDC62LLU, - 0xD83DDC55LLU, - 0xD83DDC54LLU, - 0xD83DDC5ALLU, - 0xD83DDC57LLU, - 0xD83CDFBDLLU, - 0xD83DDC56LLU, - 0xD83DDC58LLU, - 0xD83DDC59LLU, - 0xD83DDCBCLLU, - 0xD83DDC5CLLU, - 0xD83DDC5DLLU, - 0xD83DDC5BLLU, - 0xD83DDC53LLU, - 0xD83CDF80LLU, - 0xD83CDF02LLU, - 0xD83DDC84LLU, - 0xD83DDC9BLLU, - 0xD83DDC99LLU, - 0xD83DDC9CLLU, - 0xD83DDC9ALLU, - 0x2764LLU, - 0xD83DDC94LLU, - 0xD83DDC97LLU, - 0xD83DDC93LLU, - 0xD83DDC95LLU, - 0xD83DDC96LLU, - 0xD83DDC9ELLU, - 0xD83DDC98LLU, - 0xD83DDC8CLLU, - 0xD83DDC8BLLU, - 0xD83DDC8DLLU, - 0xD83DDC8ELLU, - 0xD83DDC64LLU, - 0xD83DDC65LLU, - 0xD83DDCACLLU, - 0xD83DDC63LLU, - 0xD83DDCADLLU, + 0xD83DDC50LLU, + 0xD83DDE4FLLU, }; -uint64 emojiCategory1[] = { - 0xD83DDC36LLU, - 0xD83DDC3ALLU, - 0xD83DDC31LLU, - 0xD83DDC2DLLU, - 0xD83DDC39LLU, - 0xD83DDC30LLU, - 0xD83DDC38LLU, - 0xD83DDC2FLLU, - 0xD83DDC28LLU, - 0xD83DDC3BLLU, - 0xD83DDC37LLU, - 0xD83DDC3DLLU, - 0xD83DDC2ELLU, - 0xD83DDC17LLU, - 0xD83DDC35LLU, - 0xD83DDC12LLU, - 0xD83DDC34LLU, - 0xD83DDC11LLU, - 0xD83DDC18LLU, - 0xD83DDC3CLLU, - 0xD83DDC27LLU, - 0xD83DDC26LLU, - 0xD83DDC24LLU, - 0xD83DDC25LLU, - 0xD83DDC23LLU, - 0xD83DDC14LLU, - 0xD83DDC0DLLU, - 0xD83DDC22LLU, - 0xD83DDC1BLLU, - 0xD83DDC1DLLU, - 0xD83DDC1CLLU, - 0xD83DDC1ELLU, - 0xD83DDC0CLLU, - 0xD83DDC19LLU, - 0xD83DDC1ALLU, - 0xD83DDC20LLU, - 0xD83DDC1FLLU, - 0xD83DDC2CLLU, - 0xD83DDC33LLU, - 0xD83DDC0BLLU, - 0xD83DDC04LLU, - 0xD83DDC0FLLU, - 0xD83DDC00LLU, - 0xD83DDC03LLU, - 0xD83DDC05LLU, - 0xD83DDC07LLU, - 0xD83DDC09LLU, - 0xD83DDC0ELLU, - 0xD83DDC10LLU, - 0xD83DDC13LLU, - 0xD83DDC15LLU, - 0xD83DDC16LLU, - 0xD83DDC01LLU, - 0xD83DDC02LLU, - 0xD83DDC32LLU, - 0xD83DDC21LLU, - 0xD83DDC0ALLU, - 0xD83DDC2BLLU, - 0xD83DDC2ALLU, - 0xD83DDC06LLU, - 0xD83DDC08LLU, - 0xD83DDC29LLU, - 0xD83DDC3ELLU, - 0xD83DDC90LLU, - 0xD83CDF38LLU, - 0xD83CDF37LLU, - 0xD83CDF40LLU, - 0xD83CDF39LLU, - 0xD83CDF3BLLU, - 0xD83CDF3ALLU, - 0xD83CDF41LLU, - 0xD83CDF43LLU, - 0xD83CDF42LLU, - 0xD83CDF3FLLU, - 0xD83CDF3ELLU, - 0xD83CDF44LLU, - 0xD83CDF35LLU, - 0xD83CDF34LLU, +uint64 emojiCategory2[] = { + 0xD83CDF31LLU, 0xD83CDF32LLU, 0xD83CDF33LLU, - 0xD83CDF30LLU, - 0xD83CDF31LLU, + 0xD83CDF34LLU, + 0xD83CDF35LLU, + 0xD83CDF37LLU, + 0xD83CDF38LLU, + 0xD83CDF39LLU, + 0xD83CDF3ALLU, + 0xD83CDF3BLLU, 0xD83CDF3CLLU, + 0xD83DDC90LLU, + 0xD83CDF3ELLU, + 0xD83CDF3FLLU, + 0xD83CDF40LLU, + 0xD83CDF41LLU, + 0xD83CDF42LLU, + 0xD83CDF43LLU, + 0xD83CDF44LLU, + 0xD83CDF30LLU, + 0xD83DDC00LLU, + 0xD83DDC01LLU, + 0xD83DDC2DLLU, + 0xD83DDC39LLU, + 0xD83DDC02LLU, + 0xD83DDC03LLU, + 0xD83DDC04LLU, + 0xD83DDC2ELLU, + 0xD83DDC05LLU, + 0xD83DDC06LLU, + 0xD83DDC2FLLU, + 0xD83DDC07LLU, + 0xD83DDC30LLU, + 0xD83DDC08LLU, + 0xD83DDC31LLU, + 0xD83DDC0ELLU, + 0xD83DDC34LLU, + 0xD83DDC0FLLU, + 0xD83DDC11LLU, + 0xD83DDC10LLU, + 0xD83DDC13LLU, + 0xD83DDC14LLU, + 0xD83DDC24LLU, + 0xD83DDC23LLU, + 0xD83DDC25LLU, + 0xD83DDC26LLU, + 0xD83DDC27LLU, + 0xD83DDC18LLU, + 0xD83DDC2ALLU, + 0xD83DDC2BLLU, + 0xD83DDC17LLU, + 0xD83DDC16LLU, + 0xD83DDC37LLU, + 0xD83DDC3DLLU, + 0xD83DDC15LLU, + 0xD83DDC29LLU, + 0xD83DDC36LLU, + 0xD83DDC3ALLU, + 0xD83DDC3BLLU, + 0xD83DDC28LLU, + 0xD83DDC3CLLU, + 0xD83DDC35LLU, + 0xD83DDE48LLU, + 0xD83DDE49LLU, + 0xD83DDE4ALLU, + 0xD83DDC12LLU, + 0xD83DDC09LLU, + 0xD83DDC32LLU, + 0xD83DDC0ALLU, + 0xD83DDC0DLLU, + 0xD83DDC22LLU, + 0xD83DDC38LLU, + 0xD83DDC0BLLU, + 0xD83DDC33LLU, + 0xD83DDC2CLLU, + 0xD83DDC19LLU, + 0xD83DDC1FLLU, + 0xD83DDC20LLU, + 0xD83DDC21LLU, + 0xD83DDC1ALLU, + 0xD83DDC0CLLU, + 0xD83DDC1BLLU, + 0xD83DDC1CLLU, + 0xD83DDC1DLLU, + 0xD83DDC1ELLU, + 0xD83DDC3ELLU, + 0x26A1LLU, + 0xD83DDD25LLU, + 0xD83CDF19LLU, + 0x2600LLU, + 0x26C5LLU, + 0x2601LLU, + 0xD83DDCA7LLU, + 0xD83DDCA6LLU, + 0x2614LLU, + 0xD83DDCA8LLU, + 0x2744LLU, + 0xD83CDF1FLLU, + 0x2B50LLU, + 0xD83CDF20LLU, + 0xD83CDF04LLU, + 0xD83CDF05LLU, + 0xD83CDF08LLU, + 0xD83CDF0ALLU, + 0xD83CDF0BLLU, + 0xD83CDF0CLLU, + 0xD83DDDFBLLU, + 0xD83DDDFELLU, 0xD83CDF10LLU, - 0xD83CDF1ELLU, - 0xD83CDF1DLLU, - 0xD83CDF1ALLU, + 0xD83CDF0DLLU, + 0xD83CDF0ELLU, + 0xD83CDF0FLLU, 0xD83CDF11LLU, 0xD83CDF12LLU, 0xD83CDF13LLU, @@ -388,367 +478,535 @@ uint64 emojiCategory1[] = { 0xD83CDF16LLU, 0xD83CDF17LLU, 0xD83CDF18LLU, - 0xD83CDF1CLLU, + 0xD83CDF1ALLU, + 0xD83CDF1DLLU, 0xD83CDF1BLLU, - 0xD83CDF19LLU, - 0xD83CDF0DLLU, - 0xD83CDF0ELLU, - 0xD83CDF0FLLU, - 0xD83CDF0BLLU, - 0xD83CDF0CLLU, - 0xD83CDF20LLU, - 0x2B50LLU, - 0x2600LLU, - 0x26C5LLU, - 0x2601LLU, - 0x26A1LLU, - 0x2614LLU, - 0x2744LLU, - 0x26C4LLU, - 0xD83CDF00LLU, - 0xD83CDF01LLU, - 0xD83CDF08LLU, - 0xD83CDF0ALLU, + 0xD83CDF1CLLU, + 0xD83CDF1ELLU, }; -uint64 emojiCategory2[] = { - 0xD83CDF8DLLU, - 0xD83DDC9DLLU, - 0xD83CDF8ELLU, - 0xD83CDF92LLU, - 0xD83CDF93LLU, - 0xD83CDF8FLLU, - 0xD83CDF86LLU, - 0xD83CDF87LLU, - 0xD83CDF90LLU, - 0xD83CDF91LLU, - 0xD83CDF83LLU, - 0xD83DDC7BLLU, - 0xD83CDF85LLU, - 0xD83CDF84LLU, - 0xD83CDF81LLU, - 0xD83CDF8BLLU, - 0xD83CDF89LLU, - 0xD83CDF8ALLU, - 0xD83CDF88LLU, - 0xD83CDF8CLLU, - 0xD83DDD2ELLU, - 0xD83CDFA5LLU, - 0xD83DDCF7LLU, - 0xD83DDCF9LLU, - 0xD83DDCFCLLU, - 0xD83DDCBFLLU, - 0xD83DDCC0LLU, - 0xD83DDCBDLLU, - 0xD83DDCBELLU, - 0xD83DDCBBLLU, - 0xD83DDCF1LLU, - 0x260ELLU, - 0xD83DDCDELLU, - 0xD83DDCDFLLU, - 0xD83DDCE0LLU, - 0xD83DDCE1LLU, - 0xD83DDCFALLU, - 0xD83DDCFBLLU, - 0xD83DDD0ALLU, - 0xD83DDD09LLU, - 0xD83DDD08LLU, - 0xD83DDD07LLU, - 0xD83DDD14LLU, - 0xD83DDD15LLU, - 0xD83DDCE2LLU, - 0xD83DDCE3LLU, - 0x23F3LLU, - 0x231BLLU, - 0x23F0LLU, - 0x231ALLU, - 0xD83DDD13LLU, - 0xD83DDD12LLU, - 0xD83DDD0FLLU, - 0xD83DDD10LLU, - 0xD83DDD11LLU, - 0xD83DDD0ELLU, - 0xD83DDCA1LLU, - 0xD83DDD26LLU, - 0xD83DDD06LLU, - 0xD83DDD05LLU, - 0xD83DDD0CLLU, - 0xD83DDD0BLLU, - 0xD83DDD0DLLU, - 0xD83DDEC1LLU, - 0xD83DDEC0LLU, - 0xD83DDEBFLLU, - 0xD83DDEBDLLU, - 0xD83DDD27LLU, - 0xD83DDD29LLU, - 0xD83DDD28LLU, - 0xD83DDEAALLU, - 0xD83DDEACLLU, - 0xD83DDCA3LLU, - 0xD83DDD2BLLU, - 0xD83DDD2ALLU, - 0xD83DDC8ALLU, - 0xD83DDC89LLU, - 0xD83DDCB0LLU, - 0xD83DDCB4LLU, - 0xD83DDCB5LLU, - 0xD83DDCB7LLU, - 0xD83DDCB6LLU, - 0xD83DDCB3LLU, - 0xD83DDCB8LLU, - 0xD83DDCF2LLU, - 0xD83DDCE7LLU, - 0xD83DDCE5LLU, - 0xD83DDCE4LLU, - 0x2709LLU, - 0xD83DDCE9LLU, - 0xD83DDCE8LLU, - 0xD83DDCEFLLU, - 0xD83DDCEBLLU, - 0xD83DDCEALLU, - 0xD83DDCECLLU, - 0xD83DDCEDLLU, - 0xD83DDCEELLU, - 0xD83DDCE6LLU, - 0xD83DDCDDLLU, - 0xD83DDCC4LLU, - 0xD83DDCC3LLU, - 0xD83DDCD1LLU, - 0xD83DDCCALLU, - 0xD83DDCC8LLU, - 0xD83DDCC9LLU, - 0xD83DDCDCLLU, - 0xD83DDCCBLLU, - 0xD83DDCC5LLU, - 0xD83DDCC6LLU, - 0xD83DDCC7LLU, - 0xD83DDCC1LLU, - 0xD83DDCC2LLU, - 0x2702LLU, - 0xD83DDCCCLLU, - 0xD83DDCCELLU, - 0x2712LLU, - 0x270FLLU, - 0xD83DDCCFLLU, - 0xD83DDCD0LLU, - 0xD83DDCD5LLU, - 0xD83DDCD7LLU, - 0xD83DDCD8LLU, - 0xD83DDCD9LLU, - 0xD83DDCD3LLU, - 0xD83DDCD4LLU, - 0xD83DDCD2LLU, - 0xD83DDCDALLU, - 0xD83DDCD6LLU, - 0xD83DDD16LLU, - 0xD83DDCDBLLU, - 0xD83DDD2CLLU, - 0xD83DDD2DLLU, - 0xD83DDCF0LLU, - 0xD83CDFA8LLU, - 0xD83CDFACLLU, - 0xD83CDFA4LLU, - 0xD83CDFA7LLU, - 0xD83CDFBCLLU, - 0xD83CDFB5LLU, - 0xD83CDFB6LLU, - 0xD83CDFB9LLU, - 0xD83CDFBBLLU, - 0xD83CDFBALLU, - 0xD83CDFB7LLU, - 0xD83CDFB8LLU, - 0xD83DDC7ELLU, - 0xD83CDFAELLU, - 0xD83CDCCFLLU, - 0xD83CDFB4LLU, - 0xD83CDC04LLU, - 0xD83CDFB2LLU, - 0xD83CDFAFLLU, - 0xD83CDFC8LLU, - 0xD83CDFC0LLU, - 0x26BDLLU, - 0x26BELLU, - 0xD83CDFBELLU, - 0xD83CDFB1LLU, - 0xD83CDFC9LLU, - 0xD83CDFB3LLU, - 0x26F3LLU, - 0xD83DDEB5LLU, - 0xD83DDEB4LLU, - 0xD83CDFC1LLU, - 0xD83CDFC7LLU, - 0xD83CDFC6LLU, - 0xD83CDFBFLLU, - 0xD83CDFC2LLU, - 0xD83CDFCALLU, - 0xD83CDFC4LLU, - 0xD83CDFA3LLU, - 0x2615LLU, - 0xD83CDF75LLU, - 0xD83CDF76LLU, - 0xD83CDF7CLLU, - 0xD83CDF7ALLU, - 0xD83CDF7BLLU, - 0xD83CDF78LLU, - 0xD83CDF79LLU, - 0xD83CDF77LLU, - 0xD83CDF74LLU, - 0xD83CDF55LLU, +uint64 emojiCategory3[] = { + 0xD83CDF45LLU, + 0xD83CDF46LLU, + 0xD83CDF3DLLU, + 0xD83CDF60LLU, + 0xD83CDF47LLU, + 0xD83CDF48LLU, + 0xD83CDF49LLU, + 0xD83CDF4ALLU, + 0xD83CDF4BLLU, + 0xD83CDF4CLLU, + 0xD83CDF4DLLU, + 0xD83CDF4ELLU, + 0xD83CDF4FLLU, + 0xD83CDF50LLU, + 0xD83CDF51LLU, + 0xD83CDF52LLU, + 0xD83CDF53LLU, 0xD83CDF54LLU, - 0xD83CDF5FLLU, - 0xD83CDF57LLU, + 0xD83CDF55LLU, 0xD83CDF56LLU, - 0xD83CDF5DLLU, - 0xD83CDF5BLLU, - 0xD83CDF64LLU, - 0xD83CDF71LLU, - 0xD83CDF63LLU, - 0xD83CDF65LLU, - 0xD83CDF59LLU, + 0xD83CDF57LLU, 0xD83CDF58LLU, + 0xD83CDF59LLU, 0xD83CDF5ALLU, + 0xD83CDF5BLLU, 0xD83CDF5CLLU, - 0xD83CDF72LLU, - 0xD83CDF62LLU, - 0xD83CDF61LLU, - 0xD83CDF73LLU, + 0xD83CDF5DLLU, 0xD83CDF5ELLU, - 0xD83CDF69LLU, - 0xD83CDF6ELLU, + 0xD83CDF5FLLU, + 0xD83CDF61LLU, + 0xD83CDF62LLU, + 0xD83CDF63LLU, + 0xD83CDF64LLU, + 0xD83CDF65LLU, 0xD83CDF66LLU, - 0xD83CDF68LLU, 0xD83CDF67LLU, - 0xD83CDF82LLU, - 0xD83CDF70LLU, + 0xD83CDF68LLU, + 0xD83CDF69LLU, 0xD83CDF6ALLU, 0xD83CDF6BLLU, 0xD83CDF6CLLU, 0xD83CDF6DLLU, + 0xD83CDF6ELLU, 0xD83CDF6FLLU, - 0xD83CDF4ELLU, - 0xD83CDF4FLLU, - 0xD83CDF4ALLU, - 0xD83CDF4BLLU, - 0xD83CDF52LLU, - 0xD83CDF47LLU, - 0xD83CDF49LLU, - 0xD83CDF53LLU, - 0xD83CDF51LLU, - 0xD83CDF48LLU, - 0xD83CDF4CLLU, - 0xD83CDF50LLU, - 0xD83CDF4DLLU, - 0xD83CDF60LLU, - 0xD83CDF46LLU, - 0xD83CDF45LLU, - 0xD83CDF3DLLU, -}; - -uint64 emojiCategory3[] = { - 0xD83CDFE0LLU, - 0xD83CDFE1LLU, - 0xD83CDFEBLLU, - 0xD83CDFE2LLU, - 0xD83CDFE3LLU, - 0xD83CDFE5LLU, - 0xD83CDFE6LLU, - 0xD83CDFEALLU, - 0xD83CDFE9LLU, - 0xD83CDFE8LLU, - 0xD83DDC92LLU, - 0x26EALLU, - 0xD83CDFECLLU, - 0xD83CDFE4LLU, - 0xD83CDF07LLU, - 0xD83CDF06LLU, - 0xD83CDFEFLLU, - 0xD83CDFF0LLU, - 0x26FALLU, - 0xD83CDFEDLLU, - 0xD83DDDFCLLU, - 0xD83DDDFELLU, - 0xD83DDDFBLLU, - 0xD83CDF04LLU, - 0xD83CDF05LLU, - 0xD83CDF03LLU, - 0xD83DDDFDLLU, - 0xD83CDF09LLU, - 0xD83CDFA0LLU, - 0xD83CDFA1LLU, - 0x26F2LLU, - 0xD83CDFA2LLU, - 0xD83DDEA2LLU, - 0x26F5LLU, - 0xD83DDEA4LLU, - 0xD83DDEA3LLU, - 0x2693LLU, - 0xD83DDE80LLU, - 0x2708LLU, - 0xD83DDCBALLU, - 0xD83DDE81LLU, - 0xD83DDE82LLU, - 0xD83DDE8ALLU, - 0xD83DDE89LLU, - 0xD83DDE9ELLU, - 0xD83DDE86LLU, - 0xD83DDE84LLU, - 0xD83DDE85LLU, - 0xD83DDE88LLU, - 0xD83DDE87LLU, - 0xD83DDE9DLLU, - 0xD83DDE8BLLU, - 0xD83DDE83LLU, - 0xD83DDE8ELLU, - 0xD83DDE8CLLU, - 0xD83DDE8DLLU, - 0xD83DDE99LLU, - 0xD83DDE98LLU, - 0xD83DDE97LLU, - 0xD83DDE95LLU, - 0xD83DDE96LLU, - 0xD83DDE9BLLU, - 0xD83DDE9ALLU, - 0xD83DDEA8LLU, - 0xD83DDE93LLU, - 0xD83DDE94LLU, - 0xD83DDE92LLU, - 0xD83DDE91LLU, - 0xD83DDE90LLU, - 0xD83DDEB2LLU, - 0xD83DDEA1LLU, - 0xD83DDE9FLLU, - 0xD83DDEA0LLU, - 0xD83DDE9CLLU, - 0xD83DDC88LLU, - 0xD83DDE8FLLU, - 0xD83CDFABLLU, - 0xD83DDEA6LLU, - 0xD83DDEA5LLU, - 0x26A0LLU, - 0xD83DDEA7LLU, - 0xD83DDD30LLU, - 0x26FDLLU, - 0xD83CDFEELLU, - 0xD83CDFB0LLU, - 0x2668LLU, - 0xD83DDDFFLLU, - 0xD83CDFAALLU, - 0xD83CDFADLLU, - 0xD83DDCCDLLU, - 0xD83DDEA9LLU, - 0xD83CDDEFD83CDDF5LLU, - 0xD83CDDF0D83CDDF7LLU, - 0xD83CDDE9D83CDDEALLU, - 0xD83CDDE8D83CDDF3LLU, - 0xD83CDDFAD83CDDF8LLU, - 0xD83CDDEBD83CDDF7LLU, - 0xD83CDDEAD83CDDF8LLU, - 0xD83CDDEED83CDDF9LLU, - 0xD83CDDF7D83CDDFALLU, - 0xD83CDDECD83CDDE7LLU, + 0xD83CDF70LLU, + 0xD83CDF71LLU, + 0xD83CDF72LLU, + 0xD83CDF73LLU, + 0xD83CDF74LLU, + 0xD83CDF75LLU, + 0x2615LLU, + 0xD83CDF76LLU, + 0xD83CDF77LLU, + 0xD83CDF78LLU, + 0xD83CDF79LLU, + 0xD83CDF7ALLU, + 0xD83CDF7BLLU, + 0xD83CDF7CLLU, }; uint64 emojiCategory4[] = { + 0xD83CDF80LLU, + 0xD83CDF81LLU, + 0xD83CDF82LLU, + 0xD83CDF83LLU, + 0xD83CDF84LLU, + 0xD83CDF8BLLU, + 0xD83CDF8DLLU, + 0xD83CDF91LLU, + 0xD83CDF86LLU, + 0xD83CDF87LLU, + 0xD83CDF89LLU, + 0xD83CDF8ALLU, + 0xD83CDF88LLU, + 0xD83DDCABLLU, + 0x2728LLU, + 0xD83DDCA5LLU, + 0xD83CDF93LLU, + 0xD83DDC51LLU, + 0xD83CDF8ELLU, + 0xD83CDF8FLLU, + 0xD83CDF90LLU, + 0xD83CDF8CLLU, + 0xD83CDFEELLU, + 0xD83DDC8DLLU, + 0x2764LLU, + 0xD83DDC94LLU, + 0xD83DDC8CLLU, + 0xD83DDC95LLU, + 0xD83DDC9ELLU, + 0xD83DDC93LLU, + 0xD83DDC97LLU, + 0xD83DDC96LLU, + 0xD83DDC98LLU, + 0xD83DDC9DLLU, + 0xD83DDC9FLLU, + 0xD83DDC9CLLU, + 0xD83DDC9BLLU, + 0xD83DDC9ALLU, + 0xD83DDC99LLU, +}; + +uint64 emojiCategory5[] = { + 0xD83CDFC3LLU, + 0xD83DDEB6LLU, + 0xD83DDC83LLU, + 0xD83DDEA3LLU, + 0xD83CDFCALLU, + 0xD83CDFC4LLU, + 0xD83DDEC0LLU, + 0xD83CDFC2LLU, + 0xD83CDFBFLLU, + 0x26C4LLU, + 0xD83DDEB4LLU, + 0xD83DDEB5LLU, + 0xD83CDFC7LLU, + 0x26FALLU, + 0xD83CDFA3LLU, + 0x26BDLLU, + 0xD83CDFC0LLU, + 0xD83CDFC8LLU, + 0x26BELLU, + 0xD83CDFBELLU, + 0xD83CDFC9LLU, + 0x26F3LLU, + 0xD83CDFC6LLU, + 0xD83CDFBDLLU, + 0xD83CDFC1LLU, + 0xD83CDFB9LLU, + 0xD83CDFB8LLU, + 0xD83CDFBBLLU, + 0xD83CDFB7LLU, + 0xD83CDFBALLU, + 0xD83CDFB5LLU, + 0xD83CDFB6LLU, + 0xD83CDFBCLLU, + 0xD83CDFA7LLU, + 0xD83CDFA4LLU, + 0xD83CDFADLLU, + 0xD83CDFABLLU, + 0xD83CDFA9LLU, + 0xD83CDFAALLU, + 0xD83CDFACLLU, + 0xD83CDFA8LLU, + 0xD83CDFAFLLU, + 0xD83CDFB1LLU, + 0xD83CDFB3LLU, + 0xD83CDFB0LLU, + 0xD83CDFB2LLU, + 0xD83CDFAELLU, + 0xD83CDFB4LLU, + 0xD83CDCCFLLU, + 0xD83CDC04LLU, + 0xD83CDFA0LLU, + 0xD83CDFA1LLU, + 0xD83CDFA2LLU, +}; + +uint64 emojiCategory6[] = { + 0xD83DDE83LLU, + 0xD83DDE9ELLU, + 0xD83DDE82LLU, + 0xD83DDE8BLLU, + 0xD83DDE9DLLU, + 0xD83DDE84LLU, + 0xD83DDE85LLU, + 0xD83DDE86LLU, + 0xD83DDE87LLU, + 0xD83DDE88LLU, + 0xD83DDE89LLU, + 0xD83DDE8ALLU, + 0xD83DDE8CLLU, + 0xD83DDE8DLLU, + 0xD83DDE8ELLU, + 0xD83DDE90LLU, + 0xD83DDE91LLU, + 0xD83DDE92LLU, + 0xD83DDE93LLU, + 0xD83DDE94LLU, + 0xD83DDEA8LLU, + 0xD83DDE95LLU, + 0xD83DDE96LLU, + 0xD83DDE97LLU, + 0xD83DDE98LLU, + 0xD83DDE99LLU, + 0xD83DDE9ALLU, + 0xD83DDE9BLLU, + 0xD83DDE9CLLU, + 0xD83DDEB2LLU, + 0xD83DDE8FLLU, + 0x26FDLLU, + 0xD83DDEA7LLU, + 0xD83DDEA6LLU, + 0xD83DDEA5LLU, + 0xD83DDE80LLU, + 0xD83DDE81LLU, + 0x2708LLU, + 0xD83DDCBALLU, + 0x2693LLU, + 0xD83DDEA2LLU, + 0xD83DDEA4LLU, + 0x26F5LLU, + 0xD83DDEA1LLU, + 0xD83DDEA0LLU, + 0xD83DDE9FLLU, + 0xD83DDEC2LLU, + 0xD83DDEC3LLU, + 0xD83DDEC4LLU, + 0xD83DDEC5LLU, + 0xD83DDCB4LLU, + 0xD83DDCB6LLU, + 0xD83DDCB7LLU, + 0xD83DDCB5LLU, + 0xD83DDDFDLLU, + 0xD83DDDFFLLU, + 0xD83CDF01LLU, + 0xD83DDDFCLLU, + 0x26F2LLU, + 0xD83CDFF0LLU, + 0xD83CDFEFLLU, + 0xD83CDF07LLU, + 0xD83CDF06LLU, + 0xD83CDF03LLU, + 0xD83CDF09LLU, + 0xD83CDFE0LLU, + 0xD83CDFE1LLU, + 0xD83CDFE2LLU, + 0xD83CDFECLLU, + 0xD83CDFEDLLU, + 0xD83CDFE3LLU, + 0xD83CDFE4LLU, + 0xD83CDFE5LLU, + 0xD83CDFE6LLU, + 0xD83CDFE8LLU, + 0xD83CDFE9LLU, + 0xD83DDC92LLU, + 0x26EALLU, + 0xD83CDFEALLU, + 0xD83CDFEBLLU, + 0xD83CDDE6D83CDDFALLU, + 0xD83CDDE6D83CDDF9LLU, + 0xD83CDDE7D83CDDEALLU, + 0xD83CDDE7D83CDDF7LLU, + 0xD83CDDE8D83CDDE6LLU, + 0xD83CDDE8D83CDDF1LLU, + 0xD83CDDE8D83CDDF3LLU, + 0xD83CDDE8D83CDDF4LLU, + 0xD83CDDE9D83CDDF0LLU, + 0xD83CDDEBD83CDDEELLU, + 0xD83CDDEBD83CDDF7LLU, + 0xD83CDDE9D83CDDEALLU, + 0xD83CDDEDD83CDDF0LLU, + 0xD83CDDEED83CDDF3LLU, + 0xD83CDDEED83CDDE9LLU, + 0xD83CDDEED83CDDEALLU, + 0xD83CDDEED83CDDF1LLU, + 0xD83CDDEED83CDDF9LLU, + 0xD83CDDEFD83CDDF5LLU, + 0xD83CDDF0D83CDDF7LLU, + 0xD83CDDF2D83CDDF4LLU, + 0xD83CDDF2D83CDDFELLU, + 0xD83CDDF2D83CDDFDLLU, + 0xD83CDDF3D83CDDF1LLU, + 0xD83CDDF3D83CDDFFLLU, + 0xD83CDDF3D83CDDF4LLU, + 0xD83CDDF5D83CDDEDLLU, + 0xD83CDDF5D83CDDF1LLU, + 0xD83CDDF5D83CDDF9LLU, + 0xD83CDDF5D83CDDF7LLU, + 0xD83CDDF7D83CDDFALLU, + 0xD83CDDF8D83CDDE6LLU, + 0xD83CDDF8D83CDDECLLU, + 0xD83CDDFFD83CDDE6LLU, + 0xD83CDDEAD83CDDF8LLU, + 0xD83CDDF8D83CDDEALLU, + 0xD83CDDE8D83CDDEDLLU, + 0xD83CDDF9D83CDDF7LLU, + 0xD83CDDECD83CDDE7LLU, + 0xD83CDDFAD83CDDF8LLU, + 0xD83CDDE6D83CDDEALLU, + 0xD83CDDFBD83CDDF3LLU, +}; + +uint64 emojiCategory7[] = { + 0x231ALLU, + 0xD83DDCF1LLU, + 0xD83DDCF2LLU, + 0xD83DDCBBLLU, + 0x23F0LLU, + 0x23F3LLU, + 0x231BLLU, + 0xD83DDCF7LLU, + 0xD83DDCF9LLU, + 0xD83CDFA5LLU, + 0xD83DDCFALLU, + 0xD83DDCFBLLU, + 0xD83DDCDFLLU, + 0xD83DDCDELLU, + 0x260ELLU, + 0xD83DDCE0LLU, + 0xD83DDCBDLLU, + 0xD83DDCBELLU, + 0xD83DDCBFLLU, + 0xD83DDCC0LLU, + 0xD83DDCFCLLU, + 0xD83DDD0BLLU, + 0xD83DDD0CLLU, + 0xD83DDCA1LLU, + 0xD83DDD26LLU, + 0xD83DDCE1LLU, + 0xD83DDCB3LLU, + 0xD83DDCB8LLU, + 0xD83DDCB0LLU, + 0xD83DDC8ELLU, + 0xD83CDF02LLU, + 0xD83DDC5DLLU, + 0xD83DDC5BLLU, + 0xD83DDC5CLLU, + 0xD83DDCBCLLU, + 0xD83CDF92LLU, + 0xD83DDC84LLU, + 0xD83DDC53LLU, + 0xD83DDC52LLU, + 0xD83DDC61LLU, + 0xD83DDC60LLU, + 0xD83DDC62LLU, + 0xD83DDC5ELLU, + 0xD83DDC5FLLU, + 0xD83DDC59LLU, + 0xD83DDC57LLU, + 0xD83DDC58LLU, + 0xD83DDC5ALLU, + 0xD83DDC55LLU, + 0xD83DDC54LLU, + 0xD83DDC56LLU, + 0xD83DDEAALLU, + 0xD83DDEBFLLU, + 0xD83DDEC1LLU, + 0xD83DDEBDLLU, + 0xD83DDC88LLU, + 0xD83DDC89LLU, + 0xD83DDC8ALLU, + 0xD83DDD2CLLU, + 0xD83DDD2DLLU, + 0xD83DDD2ELLU, + 0xD83DDD27LLU, + 0xD83DDD2ALLU, + 0xD83DDD29LLU, + 0xD83DDD28LLU, + 0xD83DDCA3LLU, + 0xD83DDEACLLU, + 0xD83DDD2BLLU, + 0xD83DDD16LLU, + 0xD83DDCF0LLU, + 0xD83DDD11LLU, + 0x2709LLU, + 0xD83DDCE9LLU, + 0xD83DDCE8LLU, + 0xD83DDCE7LLU, + 0xD83DDCE5LLU, + 0xD83DDCE4LLU, + 0xD83DDCE6LLU, + 0xD83DDCEFLLU, + 0xD83DDCEELLU, + 0xD83DDCEALLU, + 0xD83DDCEBLLU, + 0xD83DDCECLLU, + 0xD83DDCEDLLU, + 0xD83DDCC4LLU, + 0xD83DDCC3LLU, + 0xD83DDCD1LLU, + 0xD83DDCC8LLU, + 0xD83DDCC9LLU, + 0xD83DDCCALLU, + 0xD83DDCC5LLU, + 0xD83DDCC6LLU, + 0xD83DDD05LLU, + 0xD83DDD06LLU, + 0xD83DDCDCLLU, + 0xD83DDCCBLLU, + 0xD83DDCD6LLU, + 0xD83DDCD3LLU, + 0xD83DDCD4LLU, + 0xD83DDCD2LLU, + 0xD83DDCD5LLU, + 0xD83DDCD7LLU, + 0xD83DDCD8LLU, + 0xD83DDCD9LLU, + 0xD83DDCDALLU, + 0xD83DDCC7LLU, + 0xD83DDD17LLU, + 0xD83DDCCELLU, + 0xD83DDCCCLLU, + 0x2702LLU, + 0xD83DDCD0LLU, + 0xD83DDCCDLLU, + 0xD83DDCCFLLU, + 0xD83DDEA9LLU, + 0xD83DDCC1LLU, + 0xD83DDCC2LLU, + 0x2712LLU, + 0x270FLLU, + 0xD83DDCDDLLU, + 0xD83DDD0FLLU, + 0xD83DDD10LLU, + 0xD83DDD12LLU, + 0xD83DDD13LLU, + 0xD83DDCE3LLU, + 0xD83DDCE2LLU, + 0xD83DDD08LLU, + 0xD83DDD09LLU, + 0xD83DDD0ALLU, + 0xD83DDD07LLU, + 0xD83DDCA4LLU, + 0xD83DDD14LLU, + 0xD83DDD15LLU, + 0xD83DDCADLLU, + 0xD83DDCACLLU, + 0xD83DDEB8LLU, + 0xD83DDD0DLLU, + 0xD83DDD0ELLU, + 0xD83DDEABLLU, + 0x26D4LLU, + 0xD83DDCDBLLU, + 0xD83DDEB7LLU, + 0xD83DDEAFLLU, + 0xD83DDEB3LLU, + 0xD83DDEB1LLU, + 0xD83DDCF5LLU, + 0xD83DDD1ELLU, + 0xD83CDE51LLU, + 0xD83CDE50LLU, + 0xD83DDCAELLU, + 0x3299LLU, + 0x3297LLU, + 0xD83CDE34LLU, + 0xD83CDE35LLU, + 0xD83CDE32LLU, + 0xD83CDE36LLU, + 0xD83CDE1ALLU, + 0xD83CDE38LLU, + 0xD83CDE3ALLU, + 0xD83CDE37LLU, + 0xD83CDE39LLU, + 0xD83CDE33LLU, + 0xD83CDE02LLU, + 0xD83CDE01LLU, + 0xD83CDE2FLLU, + 0xD83DDCB9LLU, + 0x2747LLU, + 0x2733LLU, + 0x274ELLU, + 0x2705LLU, + 0x2734LLU, + 0xD83DDCF3LLU, + 0xD83DDCF4LLU, + 0xD83CDD9ALLU, + 0xD83CDD70LLU, + 0xD83CDD71LLU, + 0xD83CDD8ELLU, + 0xD83CDD91LLU, + 0xD83CDD7ELLU, + 0xD83CDD98LLU, + 0xD83CDD94LLU, + 0xD83CDD7FLLU, + 0xD83DDEBELLU, + 0xD83CDD92LLU, + 0xD83CDD93LLU, + 0xD83CDD95LLU, + 0xD83CDD96LLU, + 0xD83CDD97LLU, + 0xD83CDD99LLU, + 0xD83CDFE7LLU, + 0x2648LLU, + 0x2649LLU, + 0x264ALLU, + 0x264BLLU, + 0x264CLLU, + 0x264DLLU, + 0x264ELLU, + 0x264FLLU, + 0x2650LLU, + 0x2651LLU, + 0x2652LLU, + 0x2653LLU, + 0xD83DDEBBLLU, + 0xD83DDEB9LLU, + 0xD83DDEBALLU, + 0xD83DDEBCLLU, + 0x267FLLU, + 0xD83DDEB0LLU, + 0xD83DDEADLLU, + 0xD83DDEAELLU, + 0x25B6LLU, + 0x25C0LLU, + 0xD83DDD3CLLU, + 0xD83DDD3DLLU, + 0x23E9LLU, + 0x23EALLU, + 0x23EBLLU, + 0x23ECLLU, + 0x27A1LLU, + 0x2B05LLU, + 0x2B06LLU, + 0x2B07LLU, + 0x2197LLU, + 0x2198LLU, + 0x2199LLU, + 0x2196LLU, + 0x2195LLU, + 0x2194LLU, + 0xD83DDD04LLU, + 0x21AALLU, + 0x21A9LLU, + 0x2934LLU, + 0x2935LLU, + 0xD83DDD00LLU, + 0xD83DDD01LLU, + 0xD83DDD02LLU, + 0x2320E3LLU, + 0x3020E3LLU, 0x3120E3LLU, 0x3220E3LLU, 0x3320E3LLU, @@ -758,239 +1016,154 @@ uint64 emojiCategory4[] = { 0x3720E3LLU, 0x3820E3LLU, 0x3920E3LLU, - 0x3020E3LLU, 0xD83DDD1FLLU, 0xD83DDD22LLU, - 0x2320E3LLU, - 0xD83DDD23LLU, - 0x2B06LLU, - 0x2B07LLU, - 0x2B05LLU, - 0x27A1LLU, - 0xD83DDD20LLU, - 0xD83DDD21LLU, 0xD83DDD24LLU, - 0x2197LLU, - 0x2196LLU, - 0x2198LLU, - 0x2199LLU, - 0x2194LLU, - 0x2195LLU, - 0xD83DDD04LLU, - 0x25C0LLU, - 0x25B6LLU, - 0xD83DDD3CLLU, - 0xD83DDD3DLLU, - 0x21A9LLU, - 0x21AALLU, + 0xD83DDD21LLU, + 0xD83DDD20LLU, 0x2139LLU, - 0x23EALLU, - 0x23E9LLU, - 0x23EBLLU, - 0x23ECLLU, - 0x2935LLU, - 0x2934LLU, - 0xD83CDD97LLU, - 0xD83DDD00LLU, - 0xD83DDD01LLU, - 0xD83DDD02LLU, - 0xD83CDD95LLU, - 0xD83CDD99LLU, - 0xD83CDD92LLU, - 0xD83CDD93LLU, - 0xD83CDD96LLU, 0xD83DDCF6LLU, 0xD83CDFA6LLU, - 0xD83CDE01LLU, - 0xD83CDE2FLLU, - 0xD83CDE33LLU, - 0xD83CDE35LLU, - 0xD83CDE34LLU, - 0xD83CDE32LLU, - 0xD83CDE50LLU, - 0xD83CDE39LLU, - 0xD83CDE3ALLU, - 0xD83CDE36LLU, - 0xD83CDE1ALLU, - 0xD83DDEBBLLU, - 0xD83DDEB9LLU, - 0xD83DDEBALLU, - 0xD83DDEBCLLU, - 0xD83DDEBELLU, - 0xD83DDEB0LLU, - 0xD83DDEAELLU, - 0xD83CDD7FLLU, - 0x267FLLU, - 0xD83DDEADLLU, - 0xD83CDE37LLU, - 0xD83CDE38LLU, - 0xD83CDE02LLU, - 0x24C2LLU, - 0xD83DDEC2LLU, - 0xD83DDEC4LLU, - 0xD83DDEC5LLU, - 0xD83DDEC3LLU, - 0xD83CDE51LLU, - 0x3299LLU, - 0x3297LLU, - 0xD83CDD91LLU, - 0xD83CDD98LLU, - 0xD83CDD94LLU, - 0xD83DDEABLLU, - 0xD83DDD1ELLU, - 0xD83DDCF5LLU, - 0xD83DDEAFLLU, - 0xD83DDEB1LLU, - 0xD83DDEB3LLU, - 0xD83DDEB7LLU, - 0xD83DDEB8LLU, - 0x26D4LLU, - 0x2733LLU, - 0x2747LLU, - 0x274ELLU, - 0x2705LLU, - 0x2734LLU, - 0xD83DDC9FLLU, - 0xD83CDD9ALLU, - 0xD83DDCF3LLU, - 0xD83DDCF4LLU, - 0xD83CDD70LLU, - 0xD83CDD71LLU, - 0xD83CDD8ELLU, - 0xD83CDD7ELLU, - 0xD83DDCA0LLU, - 0x27BFLLU, - 0x267BLLU, - 0x2648LLU, - 0x2649LLU, - 0x264ALLU, - 0x264BLLU, - 0x264CLLU, - 0x264DLLU, - 0x264ELLU, - 0x264FLLU, - 0x2650LLU, - 0x2651LLU, - 0x2652LLU, - 0x2653LLU, - 0x26CELLU, - 0xD83DDD2FLLU, - 0xD83CDFE7LLU, - 0xD83DDCB9LLU, - 0xD83DDCB2LLU, - 0xD83DDCB1LLU, + 0xD83DDD23LLU, + 0x2795LLU, + 0x2796LLU, + 0x3030LLU, + 0x2797LLU, + 0x2716LLU, + 0x2714LLU, + 0xD83DDD03LLU, + 0x2122LLU, 0xA9LLU, 0xAELLU, - 0x2122LLU, - 0x274CLLU, - 0x203CLLU, - 0x2049LLU, + 0xD83DDCB1LLU, + 0xD83DDCB2LLU, + 0x27B0LLU, + 0x27BFLLU, + 0x303DLLU, 0x2757LLU, 0x2753LLU, 0x2755LLU, 0x2754LLU, + 0x203CLLU, + 0x2049LLU, + 0x274CLLU, 0x2B55LLU, - 0xD83DDD1DLLU, + 0xD83DDCAFLLU, 0xD83DDD1ALLU, 0xD83DDD19LLU, 0xD83DDD1BLLU, + 0xD83DDD1DLLU, 0xD83DDD1CLLU, - 0xD83DDD03LLU, - 0xD83DDD5BLLU, - 0xD83DDD67LLU, + 0xD83CDF00LLU, + 0x24C2LLU, + 0x26CELLU, + 0xD83DDD2FLLU, + 0xD83DDD30LLU, + 0xD83DDD31LLU, + 0x26A0LLU, + 0x2668LLU, + 0x267BLLU, + 0xD83DDCA2LLU, + 0xD83DDCA0LLU, + 0x2660LLU, + 0x2663LLU, + 0x2665LLU, + 0x2666LLU, + 0x2611LLU, + 0x26AALLU, + 0x26ABLLU, + 0xD83DDD18LLU, + 0xD83DDD34LLU, + 0xD83DDD35LLU, + 0xD83DDD3ALLU, + 0xD83DDD3BLLU, + 0xD83DDD38LLU, + 0xD83DDD39LLU, + 0xD83DDD36LLU, + 0xD83DDD37LLU, + 0x25AALLU, + 0x25ABLLU, + 0x2B1BLLU, + 0x2B1CLLU, + 0x25FCLLU, + 0x25FBLLU, + 0x25FELLU, + 0x25FDLLU, + 0xD83DDD32LLU, + 0xD83DDD33LLU, 0xD83DDD50LLU, - 0xD83DDD5CLLU, 0xD83DDD51LLU, - 0xD83DDD5DLLU, 0xD83DDD52LLU, - 0xD83DDD5ELLU, 0xD83DDD53LLU, - 0xD83DDD5FLLU, 0xD83DDD54LLU, - 0xD83DDD60LLU, 0xD83DDD55LLU, 0xD83DDD56LLU, 0xD83DDD57LLU, 0xD83DDD58LLU, 0xD83DDD59LLU, 0xD83DDD5ALLU, + 0xD83DDD5BLLU, + 0xD83DDD5CLLU, + 0xD83DDD5DLLU, + 0xD83DDD5ELLU, + 0xD83DDD5FLLU, + 0xD83DDD60LLU, 0xD83DDD61LLU, 0xD83DDD62LLU, 0xD83DDD63LLU, 0xD83DDD64LLU, 0xD83DDD65LLU, 0xD83DDD66LLU, - 0x2716LLU, - 0x2795LLU, - 0x2796LLU, - 0x2797LLU, - 0x2660LLU, - 0x2665LLU, - 0x2663LLU, - 0x2666LLU, - 0xD83DDCAELLU, - 0xD83DDCAFLLU, - 0x2714LLU, - 0x2611LLU, - 0xD83DDD18LLU, - 0xD83DDD17LLU, - 0x27B0LLU, - 0x3030LLU, - 0x303DLLU, - 0xD83DDD31LLU, - 0x25FCLLU, - 0x25FBLLU, - 0x25FELLU, - 0x25FDLLU, - 0x25AALLU, - 0x25ABLLU, - 0xD83DDD3ALLU, - 0xD83DDD32LLU, - 0xD83DDD33LLU, - 0x26ABLLU, - 0x26AALLU, - 0xD83DDD34LLU, - 0xD83DDD35LLU, - 0xD83DDD3BLLU, - 0x2B1CLLU, - 0x2B1BLLU, - 0xD83DDD36LLU, - 0xD83DDD37LLU, - 0xD83DDD38LLU, - 0xD83DDD39LLU, + 0xD83DDD67LLU, }; uint64 emojiPostfixed[] = { - 0x203CLLU, - 0x2049LLU, - 0x2139LLU, - 0x2194LLU, - 0x2195LLU, - 0x2196LLU, - 0x2197LLU, - 0x2198LLU, - 0x2199LLU, - 0x21A9LLU, - 0x21AALLU, - 0x231ALLU, - 0x231BLLU, - 0x24C2LLU, - 0x25AALLU, - 0x25ABLLU, - 0x25B6LLU, - 0x25C0LLU, - 0x25FBLLU, - 0x25FCLLU, - 0x25FDLLU, - 0x25FELLU, - 0x2600LLU, - 0x2601LLU, - 0x260ELLU, - 0x2611LLU, - 0x2614LLU, - 0x2615LLU, + 0x263ALLU, // category 1 0x261DLLU, - 0x263ALLU, + 0x270CLLU, + + 0x26A1LLU, // category 2 + 0x2600LLU, + 0x26C5LLU, + 0x2601LLU, + 0x2614LLU, + 0x2744LLU, + 0x2B50LLU, + + 0x2615LLU, // category 3 + + 0x2764LLU, // category 4 + + 0x26C4LLU, // category 5 + 0x26FALLU, + 0x26BDLLU, + 0x26BELLU, + 0x26F3LLU, + 0xD83CDC04LLU, + + 0x26FDLLU, // category 6 + 0x2708LLU, + 0x2693LLU, + 0x26F5LLU, + 0x26F2LLU, + 0x26EALLU, + + 0x231ALLU, // category 7 + 0x231BLLU, + 0x260ELLU, + 0x2709LLU, + 0x2702LLU, + 0x2712LLU, + 0x270FLLU, + 0x26D4LLU, + 0x3299LLU, + 0x3297LLU, + 0xD83CDE1ALLU, + 0xD83CDE2FLLU, + 0x2747LLU, + 0x2733LLU, + 0x2734LLU, + 0xD83CDD7FLLU, 0x2648LLU, 0x2649LLU, 0x264ALLU, @@ -1003,62 +1176,52 @@ uint64 emojiPostfixed[] = { 0x2651LLU, 0x2652LLU, 0x2653LLU, + 0x267FLLU, + 0x25B6LLU, + 0x25C0LLU, + 0x27A1LLU, + 0x2B05LLU, + 0x2B06LLU, + 0x2B07LLU, + 0x2197LLU, + 0x2198LLU, + 0x2199LLU, + 0x2196LLU, + 0x2195LLU, + 0x2194LLU, + 0x21AALLU, + 0x21A9LLU, + 0x2934LLU, + 0x2935LLU, + 0x2139LLU, + 0x2716LLU, + 0x2714LLU, + 0x303DLLU, + 0x2757LLU, + 0x203CLLU, + 0x2049LLU, + 0x2B55LLU, + 0x24C2LLU, + 0x26A0LLU, + 0x2668LLU, + 0x267BLLU, 0x2660LLU, 0x2663LLU, 0x2665LLU, 0x2666LLU, - 0x2668LLU, - 0x267BLLU, - 0x267FLLU, - 0x2693LLU, - 0x26A0LLU, - 0x26A1LLU, + 0x2611LLU, 0x26AALLU, 0x26ABLLU, - 0x26BDLLU, - 0x26BELLU, - 0x26C4LLU, - 0x26C5LLU, - 0x26D4LLU, - 0x26EALLU, - 0x26F2LLU, - 0x26F3LLU, - 0x26F5LLU, - 0x26FALLU, - 0x26FDLLU, - 0x2702LLU, - 0x2708LLU, - 0x2709LLU, - 0x270CLLU, - 0x270FLLU, - 0x2712LLU, - 0x2714LLU, - 0x2716LLU, - 0x2733LLU, - 0x2734LLU, - 0x2744LLU, - 0x2747LLU, - 0x2757LLU, - 0x2764LLU, - 0x27A1LLU, - 0x2934LLU, - 0x2935LLU, - 0x2B05LLU, - 0x2B06LLU, - 0x2B07LLU, - 0x2B50LLU, - 0x2B55LLU, + 0x25AALLU, + 0x25ABLLU, 0x2B1BLLU, 0x2B1CLLU, - 0x303DLLU, - 0x3297LLU, - 0x3299LLU, - 0xD83CDC04LLU, - 0xD83CDD7FLLU, - 0xD83CDE1ALLU, - 0xD83CDE2FLLU, + 0x25FCLLU, + 0x25FBLLU, + 0x25FELLU, + 0x25FDLLU, }; -QMap emojiWithPostfixes; +QMap emojiWithPostfixes, emojiWithColors; uint32 firstCode(uint64 fullCode) { return (fullCode > 0xFFFFFFFFLLU) ? uint32(fullCode >> 32) : (fullCode & 0xFFFFFFFFU); @@ -1076,7 +1239,7 @@ void writeEmojiCategory(QTextStream &tcpp, uint64 *emojiCategory, uint32 size, c for (uint32 i = 0; i < size; ++i) { int index = 0; for (EmojisData::const_iterator j = emojisData.cbegin(), e = emojisData.cend(); j != e; ++j) { - if (j->code == firstCode(emojiCategory[i])) { + if (emojiCategory[i] == (j->code2 ? ((uint64(j->code) << 32) | j->code2) : j->code)) { break; } ++index; @@ -1091,37 +1254,57 @@ void writeEmojiCategory(QTextStream &tcpp, uint64 *emojiCategory, uint32 size, c tcpp << "\t} break;\n\n"; } -bool genEmoji(QString emoji_in, const QString &emoji_out, const QString &emoji_png) { +QString textEmojiString(const EmojiData *emoji) { + QString result; + if ((emoji->code & 0xFFFF0000U) == 0xFFFF0000U) { // sequence + return QString::fromUtf8(emojiSequences[(emoji->code & 0xFFFF)]); + } + int len = emoji->code2 ? 4 : ((emoji->code >> 16) ? 2 : 1); + bool withPostfix = emojiWithPostfixes.constFind(emoji->code) != emojiWithPostfixes.constEnd(); + result.reserve(len + (withPostfix ? 1 : 0)); + switch (len) { + case 1: result.append(QChar(emoji->code & 0xFFFF)); break; + case 2: + result.append(QChar((emoji->code >> 16) & 0xFFFF)); + result.append(QChar(emoji->code & 0xFFFF)); + break; + case 4: + result.append(QChar((emoji->code >> 16) & 0xFFFF)); + result.append(QChar(emoji->code & 0xFFFF)); + result.append(QChar((emoji->code2 >> 16) & 0xFFFF)); + result.append(QChar(emoji->code2 & 0xFFFF)); + break; + } + if (withPostfix) result.append(QChar(0xFE0F)); + if (emoji->color && ((emoji->color & 0xFFFF0000U) != 0xFFFF0000U)) { + result.append(QChar((emoji->color >> 16) & 0xFFFF)); + result.append(QChar(emoji->color & 0xFFFF)); + } + return result; +} + +bool genEmoji(QString, const QString &emoji_out, const QString &emoji_png) { int currentRow = 0, currentColumn = 0; uint32 min1 = 0xFFFFFFFFU, max1 = 0, min2 = 0xFFFFFFFFU, max2 = 0; - QImage sprites[5]; - int emojisInRow[] = { 27, 29, 33, 34, 34 }; // [[7,27],[4,29],[7,33],[3,34],[6,34]] - int emojisInColumn[] = { 7, 4, 7, 3, 7 }; - int sizes[5]; - for (int i = 0; i < 5; ++i) { - QString name = QString("%1%2.png").arg(emoji_in).arg(i); - sprites[i] = QImage(name); - int w = sprites[i].width(), h = sprites[i].height(), size = w / emojisInRow[i]; - if (w % emojisInRow[i]) { - cout << "Bad emoji sprite " << i << " width: " << w << "\n"; - QCoreApplication::exit(1); - return false; - } else if (h != size * emojisInColumn[i]) { - cout << "Bad emoji sprite " << i << " height: " << h << "\n"; - QCoreApplication::exit(1); - return false; - } - sizes[i] = size; + for (int i = 0, l = sizeof(emojiPostfixed) / sizeof(emojiPostfixed[0]); i < l; ++i) { + emojiWithPostfixes.insert(emojiPostfixed[i], true); + } + for (int i = 0, l = sizeof(emojiColored) / sizeof(emojiColored[0]); i < l; ++i) { + emojiWithColors.insert(emojiColored[i], true); + } + for (int i = 1; i < 8; ++i) { uint64 *k; int cnt = 0; switch (i) { - case 0: k = emojiCategory0; cnt = sizeof(emojiCategory0) / sizeof(emojiCategory0[0]); break; case 1: k = emojiCategory1; cnt = sizeof(emojiCategory1) / sizeof(emojiCategory1[0]); break; case 2: k = emojiCategory2; cnt = sizeof(emojiCategory2) / sizeof(emojiCategory2[0]); break; case 3: k = emojiCategory3; cnt = sizeof(emojiCategory3) / sizeof(emojiCategory3[0]); break; case 4: k = emojiCategory4; cnt = sizeof(emojiCategory4) / sizeof(emojiCategory4[0]); break; + case 5: k = emojiCategory5; cnt = sizeof(emojiCategory5) / sizeof(emojiCategory5[0]); break; + case 6: k = emojiCategory6; cnt = sizeof(emojiCategory6) / sizeof(emojiCategory6[0]); break; + case 7: k = emojiCategory7; cnt = sizeof(emojiCategory7) / sizeof(emojiCategory7[0]); break; } for (int j = 0; j < cnt; ++j) { EmojiData data; @@ -1132,14 +1315,18 @@ bool genEmoji(QString emoji_in, const QString &emoji_out, const QString &emoji_p data.index = j; data.x = currentColumn; data.y = currentRow; - ++currentColumn; + data.color = 0; + ++currentColumn; if (currentColumn == inRow) { ++currentRow; currentColumn = 0; } + uint32 high = data.code >> 16; - if (!high) { // small codes + if (high == 0xFFFF) { // sequences + + } else if (!high) { // small codes if (data.code == 169 || data.code == 174) { // two small } else { if (data.code < min1) min1 = data.code; @@ -1150,12 +1337,39 @@ bool genEmoji(QString emoji_in, const QString &emoji_out, const QString &emoji_p if (data.code < min2) min2 = data.code; if (data.code > max2) max2 = data.code; } - EmojisData::const_iterator k = emojisData.constFind(data.code); - if (k != emojisData.cend()) { - cout << QString("Bad emoji code (duplicate) %1 %2 and %3 %4").arg(data.code).arg(data.code2).arg(k->code).arg(k->code2).toUtf8().constData() << "\n"; + EmojisData::const_iterator key = emojisData.constFind(fullCode); + if (key != emojisData.cend()) { + cout << QString("Bad emoji code (duplicate) %1 %2 and %3 %4").arg(data.code).arg(data.code2).arg(key->code).arg(key->code2).toUtf8().constData() << "\n"; continue; } - emojisData.insert(data.code, data); + emojisData.insert(fullCode, data); + if (emojiWithColors.constFind(fullCode) != emojiWithColors.cend()) { + if (fullCode > 0xFFFFFFFFLLU) { + cout << QString("Bad colored emoji: %1 %2").arg(data.code).arg(data.code2).toUtf8().constData() << "\n"; + continue; + } + for (uint32 l = 0; l < sizeof(emojiColors) / sizeof(emojiColors[0]); ++l) { + uint32 color = emojiColors[l]; + EmojiData colored = data; + colored.x = currentColumn; + colored.y = currentRow; + colored.color = color; + + ++currentColumn; + if (currentColumn == inRow) { + ++currentRow; + currentColumn = 0; + } + + fullCode = (uint64(k[j]) << 32) | uint64(color); + EmojisData::const_iterator key = emojisData.constFind(fullCode); + if (key != emojisData.cend()) { + cout << QString("Bad emoji code (duplicate) %1 %2 and %3 %4").arg(data.code).arg(data.code2).arg(key->code).arg(key->code2).toUtf8().constData() << "\n"; + continue; + } + emojisData.insert(fullCode, colored); + } + } } } @@ -1165,24 +1379,91 @@ bool genEmoji(QString emoji_in, const QString &emoji_out, const QString &emoji_p return true; } + QStringList str = QFontDatabase::applicationFontFamilies(QFontDatabase::addApplicationFont(QStringLiteral("/System/Library/Fonts/Apple Color Emoji.ttf"))); + for (int variantIndex = 0; variantIndex < variantsCount; variantIndex++) { int imSize = imSizes[variantIndex]; - QImage emojisImg(inRow * imSize, currentRow * imSize, QImage::Format_ARGB32); - QPainter p(&emojisImg); - p.setCompositionMode(QPainter::CompositionMode_Source); - p.fillRect(0, 0, emojisImg.width(), emojisImg.height(), Qt::transparent); - for (EmojisData::const_iterator i = emojisData.cbegin(), e = emojisData.cend(); i != e; ++i) { - int ind = i->index, row = ind / emojisInRow[i->category], col = ind % emojisInRow[i->category], size = sizes[i->category]; - QPixmap emoji = QPixmap::fromImage(sprites[i->category].copy(col * size, row * size, size, size).scaled(imSize, imSize, Qt::IgnoreAspectRatio, Qt::SmoothTransformation), Qt::ColorOnly); - p.drawPixmap(i->x * imSize, i->y * imSize, emoji); + QFont f(QGuiApplication::font()); + f.setFamily(QStringLiteral("Apple Color Emoji")); + f.setPixelSize(emojiFontSizes[variantIndex]); + + int s = 4 + imSize; + QImage emojisImg(inRow * imSize, currentRow * imSize, QImage::Format_ARGB32), emojiImg(s, s, QImage::Format_ARGB32); + { + QPainter p(&emojisImg); + QPainter::CompositionMode m = p.compositionMode(); + p.setCompositionMode(QPainter::CompositionMode_Source); + p.fillRect(0, 0, emojisImg.width(), emojisImg.height(), Qt::transparent); + p.setCompositionMode(m); + p.setRenderHint(QPainter::SmoothPixmapTransform); + for (EmojisData::const_iterator it = emojisData.cbegin(), e = emojisData.cend(); it != e; ++it) { + QRect drawFrom(2, 2, imSize, imSize); + { + QPainter q(&emojiImg); + q.setPen(QColor(0, 0, 0, 255)); + q.setFont(f); + QPainter::CompositionMode m = q.compositionMode(); + q.setCompositionMode(QPainter::CompositionMode_Source); + q.fillRect(0, 0, emojiImg.width(), emojiImg.height(), Qt::transparent); + q.setCompositionMode(m); + q.drawText(2, 2 + emojiDeltas[variantIndex], textEmojiString(&it.value())); + } + int top = 1, bottom = 1, left = 1, right = 1; + QRgb *b = (QRgb*)emojiImg.bits(); + for (int i = 0; i < s; ++i) { + if (b[i] > 0 || b[(s - 1) * s + i] > 0 || b[i * s] > 0 || b[i * s + (s - 1)] > 0) { + cout << "Bad border!\n"; + return false; + } + if (b[1 * s + i] > 0) top = -1; + else if (top > 0 && b[2 * s + i] > 0) top = 0; + if (b[(s - 2) * s + i] > 0) bottom = -1; + else if (bottom > 0 && b[(s - 3) * s + i] > 0) bottom = 0; + if (b[i * s + 1] > 0) left = -1; + else if (left > 0 && b[i * s + 2] > 0) left = 0; + if (b[i * s + (s - 2)] > 0) right = -1; + else if (right > 0 && b[i * s + (s - 3)] > 0) right = 0; + } + if (top < 0) { + if (bottom <= 0) { + cout << "Bad vertical :(\n"; + return false; + } else { + drawFrom.setY(drawFrom.y() + 1); + } + } else if (bottom < 0) { + if (top <= 0) { + cout << "Bad vertical :(\n"; + return false; + } else { + drawFrom.setY(drawFrom.y() - 1); + } + } + if (left < 0) { + if (right <= 0) { + cout << "Bad horizontal :(\n"; + return false; + } else { + drawFrom.setX(drawFrom.x() + 1); + } + } else if (right < 0) { + if (left <= 0) { + cout << "Bad horizontal :(\n"; + return false; + } else { + drawFrom.setX(drawFrom.x() - 1); + } + } + p.drawImage(QRect(it->x * imSize, it->y * imSize, imSize, imSize), emojiImg, drawFrom); + } } - QString postfix = variantPostfix[variantIndex], emojif = emoji_png + postfix + ".png"; + QString postfix = variantPostfix[variantIndex], emojif = emoji_png + postfix + ".webp"; QByteArray emojib; { QBuffer ebuf(&emojib); - if (!emojisImg.save(&ebuf, "PNG")) { - cout << "Could not save 'emoji" << postfix.toUtf8().constData() << ".png'!\n"; + if (!emojisImg.save(&ebuf, "WEBP", (variantIndex < 3) ? 100 : 99)) { + cout << "Could not save 'emoji" << postfix.toUtf8().constData() << ".webp'!\n"; return false; } } @@ -1212,10 +1493,6 @@ bool genEmoji(QString emoji_in, const QString &emoji_out, const QString &emoji_p } } - for (int i = 0, l = sizeof(emojiPostfixed) / sizeof(emojiPostfixed[0]); i < l; ++i) { - emojiWithPostfixes.insert(emojiPostfixed[i], true); - } - try { QByteArray cppText; @@ -1249,38 +1526,78 @@ Copyright (c) 2014 John Preston, https://desktop.telegram.org\n\ tcpp << "\tEmojiData *emojis = 0;\n"; tcpp << "\tchar emojisData[sizeof(EmojiData) * " << emojisData.size() << "];\n"; tcpp << "}\n\n"; + tcpp << "int EmojiSizes[] = { "; + for (int variantIndex = 0; variantIndex < variantsCount; ++variantIndex) { + int imSize = imSizes[variantIndex]; + tcpp << imSize; + if (variantIndex + 1 < variantsCount) tcpp << ", "; + } + tcpp << " }, EIndex = -1, ESize = 0;\n"; + tcpp << "const char *EmojiNames[] = { "; + for (int variantIndex = 0; variantIndex < variantsCount; ++variantIndex) { + tcpp << "\":/gui/art/emoji" << variantPostfix[variantIndex] << ".webp\""; + if (variantIndex + 1 < variantsCount) tcpp << ", "; + } + tcpp << " }, *EName = 0;\n"; - for (int variantIndex = 0; variantIndex < variantsCount; ++variantIndex) { - int imSize = imSizes[variantIndex]; - tcpp << "void initEmoji" << shortNames[variantIndex] << "() {\n"; - tcpp << "\tEmojiData *toFill = emojis = (EmojiData*)emojisData;\n\n"; - for (EmojisData::const_iterator i = emojisData.cbegin(), e = emojisData.cend(); i != e; ++i) { - int len = i->code2 ? 4 : ((i->code >> 16) ? 2 : 1); - bool withPostfix = emojiWithPostfixes.constFind(i->code) != emojiWithPostfixes.constEnd(); - tcpp << "\tnew (toFill++) EmojiData(" << (i->x * imSize) << ", " << (i->y * imSize) << ", 0x" << QString("%1").arg(i->code, 0, 16).toUpper().toUtf8().constData() << "U, 0x" << QString("%1").arg(i->code2, 0, 16).toUpper().toUtf8().constData() << "U, " << len << (withPostfix ? ", 0xFE0F" : "") << ");\n"; - } - tcpp << "}\n\n"; - } + int ind = 0; + for (EmojisData::const_iterator i = emojisData.cbegin(), e = emojisData.cend(); i != e; ++i) { + if (i->color && ((i->color & 0xFFFF0000U) != 0xFFFF0000U)) { + uint32 fullCode = uint32(i.key() >> 32); + EmojisData::iterator it = emojisData.find(fullCode); + if (it == e) { + cout << "Could not find original emoji 0x" << QString("%1").arg(fullCode, 0, 16).toUpper().toUtf8().constData() << "\n"; + ++ind; + continue; + } + if (!it->color) { + it->color = 0xFFFF0000U | uint32(ind); + } + } + ++ind; + } - tcpp << "void initEmoji() {\n"; + tcpp << "void emojiInit() {\n"; tcpp << "\tDBIScale emojiForScale = cRetina() ? dbisTwo : cScale();\n\n"; tcpp << "\tswitch (emojiForScale) {\n"; - for (int variantIndex = 0; variantIndex < variantsCount; ++variantIndex) { - tcpp << "\t\tcase " << variantNames[variantIndex] << ": initEmoji" << shortNames[variantIndex] << "(); break;\n"; + for (int variantIndex = 0; variantIndex < variantsCount - 1; ++variantIndex) { + tcpp << "\t\tcase " << variantNames[variantIndex] << ": EIndex = " << variantIndex << "; break;\n"; } - tcpp << "\t};\n"; + tcpp << "\t};\n\tESize = EmojiSizes[EIndex];\n\tEName = EmojiNames[EIndex];\n\n"; + tcpp << "\tEmojiData *toFill = emojis = (EmojiData*)emojisData;\n\n"; + uint32 index = 0; + int sequenceOffset = 0; + for (EmojisData::const_iterator i = emojisData.cbegin(), e = emojisData.cend(); i != e; ++i) { + int len = 1; + if (i->code2) { + len = 4; + } else if (i->code >> 16) { + if ((i->code >> 16) == 0xFFFF) { // sequence + len = textEmojiString(&i.value()).size(); + if (!sequenceOffset) sequenceOffset = index; + } else { + len = 2; + } + } + if (i->color && ((i->color & 0xFFFF0000U) != 0xFFFF0000U)) { + len += 2; + } + bool withPostfix = emojiWithPostfixes.constFind(i->code) != emojiWithPostfixes.cend(); + tcpp << "\tnew (toFill++) EmojiData(" << i->x << ", " << i->y << ", 0x" << QString("%1").arg(i->code, 0, 16).toUpper().toUtf8().constData() << "U, 0" << (i->code2 ? ('x' + QString("%1U").arg(i->code2, 0, 16).toUpper()).toUtf8().constData() : "") << ", " << len << (withPostfix ? ", 0xFE0F, 0" : ", 0, 0") << (i->color ? ('x' + QString("%1U").arg(i->color, 0, 16).toUpper()).toUtf8().constData() : "") << ");\n"; + ++index; + } tcpp << "};\n\n"; - tcpp << "const EmojiData *getEmoji(uint32 code) {\n"; // getter + // getter of one symbol emojis + tcpp << "EmojiPtr emojiGet(uint32 code) {\n"; tcpp << "\tif (!emojis) return 0;\n\n"; tcpp << "\tuint32 highCode = code >> 16;\n"; - uint32 index = 0; EmojisData::const_iterator i = emojisData.cbegin(), e = emojisData.cend(); tcpp << "\tif (!highCode) {\n"; // small codes tcpp << "\t\tswitch (code) {\n"; - for (; i != e; ++i) { // two small + for (index = 0; i != e; ++i) { // two small if (i->code2) break; if (i->code != 169 && i->code != 174) break; @@ -1311,18 +1628,182 @@ Copyright (c) 2014 John Preston, https://desktop.telegram.org\n\ tcpp << "\t\treturn 0;\n"; tcpp << "\t}\n\n"; + tcpp << "\tif (highCode == 0xFFFFU) {\n"; // sequences + tcpp << "\t\tstatic const int sequenceOffset = " << sequenceOffset << ";\n\n"; + tcpp << "\t\tuint32 index = (code & 0xFFFFU);\n"; + tcpp << "\t\treturn (index < " << (sizeof(emojiSequences) / sizeof(emojiSequences[0])) << ") ? &emojis[sequenceOffset + index] : 0;\n"; + tcpp << "\t}\n\n"; + tcpp << "\tif (code < 0x" << QString("%1").arg(min2, 0, 16).toUpper().toUtf8().constData() << "U || code > 0x" << QString("%1").arg(max2, 0, 16).toUpper().toUtf8().constData() << "U) return 0;\n\n"; tcpp << "\tswitch (code) {\n"; + uint32 minTwoSymbol = 0, maxTwoSymbol = 0; for (; i != e; ++i) { - tcpp << "\tcase 0x" << QString("%1").arg(i->code, 0, 16).toUpper().toUtf8().constData() << "U: return &emojis[" << (index++) << "];\n"; + if (i->code2) { + if (!minTwoSymbol) minTwoSymbol = i->code; + if (i->code > maxTwoSymbol) { + tcpp << "\t\tcase 0x" << QString("%1").arg(i->code, 0, 16).toUpper().toUtf8().constData() << "U: return TwoSymbolEmoji;\n"; + maxTwoSymbol = i->code; + } + index++; + continue; + } + if ((i->code & 16) == 0xFFFF) { // sequence + index++; + continue; + } + if (i->color && ((i->color & 0xFFFF0000U) != 0xFFFF0000U)) { + index++; + continue; + } + tcpp << "\t\tcase 0x" << QString("%1").arg(i->code, 0, 16).toUpper().toUtf8().constData() << "U: return &emojis[" << (index++) << "];\n"; } tcpp << "\t}\n\n"; tcpp << "\treturn 0;\n"; tcpp << "}\n\n"; + // getter of two symbol emojis + tcpp << "EmojiPtr emojiGet(uint32 code, uint32 code2) {\n"; + tcpp << "\tif (code < 0x" << QString("%1").arg(minTwoSymbol, 0, 16).toUpper().toUtf8().constData() << "U || code > 0x" << QString("%1").arg(maxTwoSymbol, 0, 16).toUpper().toUtf8().constData() << "U) return 0;\n\n"; + tcpp << "\tswitch (code) {\n"; + maxTwoSymbol = 0; + index = 0; + for (i = emojisData.cbegin(); i != e; ++i) { + if (i->code2) { + if (i->code > maxTwoSymbol) { + if (maxTwoSymbol) { + tcpp << "\t\t\tdefault: return 0;\n"; + tcpp << "\t\t} break;\n"; + } + tcpp << "\t\tcase 0x" << QString("%1").arg(i->code, 0, 16).toUpper().toUtf8().constData() << "U: switch (code2) {\n"; + maxTwoSymbol = i->code; + } + tcpp << "\t\t\tcase 0x" << QString("%1").arg(i->code2, 0, 16).toUpper().toUtf8().constData() << "U: return &emojis[" << index << "];\n"; + } + index++; + } + if (maxTwoSymbol) { + tcpp << "\t\t\tdefault: return 0;\n"; + tcpp << "\t\t} break;\n"; + } + tcpp << "\t}\n\n"; + tcpp << "\treturn 0;\n"; + tcpp << "}\n\n"; + + // getter of colored emojis + tcpp << "EmojiPtr emojiGet(EmojiPtr emoji, uint32 color) {\n"; + tcpp << "\tif (!emoji || ((emoji->color & 0xFFFF0000U) != 0xFFFF0000U)) return emoji;\n\n"; + tcpp << "\tint index = 0;\n"; + tcpp << "\tswitch (color) {\n"; + for (int j = 0, l = sizeof(emojiColors) / sizeof(emojiColors[0]); j < l; ++j) { + tcpp << "\t\tcase 0x" << QString("%1").arg(emojiColors[j], 0, 16).toUpper().toUtf8().constData() << ": index = " << j << "; break;\n"; + } + tcpp << "\t\tdefault: return emoji;\n"; + tcpp << "\t}\n\n"; + tcpp << "\treturn &emojis[(emoji->color & 0xFFFFU) + index];\n"; + tcpp << "}\n\n"; + + // getter of sequence emojis + QString seqs[sizeof(emojiSequences) / sizeof(emojiSequences[0])]; + for (int j = 0, l = sizeof(emojiSequences) / sizeof(emojiSequences[0]); j < l; ++j) { + seqs[j] = QString::fromUtf8(emojiSequences[j]); + } + tcpp << "EmojiPtr emojiGet(const QChar *from, const QChar *end) {\n"; + tcpp << "\tstatic const int sequenceOffset = " << sequenceOffset << ";\n\n"; + tcpp << "\tif (end < from + 8 || (from + 2)->unicode() != 0x200D || (from + 5)->unicode() != 0x200D) return 0;\n\n"; + tcpp << "\tstatic const uint32 "; + tcpp << "man = 0x" << QString("%1").arg((uint32(seqs[0].at(0).unicode()) << 16) | uint32(seqs[0].at(1).unicode()), 0, 16).toUpper().toUtf8().constData() << ", "; + tcpp << "woman = 0x" << QString("%1").arg((uint32(seqs[0].at(3).unicode()) << 16) | uint32(seqs[0].at(4).unicode()), 0, 16).toUpper().toUtf8().constData() << ", "; + tcpp << "boy = 0x" << QString("%1").arg((uint32(seqs[4].at(6).unicode()) << 16) | uint32(seqs[4].at(7).unicode()), 0, 16).toUpper().toUtf8().constData() << ", "; + tcpp << "girl = 0x" << QString("%1").arg((uint32(seqs[0].at(6).unicode()) << 16) | uint32(seqs[0].at(7).unicode()), 0, 16).toUpper().toUtf8().constData() << ", "; + tcpp << "heart = 0x" << QString("%1").arg((uint32(seqs[16].at(3).unicode()) << 16) | uint32(seqs[16].at(4).unicode()), 0, 16).toUpper().toUtf8().constData() << ", "; + tcpp << "kiss = 0x" << QString("%1").arg((uint32(seqs[16].at(6).unicode()) << 16) | uint32(seqs[16].at(7).unicode()), 0, 16).toUpper().toUtf8().constData() << ";\n"; + tcpp << "\tuint32 one = (uint32(from->unicode()) << 16) | uint32((from + 1)->unicode()), two = (uint32((from + 3)->unicode()) << 16) | uint32((from + 4)->unicode()), three = (uint32((from + 6)->unicode()) << 16) | uint32((from + 7)->unicode());\n\n"; + tcpp << "\tif (one != man && one != woman) return 0;\n\n"; + tcpp << "\tif (end > from + 10 && (from + 8)->unicode() == 0x200D) {\n"; + tcpp << "\t\tuint32 four = (uint32((from + 9)->unicode()) << 16) | uint32((from + 10)->unicode());\n\n"; + tcpp << "\t\tif (one == man) {\n"; + tcpp << "\t\t\tif (two == man) {\n"; + + tcpp << "\t\t\t\tif (three == girl) {\n"; + tcpp << "\t\t\t\t\tif (four == girl) return &emojis[sequenceOffset + 13];\n"; + tcpp << "\t\t\t\t\tif (four == boy) return &emojis[sequenceOffset + 11];\n"; + tcpp << "\t\t\t\t} else if (three == boy) {\n"; + tcpp << "\t\t\t\t\tif (four == boy) return &emojis[sequenceOffset + 12];\n"; + tcpp << "\t\t\t\t}\n"; + + tcpp << "\t\t\t} else if (two == woman) {\n"; + + tcpp << "\t\t\t\tif (three == girl) {\n"; + tcpp << "\t\t\t\t\tif (four == girl) return &emojis[sequenceOffset + 3];\n"; + tcpp << "\t\t\t\t\tif (four == boy) return &emojis[sequenceOffset + 1];\n"; + tcpp << "\t\t\t\t} else if (three == boy) {\n"; + tcpp << "\t\t\t\t\tif (four == boy) return &emojis[sequenceOffset + 2];\n"; + tcpp << "\t\t\t\t}\n"; + + tcpp << "\t\t\t} else if (two == heart) {\n"; + tcpp << "\t\t\t\tif (three == kiss && four == man) return &emojis[sequenceOffset + 17];\n"; + tcpp << "\t\t\t}\n"; + tcpp << "\t\t} else {\n"; // one == woman + tcpp << "\t\t\tif (two == woman) {\n"; + + tcpp << "\t\t\t\tif (three == girl) {\n"; + tcpp << "\t\t\t\t\tif (four == girl) return &emojis[sequenceOffset + 8];\n"; + tcpp << "\t\t\t\t\tif (four == boy) return &emojis[sequenceOffset + 6];\n"; + tcpp << "\t\t\t\t} else if (three == boy) {\n"; + tcpp << "\t\t\t\t\tif (four == boy) return &emojis[sequenceOffset + 7];\n"; + tcpp << "\t\t\t\t}\n"; + + tcpp << "\t\t\t} else if (two == heart) {\n"; + tcpp << "\t\t\t\tif (three == kiss && four == woman) return &emojis[sequenceOffset + 16];\n"; + tcpp << "\t\t\t}\n"; + tcpp << "\t\t}\n"; + tcpp << "\t}\n"; + + tcpp << "\tif (one == man) {\n"; + tcpp << "\t\tif (two == man) {\n"; + + tcpp << "\t\t\tif (three == girl) return &emojis[sequenceOffset + 10];\n"; + tcpp << "\t\t\tif (three == boy) return &emojis[sequenceOffset + 9];\n"; + + tcpp << "\t\t} else if (two == woman) {\n"; + tcpp << "\t\t\tif (three == girl) return &emojis[sequenceOffset + 0];\n"; + tcpp << "\t\t} else if (two == heart) {\n"; + tcpp << "\t\t\tif (three == man) return &emojis[sequenceOffset + 15];\n"; + tcpp << "\t\t}\n"; + tcpp << "\t} else {\n"; // one == woman + tcpp << "\t\tif (two == woman) {\n"; + + tcpp << "\t\t\tif (three == girl) return &emojis[sequenceOffset + 5];\n"; + tcpp << "\t\t\tif (three == boy) return &emojis[sequenceOffset + 4];\n"; + + tcpp << "\t\t} else if (two == heart) {\n"; + tcpp << "\t\t\tif (three == woman) return &emojis[sequenceOffset + 14];\n"; + tcpp << "\t\t}\n"; + tcpp << "\t}\n"; + + tcpp << "\treturn 0;\n"; + tcpp << "}\n\n"; + + tcpp << "QString emojiGetSequence(int index) {\n"; + tcpp << "\tstatic QVector sequences;\n"; + tcpp << "\tif (sequences.isEmpty()) {\n"; + tcpp << "\t\tsequences.reserve(" << (sizeof(seqs) / sizeof(seqs[0])) << ");\n\n"; + for (uint32 j = 0; j < (sizeof(emojiSequences) / sizeof(emojiSequences[0])); ++j) { + uint32 len = QByteArray(emojiSequences[j]).size(); + QString str; + str.reserve(4 * len); + for (uint32 k = 0; k < len; ++k) { + str.append(QString("\\x%1").arg(uint32((unsigned char)(emojiSequences[j][k])), 2, 16, QChar('0'))); + } + tcpp << "\t\tsequences.push_back(QString::fromUtf8(\"" << str.toUtf8().constData() << "\"));\n"; + } + tcpp << "\t}\n\n"; + tcpp << "\treturn (index >= 0 && index < sequences.size()) ? sequences.at(index) : QString();\n"; + tcpp << "}\n\n"; + // emoji autoreplace - tcpp << "void findEmoji(const QChar *ch, const QChar *e, const QChar *&newEmojiEnd, uint32 &emojiCode) {\n"; + tcpp << "void emojiFind(const QChar *ch, const QChar *e, const QChar *&newEmojiEnd, uint32 &emojiCode) {\n"; tcpp << "\tswitch (ch->unicode()) {\n"; QString tab("\t"); @@ -1371,20 +1852,35 @@ Copyright (c) 2014 John Preston, https://desktop.telegram.org\n\ tcpp << "\t}\n"; tcpp << "}\n\n"; + tcpp << "int emojiPackCount(DBIEmojiTab tab) {\n"; + tcpp << "\tswitch (tab) {\n"; + tcpp << "\t\tcase dbietRecent : return cGetRecentEmojis().size();\n"; + tcpp << "\t\tcase dbietPeople : return " << sizeof(emojiCategory1) / sizeof(emojiCategory1[0]) << ";\n"; + tcpp << "\t\tcase dbietNature : return " << sizeof(emojiCategory2) / sizeof(emojiCategory2[0]) << ";\n"; + tcpp << "\t\tcase dbietFood : return " << sizeof(emojiCategory3) / sizeof(emojiCategory3[0]) << ";\n"; + tcpp << "\t\tcase dbietCelebration: return " << sizeof(emojiCategory4) / sizeof(emojiCategory4[0]) << ";\n"; + tcpp << "\t\tcase dbietActivity : return " << sizeof(emojiCategory5) / sizeof(emojiCategory5[0]) << ";\n"; + tcpp << "\t\tcase dbietTravel : return " << sizeof(emojiCategory6) / sizeof(emojiCategory6[0]) << ";\n"; + tcpp << "\t\tcase dbietObjects : return " << sizeof(emojiCategory7) / sizeof(emojiCategory7[0]) << ";\n"; + tcpp << "\t};\n"; + tcpp << "\treturn 0;\n"; + tcpp << "}\n\n"; tcpp << "EmojiPack emojiPack(DBIEmojiTab tab) {\n"; tcpp << "\tswitch (tab) {\n\n"; - writeEmojiCategory(tcpp, emojiCategory0, sizeof(emojiCategory0) / sizeof(emojiCategory0[0]), "People"); - writeEmojiCategory(tcpp, emojiCategory1, sizeof(emojiCategory1) / sizeof(emojiCategory1[0]), "Nature"); - writeEmojiCategory(tcpp, emojiCategory2, sizeof(emojiCategory2) / sizeof(emojiCategory2[0]), "Objects"); - writeEmojiCategory(tcpp, emojiCategory3, sizeof(emojiCategory3) / sizeof(emojiCategory3[0]), "Places"); - writeEmojiCategory(tcpp, emojiCategory4, sizeof(emojiCategory4) / sizeof(emojiCategory4[0]), "Symbols"); + writeEmojiCategory(tcpp, emojiCategory1, sizeof(emojiCategory1) / sizeof(emojiCategory1[0]), "People"); + writeEmojiCategory(tcpp, emojiCategory2, sizeof(emojiCategory2) / sizeof(emojiCategory2[0]), "Nature"); + writeEmojiCategory(tcpp, emojiCategory3, sizeof(emojiCategory3) / sizeof(emojiCategory3[0]), "Food"); + writeEmojiCategory(tcpp, emojiCategory4, sizeof(emojiCategory4) / sizeof(emojiCategory4[0]), "Celebration"); + writeEmojiCategory(tcpp, emojiCategory5, sizeof(emojiCategory5) / sizeof(emojiCategory5[0]), "Activity"); + writeEmojiCategory(tcpp, emojiCategory6, sizeof(emojiCategory6) / sizeof(emojiCategory6[0]), "Travel"); + writeEmojiCategory(tcpp, emojiCategory7, sizeof(emojiCategory7) / sizeof(emojiCategory7[0]), "Objects"); tcpp << "\t};\n\n"; tcpp << "\tEmojiPack result;\n"; tcpp << "\tresult.reserve(cGetRecentEmojis().size());\n"; tcpp << "\tfor (RecentEmojiPack::const_iterator i = cGetRecentEmojis().cbegin(), e = cGetRecentEmojis().cend(); i != e; ++i) {\n"; tcpp << "\t\tresult.push_back(i->first);\n"; tcpp << "\t}\n"; - tcpp << "\treturn result;"; + tcpp << "\treturn result;\n"; tcpp << "}\n\n"; } QFile cpp(emoji_out); diff --git a/Telegram/SourceFiles/_other/updater_osx.m b/Telegram/SourceFiles/_other/updater_osx.m index 62d7cc1f8..2839a037b 100644 --- a/Telegram/SourceFiles/_other/updater_osx.m +++ b/Telegram/SourceFiles/_other/updater_osx.m @@ -132,7 +132,7 @@ int main(int argc, const char * argv[]) { } if (update) { - writeLog(@"Starting update files iteration!"); + writeLog([@"Starting update files iteration, path: " stringByAppendingString: [workDir stringByAppendingString:@"tupdates/ready"]]); NSFileManager *fileManager = [NSFileManager defaultManager]; NSString *srcDir = [workDir stringByAppendingString:@"tupdates/ready/"]; @@ -142,6 +142,7 @@ int main(int argc, const char * argv[]) { includingPropertiesForKeys:keys options:0 errorHandler:^(NSURL *url, NSError *error) { + writeLog([[[@"Error in enumerating " stringByAppendingString:[url absoluteString]] stringByAppendingString: @" error is: "] stringByAppendingString: [error description]]); return NO; }]; for (NSURL *url in enumerator) { diff --git a/Telegram/SourceFiles/app.cpp b/Telegram/SourceFiles/app.cpp index 0b6ba19d0..bc2e7447d 100644 --- a/Telegram/SourceFiles/app.cpp +++ b/Telegram/SourceFiles/app.cpp @@ -73,9 +73,9 @@ namespace { HistoryItem *hoveredItem = 0, *pressedItem = 0, *hoveredLinkItem = 0, *pressedLinkItem = 0, *contextItem = 0, *mousedItem = 0; - QPixmap *sprite = 0, *emojis = 0; + QPixmap *sprite = 0, *emojis = 0, *emojisLarge = 0; - typedef QMap EmojisMap; + typedef QMap EmojisMap; EmojisMap mainEmojisMap; QMap otherEmojisMap; @@ -1528,11 +1528,15 @@ namespace App { } if (cRetina()) ::sprite->setDevicePixelRatio(cRetinaFactor()); } + emojiInit(); if (!::emojis) { - ::emojis = new QPixmap(st::emojisFile); + ::emojis = new QPixmap(QLatin1String(EName)); if (cRetina()) ::emojis->setDevicePixelRatio(cRetinaFactor()); } - initEmoji(); + if (!::emojisLarge) { + ::emojisLarge = new QPixmap(QLatin1String(EmojiNames[EIndex + 1])); + if (cRetina()) ::emojisLarge->setDevicePixelRatio(cRetinaFactor()); + } } void deinitMedia(bool completely) { @@ -1548,6 +1552,8 @@ namespace App { ::sprite = 0; delete ::emojis; ::emojis = 0; + delete ::emojisLarge; + ::emojisLarge = 0; mainEmojisMap.clear(); otherEmojisMap.clear(); @@ -1616,19 +1622,25 @@ namespace App { return *::emojis; } - const QPixmap &emojiSingle(const EmojiData *emoji, int32 fontHeight) { + const QPixmap &emojisLarge() { + return *::emojisLarge; + } + + const QPixmap &emojiSingle(EmojiPtr emoji, int32 fontHeight) { EmojisMap *map = &(fontHeight == st::taDefFlat.font->height ? mainEmojisMap : otherEmojisMap[fontHeight]); - EmojisMap::const_iterator i = map->constFind(emoji->code); + EmojisMap::const_iterator i = map->constFind(emojiKey(emoji)); if (i == map->cend()) { - QImage img(st::emojiImgSize + st::emojiPadding * cIntRetinaFactor() * 2, fontHeight * cIntRetinaFactor(), QImage::Format_ARGB32_Premultiplied); + QImage img(ESize + st::emojiPadding * cIntRetinaFactor() * 2, fontHeight * cIntRetinaFactor(), QImage::Format_ARGB32_Premultiplied); if (cRetina()) img.setDevicePixelRatio(cRetinaFactor()); { QPainter p(&img); + QPainter::CompositionMode m = p.compositionMode(); p.setCompositionMode(QPainter::CompositionMode_Source); p.fillRect(0, 0, img.width(), img.height(), Qt::transparent); - p.drawPixmap(QPoint(st::emojiPadding * cIntRetinaFactor(), (fontHeight * cIntRetinaFactor() - st::emojiImgSize) / 2), App::emojis(), QRect(emoji->x, emoji->y, st::emojiImgSize, st::emojiImgSize)); + p.setCompositionMode(m); + emojiDraw(p, emoji, st::emojiPadding * cIntRetinaFactor(), (fontHeight * cIntRetinaFactor() - ESize) / 2); } - i = map->insert(emoji->code, QPixmap::fromImage(img, Qt::ColorOnly)); + i = map->insert(emojiKey(emoji), QPixmap::fromImage(img, Qt::ColorOnly)); } return i.value(); } diff --git a/Telegram/SourceFiles/app.h b/Telegram/SourceFiles/app.h index eb596e582..2644f7026 100644 --- a/Telegram/SourceFiles/app.h +++ b/Telegram/SourceFiles/app.h @@ -156,7 +156,8 @@ namespace App { const QPixmap &sprite(); const QPixmap &emojis(); - const QPixmap &emojiSingle(const EmojiData *emoji, int32 fontHeight); + const QPixmap &emojisLarge(); + const QPixmap &emojiSingle(EmojiPtr emoji, int32 fontHeight); void initMedia(); void deinitMedia(bool completely = true); diff --git a/Telegram/SourceFiles/art/emoji.png b/Telegram/SourceFiles/art/emoji.png deleted file mode 100644 index 3acf2deec..000000000 Binary files a/Telegram/SourceFiles/art/emoji.png and /dev/null differ diff --git a/Telegram/SourceFiles/art/emoji.webp b/Telegram/SourceFiles/art/emoji.webp new file mode 100644 index 000000000..f1f51e2dc Binary files /dev/null and b/Telegram/SourceFiles/art/emoji.webp differ diff --git a/Telegram/SourceFiles/art/emoji_125x.png b/Telegram/SourceFiles/art/emoji_125x.png deleted file mode 100644 index 0b8d2614b..000000000 Binary files a/Telegram/SourceFiles/art/emoji_125x.png and /dev/null differ diff --git a/Telegram/SourceFiles/art/emoji_125x.webp b/Telegram/SourceFiles/art/emoji_125x.webp new file mode 100644 index 000000000..3b19b139d Binary files /dev/null and b/Telegram/SourceFiles/art/emoji_125x.webp differ diff --git a/Telegram/SourceFiles/art/emoji_150x.png b/Telegram/SourceFiles/art/emoji_150x.png deleted file mode 100644 index 7a384fd86..000000000 Binary files a/Telegram/SourceFiles/art/emoji_150x.png and /dev/null differ diff --git a/Telegram/SourceFiles/art/emoji_150x.webp b/Telegram/SourceFiles/art/emoji_150x.webp new file mode 100644 index 000000000..d40e59738 Binary files /dev/null and b/Telegram/SourceFiles/art/emoji_150x.webp differ diff --git a/Telegram/SourceFiles/art/emoji_200x.png b/Telegram/SourceFiles/art/emoji_200x.png deleted file mode 100644 index f7f804e9f..000000000 Binary files a/Telegram/SourceFiles/art/emoji_200x.png and /dev/null differ diff --git a/Telegram/SourceFiles/art/emoji_200x.webp b/Telegram/SourceFiles/art/emoji_200x.webp new file mode 100644 index 000000000..c7a998a49 Binary files /dev/null and b/Telegram/SourceFiles/art/emoji_200x.webp differ diff --git a/Telegram/SourceFiles/art/emoji_250x.webp b/Telegram/SourceFiles/art/emoji_250x.webp new file mode 100644 index 000000000..f09e6b06e Binary files /dev/null and b/Telegram/SourceFiles/art/emoji_250x.webp differ diff --git a/Telegram/SourceFiles/art/emojisprite_0.png b/Telegram/SourceFiles/art/emojisprite_0.png deleted file mode 100644 index 1adfcc97d..000000000 Binary files a/Telegram/SourceFiles/art/emojisprite_0.png and /dev/null differ diff --git a/Telegram/SourceFiles/art/emojisprite_1.png b/Telegram/SourceFiles/art/emojisprite_1.png deleted file mode 100644 index 5db1e9e7b..000000000 Binary files a/Telegram/SourceFiles/art/emojisprite_1.png and /dev/null differ diff --git a/Telegram/SourceFiles/art/emojisprite_2.png b/Telegram/SourceFiles/art/emojisprite_2.png deleted file mode 100644 index 63e106175..000000000 Binary files a/Telegram/SourceFiles/art/emojisprite_2.png and /dev/null differ diff --git a/Telegram/SourceFiles/art/emojisprite_3.png b/Telegram/SourceFiles/art/emojisprite_3.png deleted file mode 100644 index 5f259ecbd..000000000 Binary files a/Telegram/SourceFiles/art/emojisprite_3.png and /dev/null differ diff --git a/Telegram/SourceFiles/art/emojisprite_4.png b/Telegram/SourceFiles/art/emojisprite_4.png deleted file mode 100644 index ec146b27b..000000000 Binary files a/Telegram/SourceFiles/art/emojisprite_4.png and /dev/null differ diff --git a/Telegram/SourceFiles/art/sprite.png b/Telegram/SourceFiles/art/sprite.png index 86fb78fda..39ef10656 100644 Binary files a/Telegram/SourceFiles/art/sprite.png and b/Telegram/SourceFiles/art/sprite.png differ diff --git a/Telegram/SourceFiles/art/sprite_200x.png b/Telegram/SourceFiles/art/sprite_200x.png index e2d45ef52..5f8e42002 100644 Binary files a/Telegram/SourceFiles/art/sprite_200x.png and b/Telegram/SourceFiles/art/sprite_200x.png differ diff --git a/Telegram/SourceFiles/boxes/emojibox.cpp b/Telegram/SourceFiles/boxes/emojibox.cpp index 85b8b574d..c38fe9068 100644 --- a/Telegram/SourceFiles/boxes/emojibox.cpp +++ b/Telegram/SourceFiles/boxes/emojibox.cpp @@ -84,7 +84,7 @@ void EmojiBox::fillBlocks() { BlockRow currentRow; currentRow.reserve(replacesInRow); for (uint32 i = 0; i < replacesCount; ++i) { - Block block(getEmoji(replaces[i].code), QString::fromUtf8(replaces[i].replace)); + Block block(emojiGet(replaces[i].code), QString::fromUtf8(replaces[i].replace)); currentRow.push_back(block); if (uint32(currentRow.size()) == replacesInRow) { _blocks.push_back(currentRow); @@ -125,8 +125,7 @@ void EmojiBox::paintEvent(QPaintEvent *e) { int32 rowSize = i->size(), left = (width() - rowSize * st::emojiReplaceWidth) / 2; for (BlockRow::const_iterator j = i->cbegin(), en = i->cend(); j != en; ++j) { if (j->emoji) { - QPoint pos(left + (st::emojiReplaceWidth - st::emojiSize) / 2, top + (st::emojiReplaceHeight - _blockHeight) / 2); - p.drawPixmap(pos, App::emojis(), QRect(j->emoji->x, j->emoji->y, st::emojiImgSize, st::emojiImgSize)); + emojiDraw(p, j->emoji, left + (st::emojiReplaceWidth - st::emojiSize) / 2, top + (st::emojiReplaceHeight - _blockHeight) / 2); } QRect trect(left, top + (st::emojiReplaceHeight + _blockHeight) / 2 - st::emojiTextFont->height, st::emojiReplaceWidth, st::emojiTextFont->height); p.drawText(trect, j->text, QTextOption(Qt::AlignHCenter | Qt::AlignTop)); diff --git a/Telegram/SourceFiles/dropdown.cpp b/Telegram/SourceFiles/dropdown.cpp index 4b8570c7a..4b7854f39 100644 --- a/Telegram/SourceFiles/dropdown.cpp +++ b/Telegram/SourceFiles/dropdown.cpp @@ -442,225 +442,208 @@ bool DragArea::animStep(float64 ms) { return res; } -EmojiPanInner::EmojiPanInner(QWidget *parent) : QWidget(parent), _tab(cEmojiTab()), _selected(-1), _xSelected(-1), _pressedSel(-1), _xPressedSel(-1) { - resize(EmojiPadPerRow * st::emojiPanSize.width(), EmojiPadRowsPerPage * st::emojiPanSize.height() - st::emojiPanSub); +EmojiColorPicker::EmojiColorPicker(QWidget *parent) : TWidget(parent), +_ignoreShow(false), _selected(-1), _pressedSel(-1), _hiding(false), a_opacity(0), _shadow(st::dropdownDef.shadow) { + memset(_variants, 0, sizeof(_variants)); + memset(_hovers, 0, sizeof(_hovers)); + setMouseTracking(true); setFocusPolicy(Qt::NoFocus); - _saveConfigTimer.setSingleShot(true); - connect(&_saveConfigTimer, SIGNAL(timeout()), this, SLOT(onSaveConfig())); + int32 w = st::emojiPanSize.width() * (EmojiColorsCount + 1) + 4 * st::emojiColorsPadding + st::emojiColorsSep + st::dropdownDef.shadow.pxWidth() * 2; + int32 h = 2 * st::emojiColorsPadding + st::emojiPanSize.height() + st::dropdownDef.shadow.pxHeight() * 2; + resize(w, h); + + _hideTimer.setSingleShot(true); + connect(&_hideTimer, SIGNAL(timeout()), this, SLOT(hideStart())); } -void EmojiPanInner::paintEvent(QPaintEvent *e) { - QPainter p(this); +void EmojiColorPicker::showEmoji(uint32 code) { + EmojiPtr e = emojiGet(code); + if (!e || e == TwoSymbolEmoji || !e->color) { + return; + } + _ignoreShow = false; - QRect r = e ? e->rect() : rect(); + _variants[0] = e; + _variants[1] = emojiGet(e, 0xD83CDFFB); + _variants[2] = emojiGet(e, 0xD83CDFFC); + _variants[3] = emojiGet(e, 0xD83CDFFD); + _variants[4] = emojiGet(e, 0xD83CDFFE); + _variants[5] = emojiGet(e, 0xD83CDFFF); - if (_tab == dbietStickers) { - int32 size = _stickers.size(); - float64 stickerWidth = width() / float64(StickerPadPerRow); - int32 rows = (size / StickerPadPerRow) + ((size % StickerPadPerRow) ? 1 : 0), stickerSize = int32(stickerWidth); - int32 fromrow = qMax(qFloor(r.top() / stickerSize), 0), torow = qMin(qCeil(r.bottom() / stickerSize) + 1, rows); - for (int32 i = fromrow; i < torow; ++i) { - for (int32 j = 0; j < StickerPadPerRow; ++j) { - int32 index = i * StickerPadPerRow + j; - if (index >= size) break; + if (!_cache.isNull()) _cache = QPixmap(); + showStart(); +} - float64 hover = _hovers[index]; +void EmojiColorPicker::paintEvent(QPaintEvent *e) { + Painter p(this); - QPoint pos(qRound(j * stickerWidth), i * stickerSize); - if (hover > 0) { - p.setOpacity(hover); - p.setBrush(st::emojiPanHover->b); - p.setPen(Qt::NoPen); - p.drawRoundedRect(QRect(pos, QSize(stickerSize, stickerSize)), st::stickerPanRound, st::stickerPanRound); - p.setOpacity(1); - } + if (!_cache.isNull()) { + p.setOpacity(a_opacity.current()); + } - DocumentData *sticker = _stickers[index]; - bool already = !sticker->already().isEmpty(), hasdata = !sticker->data.isEmpty(); - if (!sticker->loader && sticker->status != FileFailed && !already && !hasdata) { - sticker->save(QString()); - } - if (sticker->sticker->isNull() && (already || hasdata)) { - if (already) { - sticker->sticker = ImagePtr(sticker->already()); - } else { - sticker->sticker = ImagePtr(sticker->data); - } - } + int32 w = st::dropdownDef.shadow.pxWidth(), h = st::dropdownDef.shadow.pxHeight(); + QRect r = QRect(w, h, width() - 2 * w, height() - 2 * h); + _shadow.paint(p, r); - float64 coef = qMin((stickerWidth - st::stickerPanPadding * 2) / float64(sticker->dimensions.width()), (stickerSize - st::stickerPanPadding * 2) / float64(sticker->dimensions.height())); - if (coef > 1) coef = 1; - int32 w = qRound(coef * sticker->dimensions.width()), h = qRound(coef * sticker->dimensions.height()); - if (w < 1) w = 1; - if (h < 1) h = 1; - QPoint ppos = pos + QPoint((stickerSize - w) / 2, (stickerSize - h) / 2); - if (sticker->sticker->isNull()) { - p.drawPixmap(ppos, sticker->thumb->pix(w, h)); - } else { - p.drawPixmap(ppos, sticker->sticker->pix(w, h)); - } + if (_cache.isNull()) { + p.fillRect(r, st::white->b); + p.translate(w, h); - if (hover > 0 && _isUserGen[index]) { - float64 xHover = _hovers[_stickers.size() + index]; + p.fillRect(2 * st::emojiColorsPadding + st::emojiPanSize.width(), st::emojiColorsPadding, st::emojiColorsSep, r.height() - st::emojiColorsPadding * 2, st::emojiColorsSepColor->b); - QPoint xPos = pos + QPoint(stickerWidth - st::stickerPanDelete.pxWidth(), 0); - p.setOpacity(hover * (xHover + (1 - xHover) * st::stickerPanDeleteOpacity)); - p.drawPixmap(xPos, App::sprite(), st::stickerPanDelete); - p.setOpacity(1); - } - } + if (!_variants[0]) return; + for (int i = 0; i < EmojiColorsCount + 1; ++i) { + drawVariant(p, i); } } else { - int32 size = _emojis.size(); - int32 rows = (size / EmojiPadPerRow) + ((size % EmojiPadPerRow) ? 1 : 0); - int32 fromrow = qMax(qFloor(r.top() / st::emojiPanSize.height()), 0), torow = qMin(qCeil(r.bottom() / st::emojiPanSize.height()) + 1, rows); - for (int32 i = fromrow; i < torow; ++i) { - for (int32 j = 0; j < EmojiPadPerRow; ++j) { - int32 index = i * EmojiPadPerRow + j; - if (index >= size) break; - - float64 hover = _hovers[index]; - - QPoint w(j * st::emojiPanSize.width(), i * st::emojiPanSize.height()); - if (hover > 0) { - p.setOpacity(hover); - p.setBrush(st::emojiPanHover->b); - p.setPen(Qt::NoPen); - p.drawRoundedRect(QRect(w, st::emojiPanSize), st::emojiPanRound, st::emojiPanRound); - p.setOpacity(1); - } - QRect r(_emojis[index]->x, _emojis[index]->y, st::emojiImgSize, st::emojiImgSize); - p.drawPixmap(w + QPoint((st::emojiPanSize.width() - st::emojiSize) / 2, (st::emojiPanSize.height() - st::emojiSize) / 2), App::emojis(), r); - } - } + p.drawPixmap(r.left(), r.top(), _cache); } + } -void EmojiPanInner::mousePressEvent(QMouseEvent *e) { +void EmojiColorPicker::enterEvent(QEvent *e) { + _hideTimer.stop(); + if (_hiding) showStart(); + TWidget::enterEvent(e); +} + +void EmojiColorPicker::leaveEvent(QEvent *e) { + TWidget::leaveEvent(e); +} + +void EmojiColorPicker::mousePressEvent(QMouseEvent *e) { _lastMousePos = e->globalPos(); updateSelected(); _pressedSel = _selected; - _xPressedSel = _xSelected; } -void EmojiPanInner::mouseReleaseEvent(QMouseEvent *e) { - _lastMousePos = e->globalPos(); - updateSelected(); - if (_xSelected == _xPressedSel && _xSelected >= 0 && _tab == dbietStickers) { - RecentStickerPack recent(cRecentStickers()); - DocumentData *sticker = _stickers.at(_xSelected - _stickers.size()); - for (int32 i = 0, l = recent.size(); i < l; ++i) { - if (recent.at(i).first == sticker) { - recent.removeAt(i); - cSetRecentStickers(recent); - Local::writeRecentStickers(); - showEmojiPack(dbietStickers); - updateSelected(); - break; - } - } - } else if (_selected == _pressedSel && _selected >= 0) { - if (_tab == dbietStickers) { - if (_selected < _stickers.size()) { - emit stickerSelected(_stickers[_selected]); - } - } else if (_selected < _emojis.size()) { - EmojiPtr emoji(_emojis[_selected]); - RecentEmojiPack recent(cGetRecentEmojis()); - RecentEmojiPack::iterator i = recent.begin(), e = recent.end(); - for (; i != e; ++i) { - if (i->first == emoji) { - ++i->second; - if (i->second > 0x8000) { - for (RecentEmojiPack::iterator j = recent.begin(); j != e; ++j) { - if (j->second > 1) { - j->second /= 2; - } else { - j->second = 1; - } - } - } - for (; i != recent.begin(); --i) { - if ((i - 1)->second > i->second) { - break; - } - qSwap(*i, *(i - 1)); - } - break; - } - } - if (i == e) { - while (recent.size() >= EmojiPadPerRow * EmojiPadRowsPerPage) recent.pop_back(); - recent.push_back(qMakePair(emoji, 1)); - for (i = recent.end() - 1; i != recent.begin(); --i) { - if ((i - 1)->second > i->second) { - break; - } - qSwap(*i, *(i - 1)); - } - } - cSetRecentEmojis(recent); - _saveConfigTimer.start(SaveRecentEmojisTimeout); +void EmojiColorPicker::mouseReleaseEvent(QMouseEvent *e) { + _lastMousePos = e ? e->globalPos() : QCursor::pos(); + int32 pressed = _pressedSel; + _pressedSel = -1; - emit emojiSelected(emoji); + updateSelected(); + if (_selected >= 0 && (pressed < 0 || _selected == pressed)) { + emit emojiSelected(_variants[_selected]); + } + _ignoreShow = true; + hideStart(); +} + +void EmojiColorPicker::mouseMoveEvent(QMouseEvent *e) { + _lastMousePos = e ? e->globalPos() : QCursor::pos(); + updateSelected(); +} + +bool EmojiColorPicker::animStep(float64 ms) { + bool res1 = true, res2 = true; + if (!_cache.isNull()) { + float64 dt = ms / st::dropdownDef.duration; + if (dt >= 1) { + a_opacity.finish(); + _cache = QPixmap(); + if (_hiding) { + hide(); + emit hidden(); + } else { + _lastMousePos = QCursor::pos(); + updateSelected(); + } + res1 = false; + } else { + a_opacity.update(dt, anim::linear); } } + if (!_emojiAnimations.isEmpty()) { + uint64 now = getms(); + for (EmojiAnimations::iterator i = _emojiAnimations.begin(); i != _emojiAnimations.end();) { + int index = qAbs(i.key()) - 1; + float64 dt = float64(now - i.value()) / st::emojiPanDuration; + if (dt >= 1) { + _hovers[index] = (i.key() > 0) ? 1 : 0; + i = _emojiAnimations.erase(i); + } else { + _hovers[index] = (i.key() > 0) ? dt : (1 - dt); + ++i; + } + } + res2 = !_emojiAnimations.isEmpty(); + } + update(); + return res1 || res2; +} + +void EmojiColorPicker::hideStart(bool fast) { + if (fast) { + clearSelection(true); + if (animating()) anim::stop(this); + a_opacity = anim::fvalue(0); + _cache = QPixmap(); + hide(); + emit hidden(); + } else { + if (_cache.isNull()) { + int32 w = st::dropdownDef.shadow.pxWidth(), h = st::dropdownDef.shadow.pxHeight(); + _cache = myGrab(this, QRect(w, h, width() - 2 * w, height() - 2 * h)); + clearSelection(true); + } + _hiding = true; + a_opacity.start(0); + anim::start(this); + } } -void EmojiPanInner::onSaveConfig() { - Local::writeUserSettings(); +void EmojiColorPicker::showStart() { + if (_ignoreShow) return; + + _hiding = false; + if (!isHidden() && a_opacity.current() == 1) { + if (animating()) { + anim::stop(this); + _cache = QPixmap(); + } + return; + } + if (_cache.isNull()) { + int32 w = st::dropdownDef.shadow.pxWidth(), h = st::dropdownDef.shadow.pxHeight(); + _cache = myGrab(this, QRect(w, h, width() - 2 * w, height() - 2 * h)); + clearSelection(true); + } + show(); + a_opacity.start(1); + anim::start(this); } -void EmojiPanInner::mouseMoveEvent(QMouseEvent *e) { - _lastMousePos = e->globalPos(); - updateSelected(); -} - -void EmojiPanInner::leaveEvent(QEvent *e) { - clearSelection(); -} - -void EmojiPanInner::clearSelection(bool fast) { +void EmojiColorPicker::clearSelection(bool fast) { + _pressedSel = -1; _lastMousePos = mapToGlobal(QPoint(-10, -10)); if (fast) { - if (_tab == dbietStickers) { - _hovers = QVector(_stickers.size() * 2, 0); - } else { - _hovers = QVector(_emojis.size(), 0); - } + _selected = -1; + memset(_hovers, 0, sizeof(_hovers)); _emojiAnimations.clear(); - _selected = _pressedSel = _xSelected = _xPressedSel = -1; - anim::stop(this); } else { updateSelected(); } } -void EmojiPanInner::updateSelected() { - int32 selIndex = -1, xSelIndex = -1; +void EmojiColorPicker::updateSelected() { + int32 selIndex = -1; QPoint p(mapFromGlobal(_lastMousePos)); - if (_tab == dbietStickers) { - float64 stickerWidth = width() / float64(StickerPadPerRow); - int32 stickerSize = int32(stickerWidth); - if (p.x() >= 0 && p.y() >= 0 && p.x() < StickerPadPerRow * stickerWidth) { - selIndex = qFloor(p.y() / stickerSize) * StickerPadPerRow + qFloor(p.x() / stickerWidth); - if (selIndex >= _stickers.size()) { - selIndex = -1; - } else { - int32 inx = p.x() - (selIndex % StickerPadPerRow) * stickerWidth, iny = p.y() - ((selIndex / StickerPadPerRow) * stickerSize); - if (inx >= stickerWidth - st::stickerPanDelete.pxWidth() && iny < st::stickerPanDelete.pxHeight()) { - xSelIndex = _stickers.size() + selIndex; - } + int32 y = p.y() - st::dropdownDef.shadow.pxHeight() - st::emojiColorsPadding; + if (y >= 0 && y < st::emojiPanSize.height()) { + int32 x = p.x() - st::dropdownDef.shadow.pxWidth() - st::emojiColorsPadding; + if (x >= 0 && x < st::emojiPanSize.width()) { + selIndex = 0; + } else { + x -= st::emojiPanSize.width() + 2 * st::emojiColorsPadding + st::emojiColorsSep; + if (x >= 0 && x < st::emojiPanSize.width() * EmojiColorsCount) { + selIndex = (x / st::emojiPanSize.width()) + 1; } } - } else if (p.x() >= 0 && p.y() >= 0 && p.x() < EmojiPadPerRow * st::emojiPanSize.width()) { - selIndex = qFloor(p.y() / st::emojiPanSize.height()) * EmojiPadPerRow + qFloor(p.x() / st::emojiPanSize.width()); - if (selIndex >= _emojis.size()) { - selIndex = -1; - } } + bool startanim = false; if (selIndex != _selected) { if (_selected >= 0) { @@ -680,35 +663,615 @@ void EmojiPanInner::updateSelected() { } setCursor((_selected >= 0) ? style::cur_pointer : style::cur_default); } - if (xSelIndex != _xSelected) { - if (_xSelected >= 0) { - _emojiAnimations.remove(_xSelected + 1); - if (_emojiAnimations.find(-_xSelected - 1) == _emojiAnimations.end()) { - if (_emojiAnimations.isEmpty()) startanim = true; - _emojiAnimations.insert(-_xSelected - 1, getms()); + if (startanim && !animating()) anim::start(this); +} + +void EmojiColorPicker::drawVariant(Painter &p, int variant) { + float64 hover = _hovers[variant]; + + QPoint w(st::emojiColorsPadding + variant * st::emojiPanSize.width() + (variant ? 2 * st::emojiColorsPadding + st::emojiColorsSep : 0), st::emojiColorsPadding); + if (hover > 0) { + p.setOpacity(hover); + p.setBrush(st::emojiPanHover->b); + p.setPen(Qt::NoPen); + p.drawRoundedRect(QRect(w, st::emojiPanSize), st::emojiPanRound, st::emojiPanRound); + p.setOpacity(1); + } + int esize = EmojiSizes[EIndex + 1]; + p.drawPixmapLeft(w.x() + (st::emojiPanSize.width() - (esize / cIntRetinaFactor())) / 2, w.y() + (st::emojiPanSize.height() - (esize / cIntRetinaFactor())) / 2, width(), App::emojisLarge(), QRect(_variants[variant]->x * esize, _variants[variant]->y * esize, esize, esize)); + +} + +EmojiPanInner::EmojiPanInner(QWidget *parent) : TWidget(parent), _top(0), _selected(-1), _pressedSel(-1), _pickerSel(-1), _picker(this) { + resize(EmojiPadPerRow * st::emojiPanSize.width(), countHeight()); + setMouseTracking(true); + setFocusPolicy(Qt::NoFocus); + + _picker.hide(); + + _esize = EmojiSizes[EIndex + 1]; + + int sum = 0; + for (int i = 0; i < emojiTabCount; ++i) { + sum += (_counts[i] = emojiPackCount(emojiTabAtIndex(i))); + _hovers[i] = QVector(_counts[i], 0); + } + _count = sum; + + _saveConfigTimer.setSingleShot(true); + connect(&_saveConfigTimer, SIGNAL(timeout()), this, SLOT(onSaveConfig())); + + _showPickerTimer.setSingleShot(true); + connect(&_showPickerTimer, SIGNAL(timeout()), this, SLOT(onShowPicker())); + connect(&_picker, SIGNAL(emojiSelected(EmojiPtr)), this, SLOT(onColorSelected(EmojiPtr))); + connect(&_picker, SIGNAL(hidden()), this, SLOT(onPickerHidden())); +} + +void EmojiPanInner::setScrollTop(int top) { + if (top == _top) return; + + QRegion upd = QRect(0, _top, width(), st::emojiPanHeader); + _top = top; + upd += QRect(0, _top, width(), st::emojiPanHeader); + repaint(upd); + updateSelected(); +} + +int EmojiPanInner::countHeight() { + int result = 0; + for (int i = 0; i < emojiTabCount; ++i) { + int cnt = emojiPackCount(emojiTabAtIndex(i)), rows = (cnt / EmojiPadPerRow) + ((cnt % EmojiPadPerRow) ? 1 : 0); + result += st::emojiPanHeader + rows * st::emojiPanSize.height(); + } + + result += st::emojiPanHeader; + int32 cnt = cRecentStickers().size(), rows = (cnt / StickerPadPerRow) + ((cnt % StickerPadPerRow) ? 1 : 0); + _stickerWidth = (EmojiPadPerRow * st::emojiPanSize.width()) / float64(StickerPadPerRow); + _stickerSize = int32(_stickerWidth); + result += rows * _stickerSize; + return result; +} + +void EmojiPanInner::paintEvent(QPaintEvent *e) { + Painter p(this); + QRect r = e ? e->rect() : rect(); + if (r != rect()) { + p.setClipRect(r); + } + p.fillRect(r, st::white->b); + + float64 stickerWidth = width() / float64(StickerPadPerRow); + int32 stickerSize = int32(stickerWidth); + + int32 fullh = 0; + for (int c = 0; c < emojiTabCount; ++c) { + int32 size = _counts[c], rows = (size / EmojiPadPerRow) + ((size % EmojiPadPerRow) ? 1 : 0); + fullh += st::emojiPanHeader + (rows * st::emojiPanSize.height()); + } + int32 ssize = _stickers.size(), srows = (ssize / StickerPadPerRow) + ((ssize % StickerPadPerRow) ? 1 : 0); + fullh += st::emojiPanHeader + ssize * stickerSize; + int32 downfrom = 0, uptill = (_top * _stickers.size()) / fullh; + if (uptill >= _stickers.size()) uptill = _stickers.size(); + if (uptill > downfrom + StickerPadPerRow * 4) { + downfrom = uptill - StickerPadPerRow * 4; + } + for (int index = downfrom; index < uptill; ++index) { // preload stickers + DocumentData *sticker = _stickers[index]; + bool already = !sticker->already().isEmpty(), hasdata = !sticker->data.isEmpty(); + if (!sticker->loader && sticker->status != FileFailed && !already && !hasdata) { + sticker->save(QString()); + } + if (sticker->sticker->isNull() && (already || hasdata)) { + if (already) { + sticker->sticker = ImagePtr(sticker->already()); + } else { + sticker->sticker = ImagePtr(sticker->data); } } - _xSelected = xSelIndex; - if (_xSelected >= 0) { - _emojiAnimations.remove(-_xSelected - 1); - if (_emojiAnimations.find(_xSelected + 1) == _emojiAnimations.end()) { - if (_emojiAnimations.isEmpty()) startanim = true; - _emojiAnimations.insert(_xSelected + 1, getms()); + + float64 coef = qMin((stickerWidth - st::stickerPanPadding * 2) / float64(sticker->dimensions.width()), (stickerSize - st::stickerPanPadding * 2) / float64(sticker->dimensions.height())); + if (coef > 1) coef = 1; + int32 w = qRound(coef * sticker->dimensions.width()), h = qRound(coef * sticker->dimensions.height()); + if (w < 1) w = 1; + if (h < 1) h = 1; + if (!sticker->sticker->isNull()) sticker->sticker->pix(w, h); + } + + int32 y, tilly = 0; + for (int c = 0; c < emojiTabCount; ++c) { + y = tilly; + int32 size = _counts[c]; + int32 rows = (size / EmojiPadPerRow) + ((size % EmojiPadPerRow) ? 1 : 0); + tilly = y + st::emojiPanHeader + (rows * st::emojiPanSize.height()); + if (r.top() >= tilly) continue; + + y += st::emojiPanHeader; + + if (r.bottom() <= y) { + p.setFont(st::emojiPanHeaderFont->f); + p.setPen(st::emojiPanHeaderColor->p); + p.drawTextLeft(st::emojiPanHeaderLeft, qMax(y - int(st::emojiPanHeader), _top) + st::emojiPanHeaderTop, width(), lang(LangKey(lng_emoji_category0 + c))); + break; + } + + if (_emojis[c].isEmpty()) { + _emojis[c] = emojiPack(emojiTabAtIndex(c)); + if (emojiTabAtIndex(c) != dbietRecent) { + for (EmojiPack::iterator i = _emojis[c].begin(), e = _emojis[c].end(); i != e; ++i) { + if ((*i)->color) { + EmojiColorVariants::const_iterator j = cEmojiVariants().constFind((*i)->code); + if (j != cEmojiVariants().cend()) { + EmojiPtr replace = emojiFromKey(j.value()); + if (replace) { + if (replace != TwoSymbolEmoji && replace->code == (*i)->code && replace->code2 == (*i)->code2) { + *i = replace; + } + } + } + } + } + } + } + + int32 fromrow = (r.top() <= y) ? 0 : qMax(qFloor((r.top() - y) / st::emojiPanSize.height()), 0), torow = qMin(qCeil((r.bottom() - y) / st::emojiPanSize.height()) + 1, rows); + for (int32 i = fromrow; i < torow; ++i) { + for (int32 j = 0; j < EmojiPadPerRow; ++j) { + int32 index = i * EmojiPadPerRow + j; + if (index >= size) break; + + float64 hover = (!_picker.isHidden() && c * emojiTabShift + index == _pickerSel) ? 1 : _hovers[c][index]; + + QPoint w(j * st::emojiPanSize.width(), y + i * st::emojiPanSize.height()); + if (hover > 0) { + p.setOpacity(hover); + p.setBrush(st::emojiPanHover->b); + p.setPen(Qt::NoPen); + p.drawRoundedRect(QRect(w, st::emojiPanSize), st::emojiPanRound, st::emojiPanRound); + p.setOpacity(1); + } + p.drawPixmapLeft(w.x() + (st::emojiPanSize.width() - (_esize / cIntRetinaFactor())) / 2, w.y() + (st::emojiPanSize.height() - (_esize / cIntRetinaFactor())) / 2, width(), App::emojisLarge(), QRect(_emojis[c][index]->x * _esize, _emojis[c][index]->y * _esize, _esize, _esize)); + } + } + + if (y - int(st::emojiPanHeader) < _top) { + p.fillRect(QRect(0, qMin(_top, tilly - int(st::emojiPanHeader)), width(), st::emojiPanHeader), st::emojiPanHeaderBg->b); + } + p.setFont(st::emojiPanHeaderFont->f); + p.setPen(st::emojiPanHeaderColor->p); + p.drawTextLeft(st::emojiPanHeaderLeft, qMin(qMax(y - int(st::emojiPanHeader), _top), tilly - int(st::emojiPanHeader)) + st::emojiPanHeaderTop, width(), lang(LangKey(lng_emoji_category0 + c))); + } + + y = tilly; + int32 size = _stickers.size(), rows = (size / StickerPadPerRow) + ((size % StickerPadPerRow) ? 1 : 0); + tilly = y + st::emojiPanHeader + (rows * stickerSize); + if (r.top() >= tilly) return; + + y += st::emojiPanHeader; + + if (r.bottom() <= y) { + p.setFont(st::emojiPanHeaderFont->f); + p.setPen(st::emojiPanHeaderColor->p); + p.drawTextLeft(st::emojiPanHeaderLeft, qMax(y - int(st::emojiPanHeader), _top) + st::emojiPanHeaderTop, width(), lang(LangKey(lng_emoji_category0 + emojiTabCount))); + return; + } + + int32 fromrow = (r.top() <= y) ? 0 : qMax(qFloor((r.top() - y) / stickerSize), 0), torow = qMin(qCeil((r.bottom() - y) / stickerSize) + 1, rows); + for (int32 i = fromrow; i < torow; ++i) { + for (int32 j = 0; j < StickerPadPerRow; ++j) { + int32 index = i * StickerPadPerRow + j; + if (index >= size) break; + + float64 hover = _hovers[emojiTabCount][index]; + + QPoint pos(qRound(j * stickerWidth), y + i * stickerSize); + if (hover > 0) { + p.setOpacity(hover); + p.setBrush(st::emojiPanHover->b); + p.setPen(Qt::NoPen); + p.drawRoundedRect(QRect(pos, QSize(stickerSize, stickerSize)), st::stickerPanRound, st::stickerPanRound); + p.setOpacity(1); + } + + DocumentData *sticker = _stickers[index]; + bool already = !sticker->already().isEmpty(), hasdata = !sticker->data.isEmpty(); + if (!sticker->loader && sticker->status != FileFailed && !already && !hasdata) { + sticker->save(QString()); + } + if (sticker->sticker->isNull() && (already || hasdata)) { + if (already) { + sticker->sticker = ImagePtr(sticker->already()); + } else { + sticker->sticker = ImagePtr(sticker->data); + } + } + + float64 coef = qMin((stickerWidth - st::stickerPanPadding * 2) / float64(sticker->dimensions.width()), (stickerSize - st::stickerPanPadding * 2) / float64(sticker->dimensions.height())); + if (coef > 1) coef = 1; + int32 w = qRound(coef * sticker->dimensions.width()), h = qRound(coef * sticker->dimensions.height()); + if (w < 1) w = 1; + if (h < 1) h = 1; + QPoint ppos = pos + QPoint((stickerSize - w) / 2, (stickerSize - h) / 2); + if (sticker->sticker->isNull()) { + p.drawPixmap(ppos, sticker->thumb->pix(w, h)); + } else { + p.drawPixmap(ppos, sticker->sticker->pix(w, h)); + } + + if (hover > 0 && _isUserGen[index]) { + float64 xHover = _hovers[emojiTabCount][_stickers.size() + index]; + + QPoint xPos = pos + QPoint(stickerWidth - st::stickerPanDelete.pxWidth(), 0); + p.setOpacity(hover * (xHover + (1 - xHover) * st::stickerPanDeleteOpacity)); + p.drawPixmap(xPos, App::sprite(), st::stickerPanDelete); + p.setOpacity(1); } } } + + if (y - int(st::emojiPanHeader) < _top) { + p.fillRect(QRect(0, qMin(_top, tilly - int(st::emojiPanHeader)), width(), st::emojiPanHeader), st::emojiPanHeaderBg->b); + } + p.setFont(st::emojiPanHeaderFont->f); + p.setPen(st::emojiPanHeaderColor->p); + p.drawTextLeft(st::emojiPanHeaderLeft, qMax(y - int(st::emojiPanHeader), _top) + st::emojiPanHeaderTop, width(), lang(LangKey(lng_emoji_category0 + emojiTabCount))); +} + +void EmojiPanInner::mousePressEvent(QMouseEvent *e) { + _lastMousePos = e->globalPos(); + updateSelected(); + if (!_picker.isHidden() && _selected == _pickerSel) { + _picker.hideStart(); + return; + } + _pressedSel = _selected; + + if (_selected >= 0) { + int tab = (_selected / emojiTabShift), sel = _selected % emojiTabShift; + if (tab < emojiTabCount && sel < _emojis[tab].size() && _emojis[tab][sel]->color) { + _pickerSel = _selected; + if (cEmojiVariants().constFind(_emojis[tab][sel]->code) == cEmojiVariants().cend()) { + onShowPicker(); + } else { + _showPickerTimer.start(500); + } + } + } +} + +void EmojiPanInner::mouseReleaseEvent(QMouseEvent *e) { + int32 pressed = _pressedSel; + _pressedSel = -1; + + _lastMousePos = e->globalPos(); + if (!_picker.isHidden()) { + if (_picker.rect().contains(_picker.mapFromGlobal(_lastMousePos))) { + return _picker.mouseReleaseEvent(0); + } else if (_pickerSel >= 0) { + int tab = (_pickerSel / emojiTabShift), sel = _pickerSel % emojiTabShift; + if (tab < emojiTabCount && sel < _emojis[tab].size() && _emojis[tab][sel]->color) { + if (cEmojiVariants().constFind(_emojis[tab][sel]->code) != cEmojiVariants().cend()) { + _picker.hideStart(); + } + } + } + } + updateSelected(); + + if (_showPickerTimer.isActive()) { + _showPickerTimer.stop(); + _pickerSel = -1; + _picker.hide(); + } + + if (_selected < 0 || _selected != pressed) return; + if (_selected >= emojiTabCount * emojiTabShift) { + int sel = _selected - (emojiTabCount * emojiTabShift); + if (sel >= _stickers.size()) { + RecentStickerPack recent(cRecentStickers()); + DocumentData *sticker = _stickers.at(sel - _stickers.size()); + for (int32 i = 0, l = recent.size(); i < l; ++i) { + if (recent.at(i).first == sticker) { + recent.removeAt(i); + cSetRecentStickers(recent); + Local::writeRecentStickers(); + refreshStickers(); + updateSelected(); + break; + } + } + } else { + emit stickerSelected(_stickers[sel]); + } + return; + } + int tab = (_selected / emojiTabShift), sel = _selected % emojiTabShift; + if (sel < _emojis[tab].size()) { + EmojiPtr emoji(_emojis[tab][sel]); + if (emoji->color && !_picker.isHidden()) return; + + selectEmoji(emoji); + } +} + +void EmojiPanInner::selectEmoji(EmojiPtr emoji) { + RecentEmojiPack &recent(cGetRecentEmojis()); + RecentEmojiPack::iterator i = recent.begin(), e = recent.end(); + for (; i != e; ++i) { + if (i->first == emoji) { + ++i->second; + if (i->second > 0x8000) { + for (RecentEmojiPack::iterator j = recent.begin(); j != e; ++j) { + if (j->second > 1) { + j->second /= 2; + } else { + j->second = 1; + } + } + } + for (; i != recent.begin(); --i) { + if ((i - 1)->second > i->second) { + break; + } + qSwap(*i, *(i - 1)); + } + break; + } + } + if (i == e) { + while (recent.size() >= EmojiPadPerRow * EmojiPadRowsPerPage) recent.pop_back(); + recent.push_back(qMakePair(emoji, 1)); + for (i = recent.end() - 1; i != recent.begin(); --i) { + if ((i - 1)->second > i->second) { + break; + } + qSwap(*i, *(i - 1)); + } + } + _saveConfigTimer.start(SaveRecentEmojisTimeout); + + emit emojiSelected(emoji); +} + +void EmojiPanInner::onSaveConfig() { + Local::writeUserSettings(); +} + +void EmojiPanInner::onShowPicker() { + int tab = (_pickerSel / emojiTabShift), sel = _pickerSel % emojiTabShift; + if (tab < emojiTabCount && sel < _emojis[tab].size() && _emojis[tab][sel]->color) { + int32 y = 0; + for (int c = 0; c <= tab; ++c) { + int32 size = (c == tab) ? (sel - (sel % EmojiPadPerRow)) : _counts[c], rows = (size / EmojiPadPerRow) + ((size % EmojiPadPerRow) ? 1 : 0); + y += st::emojiPanHeader + (rows * st::emojiPanSize.height()); + } + y -= _picker.height() - st::emojiPanRound; + if (y < _top) { + y += _picker.height() - st::emojiPanRound + st::emojiPanSize.height() - st::emojiPanRound; + } + int xmax = width() - _picker.width() - st::emojiPanPadding.right(); + _picker.move(qRound(xmax * float64(sel % EmojiPadPerRow) / float64(EmojiPadPerRow - 1)), y); + + _picker.showEmoji(_emojis[tab][sel]->code); + emit disableScroll(true); + } +} + +void EmojiPanInner::onPickerHidden() { + _pickerSel = -1; + update(); + emit disableScroll(false); + + _lastMousePos = QCursor::pos(); + updateSelected(); +} + +void EmojiPanInner::onColorSelected(EmojiPtr emoji) { + if (emoji->color) { + cRefEmojiVariants().insert(emoji->code, emojiKey(emoji)); + } + if (_pickerSel >= 0) { + int tab = (_pickerSel / emojiTabShift), sel = _pickerSel % emojiTabShift; + if (tab >= 0 && tab < emojiTabCount) { + _emojis[tab][sel] = emoji; + update(); + } + } + selectEmoji(emoji); + _picker.hideStart(); +} + +void EmojiPanInner::mouseMoveEvent(QMouseEvent *e) { + _lastMousePos = e->globalPos(); + if (!_picker.isHidden()) { + if (_picker.rect().contains(_picker.mapFromGlobal(_lastMousePos))) { + return _picker.mouseMoveEvent(0); + } else { + _picker.clearSelection(); + } + } + updateSelected(); +} + +void EmojiPanInner::leaveEvent(QEvent *e) { + clearSelection(); +} + +void EmojiPanInner::leaveToChildEvent(QEvent *e) { + clearSelection(); +} + +void EmojiPanInner::enterFromChildEvent(QEvent *e) { + _lastMousePos = QCursor::pos(); + updateSelected(); +} + +void EmojiPanInner::clearSelection(bool fast) { + _lastMousePos = mapToGlobal(QPoint(-10, -10)); + if (fast) { + for (EmojiAnimations::const_iterator i = _emojiAnimations.cbegin(); i != _emojiAnimations.cend(); ++i) { + int index = qAbs(i.key()) - 1, tab = (index / emojiTabShift), sel = index % emojiTabShift; + _hovers[tab][sel] = 0; + } + _emojiAnimations.clear(); + _selected = _pressedSel = -1; + anim::stop(this); + } else { + updateSelected(); + } +} + +DBIEmojiTab EmojiPanInner::currentTab(int yOffset) const { + int y, ytill = 0; + for (int c = 0; c < emojiTabCount; ++c) { + int cnt = _counts[c]; + y = ytill; + ytill = y + st::emojiPanHeader + ((cnt / EmojiPadPerRow) + ((cnt % EmojiPadPerRow) ? 1 : 0)) * st::emojiPanSize.height(); + if (yOffset < ytill) { + return emojiTabAtIndex(c); + } + } + return dbietStickers; +} + +void EmojiPanInner::refreshStickers() { + clearSelection(true); + int32 cnt = cRecentStickers().size(); + _hovers[emojiTabCount] = QVector(cnt * 2, 0); + _stickers.resize(cnt); + _isUserGen.resize(cnt); + for (int32 i = 0; i < cnt; ++i) { + _stickers[i] = cRecentStickers().at(i).first; + _isUserGen[i] = (cRecentStickers().at(i).second < 0); + } + int32 h = countHeight(); + if (h != height()) resize(width(), h); +} + +void EmojiPanInner::hideFinish() { + if (!_picker.isHidden()) { + _picker.hideStart(true); + _pickerSel = -1; + } +} + +void EmojiPanInner::refreshRecent() { + clearSelection(true); + _count -= _counts[0]; + _counts[0] = emojiPackCount(dbietRecent); + _count += _counts[0]; + if (_hovers[0].size() != _counts[0]) _hovers[0] = QVector(_counts[0], 0); + _emojis[0] = emojiPack(dbietRecent); + int32 h = countHeight(); + if (h != height()) resize(width(), h); +} + +void EmojiPanInner::updateSelected() { + if (_pressedSel >= 0 || _pickerSel >= 0) return; + + int32 selIndex = -1; + QPoint p(mapFromGlobal(_lastMousePos)); + + int y, ytill = 0; + for (int c = 0; c < emojiTabCount; ++c) { + int cnt = _counts[c]; + y = ytill; + ytill = y + st::emojiPanHeader + ((cnt / EmojiPadPerRow) + ((cnt % EmojiPadPerRow) ? 1 : 0)) * st::emojiPanSize.height(); + if (p.y() >= y && p.y() < ytill) { + y += st::emojiPanHeader; + if (p.y() >= y && p.x() >= 0 && p.x() < EmojiPadPerRow * st::emojiPanSize.width()) { + selIndex = qFloor((p.y() - y) / st::emojiPanSize.height()) * EmojiPadPerRow + qFloor(p.x() / st::emojiPanSize.width()); + if (selIndex >= _emojis[c].size()) { + selIndex = -1; + } else { + selIndex += c * emojiTabShift; + } + } + break; + } + } + ytill += st::emojiPanHeader; + if (p.y() >= ytill) { + float64 stickerWidth = width() / float64(StickerPadPerRow); + int32 stickerSize = int32(stickerWidth); + if (p.x() >= 0 && p.x() < StickerPadPerRow * stickerWidth) { + selIndex = qFloor((p.y() - ytill) / stickerSize) * StickerPadPerRow + qFloor(p.x() / stickerWidth); + if (selIndex >= _stickers.size()) { + selIndex = -1; + } else { + int32 inx = p.x() - (selIndex % StickerPadPerRow) * stickerWidth, iny = p.y() - ytill - ((selIndex / StickerPadPerRow) * stickerSize); + if (inx >= stickerWidth - st::stickerPanDelete.pxWidth() && iny < st::stickerPanDelete.pxHeight()) { + selIndex = _stickers.size() + selIndex; + } + selIndex += emojiTabCount * emojiTabShift; + } + } + + } + + bool startanim = false; + int oldSel = _selected, xOldSel = -1, newSel = selIndex, xNewSel = -1; + if (oldSel >= emojiTabCount * emojiTabShift + _stickers.size()) { + xOldSel = oldSel; + oldSel -= _stickers.size(); + } + if (newSel >= emojiTabCount * emojiTabShift + _stickers.size()) { + xNewSel = newSel; + newSel -= _stickers.size(); + } + if (newSel != oldSel) { + if (oldSel >= 0) { + _emojiAnimations.remove(oldSel + 1); + if (_emojiAnimations.find(-oldSel - 1) == _emojiAnimations.end()) { + if (_emojiAnimations.isEmpty()) startanim = true; + _emojiAnimations.insert(-oldSel - 1, getms()); + } + } + if (newSel >= 0) { + _emojiAnimations.remove(-newSel - 1); + if (_emojiAnimations.find(newSel + 1) == _emojiAnimations.end()) { + if (_emojiAnimations.isEmpty()) startanim = true; + _emojiAnimations.insert(newSel + 1, getms()); + } + } + setCursor((newSel >= 0) ? style::cur_pointer : style::cur_default); + if (newSel >= 0 && !_picker.isHidden()) { + if (newSel != _pickerSel) { + _picker.hideStart(); + } else { + _picker.showStart(); + } + } + } + if (xNewSel != xOldSel) { + if (xOldSel >= 0) { + _emojiAnimations.remove(xOldSel + 1); + if (_emojiAnimations.find(-xOldSel - 1) == _emojiAnimations.end()) { + if (_emojiAnimations.isEmpty()) startanim = true; + _emojiAnimations.insert(-xOldSel - 1, getms()); + } + } + if (xNewSel >= 0) { + _emojiAnimations.remove(-xNewSel - 1); + if (_emojiAnimations.find(xNewSel + 1) == _emojiAnimations.end()) { + if (_emojiAnimations.isEmpty()) startanim = true; + _emojiAnimations.insert(xNewSel + 1, getms()); + } + } + } + _selected = selIndex; if (startanim) anim::start(this); } bool EmojiPanInner::animStep(float64 ms) { uint64 now = getms(); for (EmojiAnimations::iterator i = _emojiAnimations.begin(); i != _emojiAnimations.end();) { + int index = qAbs(i.key()) - 1, tab = (index / emojiTabShift), sel = index % emojiTabShift; float64 dt = float64(now - i.value()) / st::emojiPanDuration; if (dt >= 1) { - _hovers[qAbs(i.key()) - 1] = (i.key() > 0) ? 1 : 0; + _hovers[tab][sel] = (i.key() > 0) ? 1 : 0; i = _emojiAnimations.erase(i); } else { - _hovers[qAbs(i.key()) - 1] = (i.key() > 0) ? dt : (1 - dt); + _hovers[tab][sel] = (i.key() > 0) ? dt : (1 - dt); ++i; } } @@ -717,96 +1280,79 @@ bool EmojiPanInner::animStep(float64 ms) { } void EmojiPanInner::showEmojiPack(DBIEmojiTab packIndex) { - _tab = packIndex; - int32 h, size; - if (packIndex == dbietStickers) { - _emojis.clear(); + clearSelection(true); - float64 stickerWidth = width() / float64(StickerPadPerRow); - int32 stickerSize = int32(stickerWidth); + refreshRecent(); - int32 l = cRecentStickers().size(); - _stickers.resize(l); - _isUserGen.resize(l); - for (int32 i = 0; i < l; ++i) { - DocumentData *sticker = _stickers[i] = cRecentStickers().at(i).first; - _isUserGen[i] = (cRecentStickers().at(i).second < 0); - if (i < StickerPadPerRow * ((EmojiPadRowsPerPage * st::emojiPanSize.height() - int(st::emojiPanSub)) / stickerSize + 1)) { - bool already = !sticker->already().isEmpty(), hasdata = !sticker->data.isEmpty(); - if (!sticker->loader && sticker->status != FileFailed && !already && !hasdata) { - sticker->save(QString()); - } - } - } - - size = _stickers.size(); - h = ((size / StickerPadPerRow) + ((size % StickerPadPerRow) ? 1 : 0)) * stickerSize; - _hovers = QVector(size * 2, 0); - } else { - _emojis = emojiPack(packIndex); - _stickers.clear(); - _isUserGen.clear(); - - size = _emojis.size(); - h = ((size / EmojiPadPerRow) + ((size % EmojiPadPerRow) ? 1 : 0)) * st::emojiPanSize.height(); - _hovers = QVector(size, 0); + int32 y = 0; + for (int c = 0; c < emojiTabCount; ++c) { + if (emojiTabAtIndex(c) == packIndex) break; + int rows = (_counts[c] / EmojiPadPerRow) + ((_counts[c] % EmojiPadPerRow) ? 1 : 0); + y += st::emojiPanHeader + rows * st::emojiPanSize.height(); } - h = qMax(h, EmojiPadRowsPerPage * st::emojiPanSize.height() - int(st::emojiPanSub)); - _emojiAnimations.clear(); - _selected = _pressedSel = -1; - resize(width(), h); + + emit scrollToY(y); + _lastMousePos = QCursor::pos(); - updateSelected(); + update(); } EmojiPan::EmojiPan(QWidget *parent) : TWidget(parent), -_hiding(false), a_opacity(0), _shadow(st::dropdownDef.shadow), -_recent (this, qsl("emoji_group"), dbietRecent , QString(), cEmojiTab() == dbietRecent , st::rbEmojiRecent), -_people (this, qsl("emoji_group"), dbietPeople , QString(), cEmojiTab() == dbietPeople , st::rbEmojiPeople), -_nature (this, qsl("emoji_group"), dbietNature , QString(), cEmojiTab() == dbietNature , st::rbEmojiNature), -_objects (this, qsl("emoji_group"), dbietObjects , QString(), cEmojiTab() == dbietObjects , st::rbEmojiObjects), -_places (this, qsl("emoji_group"), dbietPlaces , QString(), cEmojiTab() == dbietPlaces , st::rbEmojiPlaces), -_symbols (this, qsl("emoji_group"), dbietSymbols , QString(), cEmojiTab() == dbietSymbols , st::rbEmojiSymbols), -_stickers(this, qsl("emoji_group"), dbietStickers, QString(), cEmojiTab() == dbietStickers, st::rbEmojiStickers), +_noTabUpdate(false), _hiding(false), a_opacity(0), _shadow(st::dropdownDef.shadow), +_recent(this , qsl("emoji_group"), dbietRecent , QString(), true , st::rbEmojiRecent), +_people(this , qsl("emoji_group"), dbietPeople , QString(), false, st::rbEmojiPeople), +_nature(this , qsl("emoji_group"), dbietNature , QString(), false, st::rbEmojiNature), +_food(this , qsl("emoji_group"), dbietFood , QString(), false, st::rbEmojiFood), +_celebration(this, qsl("emoji_group"), dbietCelebration, QString(), false, st::rbEmojiCelebration), +_activity(this , qsl("emoji_group"), dbietActivity , QString(), false, st::rbEmojiActivity), +_travel(this , qsl("emoji_group"), dbietTravel , QString(), false, st::rbEmojiTravel), +_objects(this , qsl("emoji_group"), dbietObjects , QString(), false, st::rbEmojiObjects), +_stickers(this , qsl("emoji_group"), dbietStickers , QString(), false, st::rbEmojiStickers), _scroll(this, st::emojiScroll), _inner() { setFocusPolicy(Qt::NoFocus); _scroll.setFocusPolicy(Qt::NoFocus); _scroll.viewport()->setFocusPolicy(Qt::NoFocus); - if (cEmojiTab() != dbietStickers) { - _inner.showEmojiPack(cEmojiTab()); - } - - _scroll.setGeometry(st::dropdownDef.padding.left() + st::emojiPanPadding.left(), st::dropdownDef.padding.top() + _recent.height() + st::emojiPanPadding.top(), st::emojiPanPadding.left() + _inner.width() + st::emojiPanPadding.right(), EmojiPadRowsPerPage * st::emojiPanSize.height() - st::emojiPanSub); + _scroll.setGeometry(st::dropdownDef.padding.left() + st::emojiPanPadding.left(), st::dropdownDef.padding.top() + _recent.height() + st::emojiPanPadding.top(), st::emojiPanPadding.left() + _inner.width() + st::emojiPanPadding.right(), EmojiPadRowsPerPage * st::emojiPanSize.height() + st::emojiPanHeader); _scroll.setWidget(&_inner); + _inner.setAttribute(Qt::WA_OpaquePaintEvent); + _scroll.setAutoFillBackground(true); + _width = st::dropdownDef.padding.left() + st::emojiPanPadding.left() + _scroll.width() + st::emojiPanPadding.right() + st::dropdownDef.padding.right(); _height = st::dropdownDef.padding.top() + _recent.height() + st::emojiPanPadding.top() + _scroll.height() + st::emojiPanPadding.bottom() + st::dropdownDef.padding.bottom(); resize(_width, _height); - int32 left = st::dropdownDef.padding.left() + (_width - st::dropdownDef.padding.left() - st::dropdownDef.padding.right() - 7 * _recent.width()) / 2; + int32 left = st::dropdownDef.padding.left() + (_width - st::dropdownDef.padding.left() - st::dropdownDef.padding.right() - 9 * _recent.width()) / 2; int32 top = st::dropdownDef.padding.top(); - _recent.move(left, top); left += _recent.width(); - _people.move(left, top); left += _people.width(); - _nature.move(left, top); left += _nature.width(); - _objects.move(left, top); left += _objects.width(); - _places.move(left, top); left += _places.width(); - _symbols.move(left, top); left += _symbols.width(); - _stickers.move(left, top); left += _stickers.width(); + _recent.move(left , top); left += _recent.width(); + _people.move(left , top); left += _people.width(); + _nature.move(left , top); left += _nature.width(); + _food.move(left , top); left += _food.width(); + _celebration.move(left, top); left += _celebration.width(); + _activity.move(left , top); left += _activity.width(); + _travel.move(left , top); left += _travel.width(); + _objects.move(left , top); left += _objects.width(); + _stickers.move(left , top); left += _stickers.width(); _hideTimer.setSingleShot(true); connect(&_hideTimer, SIGNAL(timeout()), this, SLOT(hideStart())); - connect(&_recent , SIGNAL(changed()), this, SLOT(onTabChange())); - connect(&_people , SIGNAL(changed()), this, SLOT(onTabChange())); - connect(&_nature , SIGNAL(changed()), this, SLOT(onTabChange())); - connect(&_objects , SIGNAL(changed()), this, SLOT(onTabChange())); - connect(&_places , SIGNAL(changed()), this, SLOT(onTabChange())); - connect(&_symbols , SIGNAL(changed()), this, SLOT(onTabChange())); - connect(&_stickers, SIGNAL(changed()), this, SLOT(onTabChange())); + connect(&_inner, SIGNAL(scrollToY(int)), &_scroll, SLOT(scrollToY(int))); + connect(&_inner, SIGNAL(disableScroll(bool)), &_scroll, SLOT(disableScroll(bool))); - connect(&_scroll, SIGNAL(scrolled()), &_inner, SLOT(updateSelected())); + connect(&_recent , SIGNAL(changed()), this, SLOT(onTabChange())); + connect(&_people , SIGNAL(changed()), this, SLOT(onTabChange())); + connect(&_nature , SIGNAL(changed()), this, SLOT(onTabChange())); + connect(&_food , SIGNAL(changed()), this, SLOT(onTabChange())); + connect(&_celebration, SIGNAL(changed()), this, SLOT(onTabChange())); + connect(&_activity , SIGNAL(changed()), this, SLOT(onTabChange())); + connect(&_travel , SIGNAL(changed()), this, SLOT(onTabChange())); + connect(&_objects , SIGNAL(changed()), this, SLOT(onTabChange())); + connect(&_stickers , SIGNAL(changed()), this, SLOT(onTabChange())); + + connect(&_scroll, SIGNAL(scrolled()), this, SLOT(onScroll())); connect(&_inner, SIGNAL(emojiSelected(EmojiPtr)), this, SIGNAL(emojiSelected(EmojiPtr))); connect(&_inner, SIGNAL(stickerSelected(DocumentData*)), this, SIGNAL(stickerSelected(DocumentData*))); @@ -831,11 +1377,13 @@ void EmojiPan::paintEvent(QPaintEvent *e) { QRect r(st::dropdownDef.padding.left(), st::dropdownDef.padding.top(), _width - st::dropdownDef.padding.left() - st::dropdownDef.padding.right(), _height - st::dropdownDef.padding.top() - st::dropdownDef.padding.bottom()); - // draw shadow _shadow.paint(p, r); if (_cache.isNull()) { - p.fillRect(r, st::white->b); + p.fillRect(r.left(), r.top(), r.width(), _scroll.y() - r.top(), st::white->b); + p.fillRect(r.left(), _scroll.y(), _scroll.x() - r.left(), _scroll.height(), st::white->b); + p.fillRect(_scroll.x() + _scroll.width(), _scroll.y(), r.left() + r.width() - _scroll.x() - _scroll.width(), _scroll.height(), st::white->b); + p.fillRect(r.left(), _scroll.y() + _scroll.height(), r.width(), r.top() + r.height() - _scroll.y() - _scroll.height(), st::white->b); } else { p.drawPixmap(r.left(), r.top(), _cache); } @@ -877,6 +1425,10 @@ void EmojiPan::fastHide() { _cache = QPixmap(); } +void EmojiPan::refreshStickers() { + _inner.refreshStickers(); +} + bool EmojiPan::animStep(float64 ms) { float64 dt = ms / st::dropdownDef.duration; bool res = true; @@ -909,6 +1461,7 @@ void EmojiPan::hideStart() { void EmojiPan::hideFinish() { hide(); + _inner.hideFinish(); _cache = QPixmap(); _recent.setChecked(true); } @@ -917,6 +1470,9 @@ void EmojiPan::showStart() { if (!isHidden() && a_opacity.current() == 1) { return; } + if (isHidden()) { + _inner.refreshRecent(); + } if (_cache.isNull()) { showAll(); _cache = myGrab(this, rect().marginsRemoved(st::dropdownDef.padding)); @@ -926,7 +1482,7 @@ void EmojiPan::showStart() { show(); a_opacity.start(1); anim::start(this); - if (_stickers.checked()) emit updateStickers(); + emit updateStickers(); } bool EmojiPan::eventFilter(QObject *obj, QEvent *e) { @@ -956,9 +1512,11 @@ void EmojiPan::showAll() { _recent.show(); _people.show(); _nature.show(); + _food.show(); + _celebration.show(); + _activity.show(); + _travel.show(); _objects.show(); - _places.show(); - _symbols.show(); _stickers.show(); _scroll.show(); } @@ -967,31 +1525,51 @@ void EmojiPan::hideAll() { _recent.hide(); _people.hide(); _nature.hide(); + _food.hide(); + _celebration.hide(); + _activity.hide(); + _travel.hide(); _objects.hide(); - _places.hide(); - _symbols.hide(); _stickers.hide(); _scroll.hide(); _inner.clearSelection(true); } void EmojiPan::onTabChange() { + if (_noTabUpdate) return; DBIEmojiTab newTab = dbietRecent; if (_people.checked()) newTab = dbietPeople; else if (_nature.checked()) newTab = dbietNature; + else if (_food.checked()) newTab = dbietFood; + else if (_celebration.checked()) newTab = dbietCelebration; + else if (_activity.checked()) newTab = dbietActivity; + else if (_travel.checked()) newTab = dbietTravel; else if (_objects.checked()) newTab = dbietObjects; - else if (_places.checked()) newTab = dbietPlaces; - else if (_symbols.checked()) newTab = dbietSymbols; else if (_stickers.checked()) newTab = dbietStickers; - if (newTab != cEmojiTab()) { - cSetEmojiTab(newTab); - Local::writeUserSettings(); - _scroll.scrollToY(0); - } _inner.showEmojiPack(newTab); - if (newTab == dbietStickers) { - emit updateStickers(); +} + +void EmojiPan::onScroll() { + int top = _scroll.scrollTop(); + DBIEmojiTab tab = _inner.currentTab(top); + FlatRadiobutton *check = 0; + switch (tab) { + case dbietRecent : check = &_recent ; break; + case dbietPeople : check = &_people ; break; + case dbietNature : check = &_nature ; break; + case dbietFood : check = &_food ; break; + case dbietCelebration: check = &_celebration; break; + case dbietActivity : check = &_activity ; break; + case dbietTravel : check = &_travel ; break; + case dbietObjects : check = &_objects ; break; + case dbietStickers : check = &_stickers ; break; } + if (check && !check->checked()) { + _noTabUpdate = true; + check->setChecked(true); + _noTabUpdate = false; + } + _inner.setScrollTop(top); } MentionsInner::MentionsInner(MentionsDropdown *parent, MentionRows *rows, HashtagRows *hrows) : _parent(parent), _rows(rows), _hrows(hrows), _sel(-1), _mouseSel(false), _overDelete(false) { diff --git a/Telegram/SourceFiles/dropdown.h b/Telegram/SourceFiles/dropdown.h index e3b41b4c6..3b1f78371 100644 --- a/Telegram/SourceFiles/dropdown.h +++ b/Telegram/SourceFiles/dropdown.h @@ -132,7 +132,68 @@ private: }; -class EmojiPanInner : public QWidget, public Animated { +static const int EmojiColorsCount = 5; + +class EmojiColorPicker : public TWidget, public Animated { + Q_OBJECT + +public: + + EmojiColorPicker(QWidget *parent); + + void showEmoji(uint32 code); + + void paintEvent(QPaintEvent *e); + void enterEvent(QEvent *e); + void leaveEvent(QEvent *e); + void mousePressEvent(QMouseEvent *e); + void mouseReleaseEvent(QMouseEvent *e); + void mouseMoveEvent(QMouseEvent *e); + + bool animStep(float64 ms); + void showStart(); + + void clearSelection(bool fast = false); + +public slots: + + void hideStart(bool fast = false); + +signals: + + void emojiSelected(EmojiPtr emoji); + void hidden(); + +private: + + void drawVariant(Painter &p, int variant); + + void updateSelected(); + + bool _ignoreShow; + + EmojiPtr _variants[EmojiColorsCount + 1]; + + typedef QMap EmojiAnimations; // index - showing, -index - hiding + EmojiAnimations _emojiAnimations; + + float64 _hovers[EmojiColorsCount + 1]; + + int32 _selected, _pressedSel; + QPoint _lastMousePos; + + bool _hiding; + QPixmap _cache; + + anim::fvalue a_opacity; + + QTimer _hideTimer; + + BoxShadow _shadow; + +}; + +class EmojiPanInner : public TWidget, public Animated { Q_OBJECT public: @@ -145,39 +206,67 @@ public: void mouseReleaseEvent(QMouseEvent *e); void mouseMoveEvent(QMouseEvent *e); void leaveEvent(QEvent *e); + void leaveToChildEvent(QEvent *e); + void enterFromChildEvent(QEvent *e); bool animStep(float64 ms); + void hideFinish(); void showEmojiPack(DBIEmojiTab packIndex); void clearSelection(bool fast = false); + + DBIEmojiTab currentTab(int yOffset) const; + + void refreshStickers(); + void refreshRecent(); + + void setScrollTop(int top); public slots: void updateSelected(); void onSaveConfig(); + void onShowPicker(); + void onPickerHidden(); + void onColorSelected(EmojiPtr emoji); + signals: void emojiSelected(EmojiPtr emoji); void stickerSelected(DocumentData *sticker); + void scrollToY(int y); + void disableScroll(bool dis); + private: + int countHeight(); + void selectEmoji(EmojiPtr emoji); + typedef QMap EmojiAnimations; // index - showing, -index - hiding EmojiAnimations _emojiAnimations; + int _top; + int _counts[emojiTabCount], _count; + StickerPack _stickers; QVector _isUserGen; - QVector _emojis; - QVector _hovers; + QVector _emojis[emojiTabCount]; + QVector _hovers[emojiTabCount + 1]; // + stickers hovers and stickers-x hovers - DBIEmojiTab _tab; - int32 _selected, _xSelected, _pressedSel, _xPressedSel; + float64 _stickerWidth; + int32 _esize, _stickerSize; + + int32 _selected, _pressedSel, _pickerSel; QPoint _lastMousePos; QTimer _saveConfigTimer; + EmojiColorPicker _picker; + QTimer _showPickerTimer; + }; class EmojiPan : public TWidget, public Animated { @@ -203,6 +292,8 @@ public: bool eventFilter(QObject *obj, QEvent *e); + void refreshStickers(); + public slots: void hideStart(); @@ -212,6 +303,7 @@ public slots: void onWndActiveChanged(); void onTabChange(); + void onScroll(); signals: @@ -224,6 +316,8 @@ private: void showAll(); void hideAll(); + bool _noTabUpdate; + int32 _width, _height; bool _hiding; QPixmap _cache; @@ -234,7 +328,7 @@ private: BoxShadow _shadow; - FlatRadiobutton _recent, _people, _nature, _objects, _places, _symbols, _stickers; + FlatRadiobutton _recent, _people, _nature, _food, _celebration, _activity, _travel, _objects, _stickers; int32 _emojiPack; ScrollArea _scroll; diff --git a/Telegram/SourceFiles/gui/emoji_config.cpp b/Telegram/SourceFiles/gui/emoji_config.cpp index ea21023f1..9c5e84326 100644 --- a/Telegram/SourceFiles/gui/emoji_config.cpp +++ b/Telegram/SourceFiles/gui/emoji_config.cpp @@ -24,3421 +24,1208 @@ Copyright (c) 2014 John Preston, https://desktop.telegram.org namespace { EmojiData *emojis = 0; - char emojisData[sizeof(EmojiData) * 845]; + char emojisData[sizeof(EmojiData) * 1180]; } -void initEmojiOne() { - EmojiData *toFill = emojis = (EmojiData*)emojisData; - - new (toFill++) EmojiData(108, 342, 0xA9U, 0x0U, 1); - new (toFill++) EmojiData(126, 342, 0xAEU, 0x0U, 1); - new (toFill++) EmojiData(180, 342, 0x203CU, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(198, 342, 0x2049U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(144, 342, 0x2122U, 0x0U, 1); - new (toFill++) EmojiData(540, 288, 0x2139U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(378, 288, 0x2194U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(396, 288, 0x2195U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(324, 288, 0x2196U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(306, 288, 0x2197U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(342, 288, 0x2198U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(360, 288, 0x2199U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(504, 288, 0x21A9U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(522, 288, 0x21AAU, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(612, 144, 0x231AU, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(576, 144, 0x231BU, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(576, 288, 0x23E9U, 0x0U, 1); - new (toFill++) EmojiData(558, 288, 0x23EAU, 0x0U, 1); - new (toFill++) EmojiData(594, 288, 0x23EBU, 0x0U, 1); - new (toFill++) EmojiData(612, 288, 0x23ECU, 0x0U, 1); - new (toFill++) EmojiData(594, 144, 0x23F0U, 0x0U, 1); - new (toFill++) EmojiData(558, 144, 0x23F3U, 0x0U, 1); - new (toFill++) EmojiData(576, 306, 0x24C2U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(522, 360, 0x25AAU, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(540, 360, 0x25ABU, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(450, 288, 0x25B6U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(432, 288, 0x25C0U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(468, 360, 0x25FBU, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(450, 360, 0x25FCU, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(504, 360, 0x25FDU, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(486, 360, 0x25FEU, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(252, 126, 0x2600U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(288, 126, 0x2601U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(288, 144, 0x260EU, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(324, 360, 0x2611U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(324, 126, 0x2614U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(648, 198, 0x2615U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(0, 54, 0x261DU, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(72, 0, 0x263AU, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(504, 324, 0x2648U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(522, 324, 0x2649U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(540, 324, 0x264AU, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(558, 324, 0x264BU, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(576, 324, 0x264CU, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(594, 324, 0x264DU, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(612, 324, 0x264EU, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(630, 324, 0x264FU, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(648, 324, 0x2650U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(666, 324, 0x2651U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(684, 324, 0x2652U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(702, 324, 0x2653U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(198, 360, 0x2660U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(234, 360, 0x2663U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(216, 360, 0x2665U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(252, 360, 0x2666U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(360, 270, 0x2668U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(486, 324, 0x267BU, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(486, 306, 0x267FU, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(198, 252, 0x2693U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(252, 270, 0x26A0U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(306, 126, 0x26A1U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(630, 360, 0x26AAU, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(612, 360, 0x26ABU, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(342, 198, 0x26BDU, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(360, 198, 0x26BEU, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(360, 126, 0x26C4U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(270, 126, 0x26C5U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(0, 342, 0x26CEU, 0x0U, 1); - new (toFill++) EmojiData(198, 324, 0x26D4U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(468, 234, 0x26EAU, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(90, 252, 0x26F2U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(450, 198, 0x26F3U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(144, 252, 0x26F5U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(594, 234, 0x26FAU, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(306, 270, 0x26FDU, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(306, 180, 0x2702U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(270, 324, 0x2705U, 0x0U, 1); - new (toFill++) EmojiData(234, 252, 0x2708U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(594, 162, 0x2709U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(522, 36, 0x270AU, 0x0U, 1); - new (toFill++) EmojiData(576, 36, 0x270BU, 0x0U, 1); - new (toFill++) EmojiData(540, 36, 0x270CU, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(378, 180, 0x270FU, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(360, 180, 0x2712U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(306, 360, 0x2714U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(126, 360, 0x2716U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(198, 36, 0x2728U, 0x0U, 1); - new (toFill++) EmojiData(216, 324, 0x2733U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(288, 324, 0x2734U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(342, 126, 0x2744U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(234, 324, 0x2747U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(162, 342, 0x274CU, 0x0U, 1); - new (toFill++) EmojiData(252, 324, 0x274EU, 0x0U, 1); - new (toFill++) EmojiData(234, 342, 0x2753U, 0x0U, 1); - new (toFill++) EmojiData(270, 342, 0x2754U, 0x0U, 1); - new (toFill++) EmojiData(252, 342, 0x2755U, 0x0U, 1); - new (toFill++) EmojiData(216, 342, 0x2757U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(216, 72, 0x2764U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(144, 360, 0x2795U, 0x0U, 1); - new (toFill++) EmojiData(162, 360, 0x2796U, 0x0U, 1); - new (toFill++) EmojiData(180, 360, 0x2797U, 0x0U, 1); - new (toFill++) EmojiData(234, 288, 0x27A1U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(378, 360, 0x27B0U, 0x0U, 1); - new (toFill++) EmojiData(468, 324, 0x27BFU, 0x0U, 1); - new (toFill++) EmojiData(648, 288, 0x2934U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(630, 288, 0x2935U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(216, 288, 0x2B05U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(180, 288, 0x2B06U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(198, 288, 0x2B07U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(0, 378, 0x2B1BU, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(702, 360, 0x2B1CU, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(234, 126, 0x2B50U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(288, 342, 0x2B55U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(396, 360, 0x3030U, 0x0U, 1); - new (toFill++) EmojiData(414, 360, 0x303DU, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(702, 306, 0x3297U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(684, 306, 0x3299U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(144, 288, 0x2320E3U, 0x0U, 2); - new (toFill++) EmojiData(90, 288, 0x3020E3U, 0x0U, 2); - new (toFill++) EmojiData(648, 270, 0x3120E3U, 0x0U, 2); - new (toFill++) EmojiData(666, 270, 0x3220E3U, 0x0U, 2); - new (toFill++) EmojiData(684, 270, 0x3320E3U, 0x0U, 2); - new (toFill++) EmojiData(702, 270, 0x3420E3U, 0x0U, 2); - new (toFill++) EmojiData(0, 288, 0x3520E3U, 0x0U, 2); - new (toFill++) EmojiData(18, 288, 0x3620E3U, 0x0U, 2); - new (toFill++) EmojiData(36, 288, 0x3720E3U, 0x0U, 2); - new (toFill++) EmojiData(54, 288, 0x3820E3U, 0x0U, 2); - new (toFill++) EmojiData(72, 288, 0x3920E3U, 0x0U, 2); - new (toFill++) EmojiData(252, 198, 0xD83CDC04U, 0x0U, 2, 0xFE0F); - new (toFill++) EmojiData(216, 198, 0xD83CDCCFU, 0x0U, 2); - new (toFill++) EmojiData(378, 324, 0xD83CDD70U, 0x0U, 2); - new (toFill++) EmojiData(396, 324, 0xD83CDD71U, 0x0U, 2); - new (toFill++) EmojiData(432, 324, 0xD83CDD7EU, 0x0U, 2); - new (toFill++) EmojiData(468, 306, 0xD83CDD7FU, 0x0U, 2, 0xFE0F); - new (toFill++) EmojiData(414, 324, 0xD83CDD8EU, 0x0U, 2); - new (toFill++) EmojiData(0, 324, 0xD83CDD91U, 0x0U, 2); - new (toFill++) EmojiData(54, 306, 0xD83CDD92U, 0x0U, 2); - new (toFill++) EmojiData(72, 306, 0xD83CDD93U, 0x0U, 2); - new (toFill++) EmojiData(36, 324, 0xD83CDD94U, 0x0U, 2); - new (toFill++) EmojiData(18, 306, 0xD83CDD95U, 0x0U, 2); - new (toFill++) EmojiData(90, 306, 0xD83CDD96U, 0x0U, 2); - new (toFill++) EmojiData(666, 288, 0xD83CDD97U, 0x0U, 2); - new (toFill++) EmojiData(18, 324, 0xD83CDD98U, 0x0U, 2); - new (toFill++) EmojiData(36, 306, 0xD83CDD99U, 0x0U, 2); - new (toFill++) EmojiData(324, 324, 0xD83CDD9AU, 0x0U, 2); - new (toFill++) EmojiData(522, 270, 0xD83CDDE8U, 0xD83CDDF3U, 4); - new (toFill++) EmojiData(504, 270, 0xD83CDDE9U, 0xD83CDDEAU, 4); - new (toFill++) EmojiData(576, 270, 0xD83CDDEAU, 0xD83CDDF8U, 4); - new (toFill++) EmojiData(558, 270, 0xD83CDDEBU, 0xD83CDDF7U, 4); - new (toFill++) EmojiData(630, 270, 0xD83CDDECU, 0xD83CDDE7U, 4); - new (toFill++) EmojiData(594, 270, 0xD83CDDEEU, 0xD83CDDF9U, 4); - new (toFill++) EmojiData(468, 270, 0xD83CDDEFU, 0xD83CDDF5U, 4); - new (toFill++) EmojiData(486, 270, 0xD83CDDF0U, 0xD83CDDF7U, 4); - new (toFill++) EmojiData(612, 270, 0xD83CDDF7U, 0xD83CDDFAU, 4); - new (toFill++) EmojiData(540, 270, 0xD83CDDFAU, 0xD83CDDF8U, 4); - new (toFill++) EmojiData(144, 306, 0xD83CDE01U, 0x0U, 2); - new (toFill++) EmojiData(558, 306, 0xD83CDE02U, 0x0U, 2); - new (toFill++) EmojiData(324, 306, 0xD83CDE1AU, 0x0U, 2, 0xFE0F); - new (toFill++) EmojiData(162, 306, 0xD83CDE2FU, 0x0U, 2, 0xFE0F); - new (toFill++) EmojiData(234, 306, 0xD83CDE32U, 0x0U, 2); - new (toFill++) EmojiData(180, 306, 0xD83CDE33U, 0x0U, 2); - new (toFill++) EmojiData(216, 306, 0xD83CDE34U, 0x0U, 2); - new (toFill++) EmojiData(198, 306, 0xD83CDE35U, 0x0U, 2); - new (toFill++) EmojiData(306, 306, 0xD83CDE36U, 0x0U, 2); - new (toFill++) EmojiData(522, 306, 0xD83CDE37U, 0x0U, 2); - new (toFill++) EmojiData(540, 306, 0xD83CDE38U, 0x0U, 2); - new (toFill++) EmojiData(270, 306, 0xD83CDE39U, 0x0U, 2); - new (toFill++) EmojiData(288, 306, 0xD83CDE3AU, 0x0U, 2); - new (toFill++) EmojiData(252, 306, 0xD83CDE50U, 0x0U, 2); - new (toFill++) EmojiData(666, 306, 0xD83CDE51U, 0x0U, 2); - new (toFill++) EmojiData(378, 126, 0xD83CDF00U, 0x0U, 2); - new (toFill++) EmojiData(396, 126, 0xD83CDF01U, 0x0U, 2); - new (toFill++) EmojiData(108, 72, 0xD83CDF02U, 0x0U, 2); - new (toFill++) EmojiData(0, 252, 0xD83CDF03U, 0x0U, 2); - new (toFill++) EmojiData(684, 234, 0xD83CDF04U, 0x0U, 2); - new (toFill++) EmojiData(702, 234, 0xD83CDF05U, 0x0U, 2); - new (toFill++) EmojiData(540, 234, 0xD83CDF06U, 0x0U, 2); - new (toFill++) EmojiData(522, 234, 0xD83CDF07U, 0x0U, 2); - new (toFill++) EmojiData(414, 126, 0xD83CDF08U, 0x0U, 2); - new (toFill++) EmojiData(36, 252, 0xD83CDF09U, 0x0U, 2); - new (toFill++) EmojiData(432, 126, 0xD83CDF0AU, 0x0U, 2); - new (toFill++) EmojiData(180, 126, 0xD83CDF0BU, 0x0U, 2); - new (toFill++) EmojiData(198, 126, 0xD83CDF0CU, 0x0U, 2); - new (toFill++) EmojiData(126, 126, 0xD83CDF0DU, 0x0U, 2); - new (toFill++) EmojiData(144, 126, 0xD83CDF0EU, 0x0U, 2); - new (toFill++) EmojiData(162, 126, 0xD83CDF0FU, 0x0U, 2); - new (toFill++) EmojiData(576, 108, 0xD83CDF10U, 0x0U, 2); - new (toFill++) EmojiData(648, 108, 0xD83CDF11U, 0x0U, 2); - new (toFill++) EmojiData(666, 108, 0xD83CDF12U, 0x0U, 2); - new (toFill++) EmojiData(684, 108, 0xD83CDF13U, 0x0U, 2); - new (toFill++) EmojiData(702, 108, 0xD83CDF14U, 0x0U, 2); - new (toFill++) EmojiData(0, 126, 0xD83CDF15U, 0x0U, 2); - new (toFill++) EmojiData(18, 126, 0xD83CDF16U, 0x0U, 2); - new (toFill++) EmojiData(36, 126, 0xD83CDF17U, 0x0U, 2); - new (toFill++) EmojiData(54, 126, 0xD83CDF18U, 0x0U, 2); - new (toFill++) EmojiData(108, 126, 0xD83CDF19U, 0x0U, 2); - new (toFill++) EmojiData(630, 108, 0xD83CDF1AU, 0x0U, 2); - new (toFill++) EmojiData(90, 126, 0xD83CDF1BU, 0x0U, 2); - new (toFill++) EmojiData(72, 126, 0xD83CDF1CU, 0x0U, 2); - new (toFill++) EmojiData(612, 108, 0xD83CDF1DU, 0x0U, 2); - new (toFill++) EmojiData(594, 108, 0xD83CDF1EU, 0x0U, 2); - new (toFill++) EmojiData(216, 36, 0xD83CDF1FU, 0x0U, 2); - new (toFill++) EmojiData(216, 126, 0xD83CDF20U, 0x0U, 2); - new (toFill++) EmojiData(522, 108, 0xD83CDF30U, 0x0U, 2); - new (toFill++) EmojiData(540, 108, 0xD83CDF31U, 0x0U, 2); - new (toFill++) EmojiData(486, 108, 0xD83CDF32U, 0x0U, 2); - new (toFill++) EmojiData(504, 108, 0xD83CDF33U, 0x0U, 2); - new (toFill++) EmojiData(468, 108, 0xD83CDF34U, 0x0U, 2); - new (toFill++) EmojiData(450, 108, 0xD83CDF35U, 0x0U, 2); - new (toFill++) EmojiData(252, 108, 0xD83CDF37U, 0x0U, 2); - new (toFill++) EmojiData(234, 108, 0xD83CDF38U, 0x0U, 2); - new (toFill++) EmojiData(288, 108, 0xD83CDF39U, 0x0U, 2); - new (toFill++) EmojiData(324, 108, 0xD83CDF3AU, 0x0U, 2); - new (toFill++) EmojiData(306, 108, 0xD83CDF3BU, 0x0U, 2); - new (toFill++) EmojiData(558, 108, 0xD83CDF3CU, 0x0U, 2); - new (toFill++) EmojiData(252, 234, 0xD83CDF3DU, 0x0U, 2); - new (toFill++) EmojiData(414, 108, 0xD83CDF3EU, 0x0U, 2); - new (toFill++) EmojiData(396, 108, 0xD83CDF3FU, 0x0U, 2); - new (toFill++) EmojiData(270, 108, 0xD83CDF40U, 0x0U, 2); - new (toFill++) EmojiData(342, 108, 0xD83CDF41U, 0x0U, 2); - new (toFill++) EmojiData(378, 108, 0xD83CDF42U, 0x0U, 2); - new (toFill++) EmojiData(360, 108, 0xD83CDF43U, 0x0U, 2); - new (toFill++) EmojiData(432, 108, 0xD83CDF44U, 0x0U, 2); - new (toFill++) EmojiData(234, 234, 0xD83CDF45U, 0x0U, 2); - new (toFill++) EmojiData(216, 234, 0xD83CDF46U, 0x0U, 2); - new (toFill++) EmojiData(54, 234, 0xD83CDF47U, 0x0U, 2); - new (toFill++) EmojiData(126, 234, 0xD83CDF48U, 0x0U, 2); - new (toFill++) EmojiData(72, 234, 0xD83CDF49U, 0x0U, 2); - new (toFill++) EmojiData(0, 234, 0xD83CDF4AU, 0x0U, 2); - new (toFill++) EmojiData(18, 234, 0xD83CDF4BU, 0x0U, 2); - new (toFill++) EmojiData(144, 234, 0xD83CDF4CU, 0x0U, 2); - new (toFill++) EmojiData(180, 234, 0xD83CDF4DU, 0x0U, 2); - new (toFill++) EmojiData(684, 216, 0xD83CDF4EU, 0x0U, 2); - new (toFill++) EmojiData(702, 216, 0xD83CDF4FU, 0x0U, 2); - new (toFill++) EmojiData(162, 234, 0xD83CDF50U, 0x0U, 2); - new (toFill++) EmojiData(108, 234, 0xD83CDF51U, 0x0U, 2); - new (toFill++) EmojiData(36, 234, 0xD83CDF52U, 0x0U, 2); - new (toFill++) EmojiData(90, 234, 0xD83CDF53U, 0x0U, 2); - new (toFill++) EmojiData(126, 216, 0xD83CDF54U, 0x0U, 2); - new (toFill++) EmojiData(108, 216, 0xD83CDF55U, 0x0U, 2); - new (toFill++) EmojiData(180, 216, 0xD83CDF56U, 0x0U, 2); - new (toFill++) EmojiData(162, 216, 0xD83CDF57U, 0x0U, 2); - new (toFill++) EmojiData(324, 216, 0xD83CDF58U, 0x0U, 2); - new (toFill++) EmojiData(306, 216, 0xD83CDF59U, 0x0U, 2); - new (toFill++) EmojiData(342, 216, 0xD83CDF5AU, 0x0U, 2); - new (toFill++) EmojiData(216, 216, 0xD83CDF5BU, 0x0U, 2); - new (toFill++) EmojiData(360, 216, 0xD83CDF5CU, 0x0U, 2); - new (toFill++) EmojiData(198, 216, 0xD83CDF5DU, 0x0U, 2); - new (toFill++) EmojiData(450, 216, 0xD83CDF5EU, 0x0U, 2); - new (toFill++) EmojiData(144, 216, 0xD83CDF5FU, 0x0U, 2); - new (toFill++) EmojiData(198, 234, 0xD83CDF60U, 0x0U, 2); - new (toFill++) EmojiData(414, 216, 0xD83CDF61U, 0x0U, 2); - new (toFill++) EmojiData(396, 216, 0xD83CDF62U, 0x0U, 2); - new (toFill++) EmojiData(270, 216, 0xD83CDF63U, 0x0U, 2); - new (toFill++) EmojiData(234, 216, 0xD83CDF64U, 0x0U, 2); - new (toFill++) EmojiData(288, 216, 0xD83CDF65U, 0x0U, 2); - new (toFill++) EmojiData(504, 216, 0xD83CDF66U, 0x0U, 2); - new (toFill++) EmojiData(540, 216, 0xD83CDF67U, 0x0U, 2); - new (toFill++) EmojiData(522, 216, 0xD83CDF68U, 0x0U, 2); - new (toFill++) EmojiData(468, 216, 0xD83CDF69U, 0x0U, 2); - new (toFill++) EmojiData(594, 216, 0xD83CDF6AU, 0x0U, 2); - new (toFill++) EmojiData(612, 216, 0xD83CDF6BU, 0x0U, 2); - new (toFill++) EmojiData(630, 216, 0xD83CDF6CU, 0x0U, 2); - new (toFill++) EmojiData(648, 216, 0xD83CDF6DU, 0x0U, 2); - new (toFill++) EmojiData(486, 216, 0xD83CDF6EU, 0x0U, 2); - new (toFill++) EmojiData(666, 216, 0xD83CDF6FU, 0x0U, 2); - new (toFill++) EmojiData(576, 216, 0xD83CDF70U, 0x0U, 2); - new (toFill++) EmojiData(252, 216, 0xD83CDF71U, 0x0U, 2); - new (toFill++) EmojiData(378, 216, 0xD83CDF72U, 0x0U, 2); - new (toFill++) EmojiData(432, 216, 0xD83CDF73U, 0x0U, 2); - new (toFill++) EmojiData(90, 216, 0xD83CDF74U, 0x0U, 2); - new (toFill++) EmojiData(666, 198, 0xD83CDF75U, 0x0U, 2); - new (toFill++) EmojiData(684, 198, 0xD83CDF76U, 0x0U, 2); - new (toFill++) EmojiData(72, 216, 0xD83CDF77U, 0x0U, 2); - new (toFill++) EmojiData(36, 216, 0xD83CDF78U, 0x0U, 2); - new (toFill++) EmojiData(54, 216, 0xD83CDF79U, 0x0U, 2); - new (toFill++) EmojiData(0, 216, 0xD83CDF7AU, 0x0U, 2); - new (toFill++) EmojiData(18, 216, 0xD83CDF7BU, 0x0U, 2); - new (toFill++) EmojiData(702, 198, 0xD83CDF7CU, 0x0U, 2); - new (toFill++) EmojiData(90, 72, 0xD83CDF80U, 0x0U, 2); - new (toFill++) EmojiData(702, 126, 0xD83CDF81U, 0x0U, 2); - new (toFill++) EmojiData(558, 216, 0xD83CDF82U, 0x0U, 2); - new (toFill++) EmojiData(630, 126, 0xD83CDF83U, 0x0U, 2); - new (toFill++) EmojiData(684, 126, 0xD83CDF84U, 0x0U, 2); - new (toFill++) EmojiData(666, 126, 0xD83CDF85U, 0x0U, 2); - new (toFill++) EmojiData(558, 126, 0xD83CDF86U, 0x0U, 2); - new (toFill++) EmojiData(576, 126, 0xD83CDF87U, 0x0U, 2); - new (toFill++) EmojiData(54, 144, 0xD83CDF88U, 0x0U, 2); - new (toFill++) EmojiData(18, 144, 0xD83CDF89U, 0x0U, 2); - new (toFill++) EmojiData(36, 144, 0xD83CDF8AU, 0x0U, 2); - new (toFill++) EmojiData(0, 144, 0xD83CDF8BU, 0x0U, 2); - new (toFill++) EmojiData(72, 144, 0xD83CDF8CU, 0x0U, 2); - new (toFill++) EmojiData(450, 126, 0xD83CDF8DU, 0x0U, 2); - new (toFill++) EmojiData(486, 126, 0xD83CDF8EU, 0x0U, 2); - new (toFill++) EmojiData(540, 126, 0xD83CDF8FU, 0x0U, 2); - new (toFill++) EmojiData(594, 126, 0xD83CDF90U, 0x0U, 2); - new (toFill++) EmojiData(612, 126, 0xD83CDF91U, 0x0U, 2); - new (toFill++) EmojiData(504, 126, 0xD83CDF92U, 0x0U, 2); - new (toFill++) EmojiData(522, 126, 0xD83CDF93U, 0x0U, 2); - new (toFill++) EmojiData(54, 252, 0xD83CDFA0U, 0x0U, 2); - new (toFill++) EmojiData(72, 252, 0xD83CDFA1U, 0x0U, 2); - new (toFill++) EmojiData(108, 252, 0xD83CDFA2U, 0x0U, 2); - new (toFill++) EmojiData(630, 198, 0xD83CDFA3U, 0x0U, 2); - new (toFill++) EmojiData(0, 198, 0xD83CDFA4U, 0x0U, 2); - new (toFill++) EmojiData(108, 144, 0xD83CDFA5U, 0x0U, 2); - new (toFill++) EmojiData(126, 306, 0xD83CDFA6U, 0x0U, 2); - new (toFill++) EmojiData(18, 198, 0xD83CDFA7U, 0x0U, 2); - new (toFill++) EmojiData(684, 180, 0xD83CDFA8U, 0x0U, 2); - new (toFill++) EmojiData(432, 54, 0xD83CDFA9U, 0x0U, 2); - new (toFill++) EmojiData(396, 270, 0xD83CDFAAU, 0x0U, 2); - new (toFill++) EmojiData(198, 270, 0xD83CDFABU, 0x0U, 2); - new (toFill++) EmojiData(702, 180, 0xD83CDFACU, 0x0U, 2); - new (toFill++) EmojiData(414, 270, 0xD83CDFADU, 0x0U, 2); - new (toFill++) EmojiData(198, 198, 0xD83CDFAEU, 0x0U, 2); - new (toFill++) EmojiData(288, 198, 0xD83CDFAFU, 0x0U, 2); - new (toFill++) EmojiData(342, 270, 0xD83CDFB0U, 0x0U, 2); - new (toFill++) EmojiData(396, 198, 0xD83CDFB1U, 0x0U, 2); - new (toFill++) EmojiData(270, 198, 0xD83CDFB2U, 0x0U, 2); - new (toFill++) EmojiData(432, 198, 0xD83CDFB3U, 0x0U, 2); - new (toFill++) EmojiData(234, 198, 0xD83CDFB4U, 0x0U, 2); - new (toFill++) EmojiData(54, 198, 0xD83CDFB5U, 0x0U, 2); - new (toFill++) EmojiData(72, 198, 0xD83CDFB6U, 0x0U, 2); - new (toFill++) EmojiData(144, 198, 0xD83CDFB7U, 0x0U, 2); - new (toFill++) EmojiData(162, 198, 0xD83CDFB8U, 0x0U, 2); - new (toFill++) EmojiData(90, 198, 0xD83CDFB9U, 0x0U, 2); - new (toFill++) EmojiData(126, 198, 0xD83CDFBAU, 0x0U, 2); - new (toFill++) EmojiData(108, 198, 0xD83CDFBBU, 0x0U, 2); - new (toFill++) EmojiData(36, 198, 0xD83CDFBCU, 0x0U, 2); - new (toFill++) EmojiData(648, 54, 0xD83CDFBDU, 0x0U, 2); - new (toFill++) EmojiData(378, 198, 0xD83CDFBEU, 0x0U, 2); - new (toFill++) EmojiData(558, 198, 0xD83CDFBFU, 0x0U, 2); - new (toFill++) EmojiData(324, 198, 0xD83CDFC0U, 0x0U, 2); - new (toFill++) EmojiData(504, 198, 0xD83CDFC1U, 0x0U, 2); - new (toFill++) EmojiData(576, 198, 0xD83CDFC2U, 0x0U, 2); - new (toFill++) EmojiData(72, 54, 0xD83CDFC3U, 0x0U, 2); - new (toFill++) EmojiData(612, 198, 0xD83CDFC4U, 0x0U, 2); - new (toFill++) EmojiData(540, 198, 0xD83CDFC6U, 0x0U, 2); - new (toFill++) EmojiData(522, 198, 0xD83CDFC7U, 0x0U, 2); - new (toFill++) EmojiData(306, 198, 0xD83CDFC8U, 0x0U, 2); - new (toFill++) EmojiData(414, 198, 0xD83CDFC9U, 0x0U, 2); - new (toFill++) EmojiData(594, 198, 0xD83CDFCAU, 0x0U, 2); - new (toFill++) EmojiData(270, 234, 0xD83CDFE0U, 0x0U, 2); - new (toFill++) EmojiData(288, 234, 0xD83CDFE1U, 0x0U, 2); - new (toFill++) EmojiData(324, 234, 0xD83CDFE2U, 0x0U, 2); - new (toFill++) EmojiData(342, 234, 0xD83CDFE3U, 0x0U, 2); - new (toFill++) EmojiData(504, 234, 0xD83CDFE4U, 0x0U, 2); - new (toFill++) EmojiData(360, 234, 0xD83CDFE5U, 0x0U, 2); - new (toFill++) EmojiData(378, 234, 0xD83CDFE6U, 0x0U, 2); - new (toFill++) EmojiData(36, 342, 0xD83CDFE7U, 0x0U, 2); - new (toFill++) EmojiData(432, 234, 0xD83CDFE8U, 0x0U, 2); - new (toFill++) EmojiData(414, 234, 0xD83CDFE9U, 0x0U, 2); - new (toFill++) EmojiData(396, 234, 0xD83CDFEAU, 0x0U, 2); - new (toFill++) EmojiData(306, 234, 0xD83CDFEBU, 0x0U, 2); - new (toFill++) EmojiData(486, 234, 0xD83CDFECU, 0x0U, 2); - new (toFill++) EmojiData(612, 234, 0xD83CDFEDU, 0x0U, 2); - new (toFill++) EmojiData(324, 270, 0xD83CDFEEU, 0x0U, 2); - new (toFill++) EmojiData(558, 234, 0xD83CDFEFU, 0x0U, 2); - new (toFill++) EmojiData(576, 234, 0xD83CDFF0U, 0x0U, 2); - new (toFill++) EmojiData(558, 90, 0xD83DDC00U, 0x0U, 2); - new (toFill++) EmojiData(18, 108, 0xD83DDC01U, 0x0U, 2); - new (toFill++) EmojiData(36, 108, 0xD83DDC02U, 0x0U, 2); - new (toFill++) EmojiData(576, 90, 0xD83DDC03U, 0x0U, 2); - new (toFill++) EmojiData(522, 90, 0xD83DDC04U, 0x0U, 2); - new (toFill++) EmojiData(594, 90, 0xD83DDC05U, 0x0U, 2); - new (toFill++) EmojiData(144, 108, 0xD83DDC06U, 0x0U, 2); - new (toFill++) EmojiData(612, 90, 0xD83DDC07U, 0x0U, 2); - new (toFill++) EmojiData(162, 108, 0xD83DDC08U, 0x0U, 2); - new (toFill++) EmojiData(630, 90, 0xD83DDC09U, 0x0U, 2); - new (toFill++) EmojiData(90, 108, 0xD83DDC0AU, 0x0U, 2); - new (toFill++) EmojiData(504, 90, 0xD83DDC0BU, 0x0U, 2); - new (toFill++) EmojiData(378, 90, 0xD83DDC0CU, 0x0U, 2); - new (toFill++) EmojiData(270, 90, 0xD83DDC0DU, 0x0U, 2); - new (toFill++) EmojiData(648, 90, 0xD83DDC0EU, 0x0U, 2); - new (toFill++) EmojiData(540, 90, 0xD83DDC0FU, 0x0U, 2); - new (toFill++) EmojiData(666, 90, 0xD83DDC10U, 0x0U, 2); - new (toFill++) EmojiData(108, 90, 0xD83DDC11U, 0x0U, 2); - new (toFill++) EmojiData(72, 90, 0xD83DDC12U, 0x0U, 2); - new (toFill++) EmojiData(684, 90, 0xD83DDC13U, 0x0U, 2); - new (toFill++) EmojiData(252, 90, 0xD83DDC14U, 0x0U, 2); - new (toFill++) EmojiData(702, 90, 0xD83DDC15U, 0x0U, 2); - new (toFill++) EmojiData(0, 108, 0xD83DDC16U, 0x0U, 2); - new (toFill++) EmojiData(36, 90, 0xD83DDC17U, 0x0U, 2); - new (toFill++) EmojiData(126, 90, 0xD83DDC18U, 0x0U, 2); - new (toFill++) EmojiData(396, 90, 0xD83DDC19U, 0x0U, 2); - new (toFill++) EmojiData(414, 90, 0xD83DDC1AU, 0x0U, 2); - new (toFill++) EmojiData(306, 90, 0xD83DDC1BU, 0x0U, 2); - new (toFill++) EmojiData(342, 90, 0xD83DDC1CU, 0x0U, 2); - new (toFill++) EmojiData(324, 90, 0xD83DDC1DU, 0x0U, 2); - new (toFill++) EmojiData(360, 90, 0xD83DDC1EU, 0x0U, 2); - new (toFill++) EmojiData(450, 90, 0xD83DDC1FU, 0x0U, 2); - new (toFill++) EmojiData(432, 90, 0xD83DDC20U, 0x0U, 2); - new (toFill++) EmojiData(72, 108, 0xD83DDC21U, 0x0U, 2); - new (toFill++) EmojiData(288, 90, 0xD83DDC22U, 0x0U, 2); - new (toFill++) EmojiData(234, 90, 0xD83DDC23U, 0x0U, 2); - new (toFill++) EmojiData(198, 90, 0xD83DDC24U, 0x0U, 2); - new (toFill++) EmojiData(216, 90, 0xD83DDC25U, 0x0U, 2); - new (toFill++) EmojiData(180, 90, 0xD83DDC26U, 0x0U, 2); - new (toFill++) EmojiData(162, 90, 0xD83DDC27U, 0x0U, 2); - new (toFill++) EmojiData(666, 72, 0xD83DDC28U, 0x0U, 2); - new (toFill++) EmojiData(180, 108, 0xD83DDC29U, 0x0U, 2); - new (toFill++) EmojiData(126, 108, 0xD83DDC2AU, 0x0U, 2); - new (toFill++) EmojiData(108, 108, 0xD83DDC2BU, 0x0U, 2); - new (toFill++) EmojiData(468, 90, 0xD83DDC2CU, 0x0U, 2); - new (toFill++) EmojiData(576, 72, 0xD83DDC2DU, 0x0U, 2); - new (toFill++) EmojiData(18, 90, 0xD83DDC2EU, 0x0U, 2); - new (toFill++) EmojiData(648, 72, 0xD83DDC2FU, 0x0U, 2); - new (toFill++) EmojiData(612, 72, 0xD83DDC30U, 0x0U, 2); - new (toFill++) EmojiData(558, 72, 0xD83DDC31U, 0x0U, 2); - new (toFill++) EmojiData(54, 108, 0xD83DDC32U, 0x0U, 2); - new (toFill++) EmojiData(486, 90, 0xD83DDC33U, 0x0U, 2); - new (toFill++) EmojiData(90, 90, 0xD83DDC34U, 0x0U, 2); - new (toFill++) EmojiData(54, 90, 0xD83DDC35U, 0x0U, 2); - new (toFill++) EmojiData(522, 72, 0xD83DDC36U, 0x0U, 2); - new (toFill++) EmojiData(702, 72, 0xD83DDC37U, 0x0U, 2); - new (toFill++) EmojiData(630, 72, 0xD83DDC38U, 0x0U, 2); - new (toFill++) EmojiData(594, 72, 0xD83DDC39U, 0x0U, 2); - new (toFill++) EmojiData(540, 72, 0xD83DDC3AU, 0x0U, 2); - new (toFill++) EmojiData(684, 72, 0xD83DDC3BU, 0x0U, 2); - new (toFill++) EmojiData(144, 90, 0xD83DDC3CU, 0x0U, 2); - new (toFill++) EmojiData(0, 90, 0xD83DDC3DU, 0x0U, 2); - new (toFill++) EmojiData(198, 108, 0xD83DDC3EU, 0x0U, 2); - new (toFill++) EmojiData(378, 36, 0xD83DDC40U, 0x0U, 2); - new (toFill++) EmojiData(360, 36, 0xD83DDC42U, 0x0U, 2); - new (toFill++) EmojiData(396, 36, 0xD83DDC43U, 0x0U, 2); - new (toFill++) EmojiData(432, 36, 0xD83DDC44U, 0x0U, 2); - new (toFill++) EmojiData(414, 36, 0xD83DDC45U, 0x0U, 2); - new (toFill++) EmojiData(612, 36, 0xD83DDC46U, 0x0U, 2); - new (toFill++) EmojiData(630, 36, 0xD83DDC47U, 0x0U, 2); - new (toFill++) EmojiData(666, 36, 0xD83DDC48U, 0x0U, 2); - new (toFill++) EmojiData(648, 36, 0xD83DDC49U, 0x0U, 2); - new (toFill++) EmojiData(504, 36, 0xD83DDC4AU, 0x0U, 2); - new (toFill++) EmojiData(558, 36, 0xD83DDC4BU, 0x0U, 2); - new (toFill++) EmojiData(486, 36, 0xD83DDC4CU, 0x0U, 2); - new (toFill++) EmojiData(450, 36, 0xD83DDC4DU, 0x0U, 2); - new (toFill++) EmojiData(468, 36, 0xD83DDC4EU, 0x0U, 2); - new (toFill++) EmojiData(18, 54, 0xD83DDC4FU, 0x0U, 2); - new (toFill++) EmojiData(594, 36, 0xD83DDC50U, 0x0U, 2); - new (toFill++) EmojiData(450, 54, 0xD83DDC51U, 0x0U, 2); - new (toFill++) EmojiData(468, 54, 0xD83DDC52U, 0x0U, 2); - new (toFill++) EmojiData(72, 72, 0xD83DDC53U, 0x0U, 2); - new (toFill++) EmojiData(594, 54, 0xD83DDC54U, 0x0U, 2); - new (toFill++) EmojiData(576, 54, 0xD83DDC55U, 0x0U, 2); - new (toFill++) EmojiData(666, 54, 0xD83DDC56U, 0x0U, 2); - new (toFill++) EmojiData(630, 54, 0xD83DDC57U, 0x0U, 2); - new (toFill++) EmojiData(684, 54, 0xD83DDC58U, 0x0U, 2); - new (toFill++) EmojiData(702, 54, 0xD83DDC59U, 0x0U, 2); - new (toFill++) EmojiData(612, 54, 0xD83DDC5AU, 0x0U, 2); - new (toFill++) EmojiData(54, 72, 0xD83DDC5BU, 0x0U, 2); - new (toFill++) EmojiData(18, 72, 0xD83DDC5CU, 0x0U, 2); - new (toFill++) EmojiData(36, 72, 0xD83DDC5DU, 0x0U, 2); - new (toFill++) EmojiData(504, 54, 0xD83DDC5EU, 0x0U, 2); - new (toFill++) EmojiData(486, 54, 0xD83DDC5FU, 0x0U, 2); - new (toFill++) EmojiData(540, 54, 0xD83DDC60U, 0x0U, 2); - new (toFill++) EmojiData(522, 54, 0xD83DDC61U, 0x0U, 2); - new (toFill++) EmojiData(558, 54, 0xD83DDC62U, 0x0U, 2); - new (toFill++) EmojiData(486, 72, 0xD83DDC63U, 0x0U, 2); - new (toFill++) EmojiData(432, 72, 0xD83DDC64U, 0x0U, 2); - new (toFill++) EmojiData(450, 72, 0xD83DDC65U, 0x0U, 2); - new (toFill++) EmojiData(432, 18, 0xD83DDC66U, 0x0U, 2); - new (toFill++) EmojiData(450, 18, 0xD83DDC67U, 0x0U, 2); - new (toFill++) EmojiData(468, 18, 0xD83DDC68U, 0x0U, 2); - new (toFill++) EmojiData(486, 18, 0xD83DDC69U, 0x0U, 2); - new (toFill++) EmojiData(126, 54, 0xD83DDC6AU, 0x0U, 2); - new (toFill++) EmojiData(108, 54, 0xD83DDC6BU, 0x0U, 2); - new (toFill++) EmojiData(144, 54, 0xD83DDC6CU, 0x0U, 2); - new (toFill++) EmojiData(162, 54, 0xD83DDC6DU, 0x0U, 2); - new (toFill++) EmojiData(360, 18, 0xD83DDC6EU, 0x0U, 2); - new (toFill++) EmojiData(216, 54, 0xD83DDC6FU, 0x0U, 2); - new (toFill++) EmojiData(360, 54, 0xD83DDC70U, 0x0U, 2); - new (toFill++) EmojiData(540, 18, 0xD83DDC71U, 0x0U, 2); - new (toFill++) EmojiData(324, 18, 0xD83DDC72U, 0x0U, 2); - new (toFill++) EmojiData(342, 18, 0xD83DDC73U, 0x0U, 2); - new (toFill++) EmojiData(504, 18, 0xD83DDC74U, 0x0U, 2); - new (toFill++) EmojiData(522, 18, 0xD83DDC75U, 0x0U, 2); - new (toFill++) EmojiData(414, 18, 0xD83DDC76U, 0x0U, 2); - new (toFill++) EmojiData(378, 18, 0xD83DDC77U, 0x0U, 2); - new (toFill++) EmojiData(576, 18, 0xD83DDC78U, 0x0U, 2); - new (toFill++) EmojiData(36, 36, 0xD83DDC79U, 0x0U, 2); - new (toFill++) EmojiData(54, 36, 0xD83DDC7AU, 0x0U, 2); - new (toFill++) EmojiData(648, 126, 0xD83DDC7BU, 0x0U, 2); - new (toFill++) EmojiData(558, 18, 0xD83DDC7CU, 0x0U, 2); - new (toFill++) EmojiData(144, 36, 0xD83DDC7DU, 0x0U, 2); - new (toFill++) EmojiData(180, 198, 0xD83DDC7EU, 0x0U, 2); - new (toFill++) EmojiData(144, 18, 0xD83DDC7FU, 0x0U, 2); - new (toFill++) EmojiData(126, 36, 0xD83DDC80U, 0x0U, 2); - new (toFill++) EmojiData(270, 54, 0xD83DDC81U, 0x0U, 2); - new (toFill++) EmojiData(396, 18, 0xD83DDC82U, 0x0U, 2); - new (toFill++) EmojiData(90, 54, 0xD83DDC83U, 0x0U, 2); - new (toFill++) EmojiData(126, 72, 0xD83DDC84U, 0x0U, 2); - new (toFill++) EmojiData(342, 54, 0xD83DDC85U, 0x0U, 2); - new (toFill++) EmojiData(306, 54, 0xD83DDC86U, 0x0U, 2); - new (toFill++) EmojiData(324, 54, 0xD83DDC87U, 0x0U, 2); - new (toFill++) EmojiData(162, 270, 0xD83DDC88U, 0x0U, 2); - new (toFill++) EmojiData(378, 162, 0xD83DDC89U, 0x0U, 2); - new (toFill++) EmojiData(360, 162, 0xD83DDC8AU, 0x0U, 2); - new (toFill++) EmojiData(378, 72, 0xD83DDC8BU, 0x0U, 2); - new (toFill++) EmojiData(360, 72, 0xD83DDC8CU, 0x0U, 2); - new (toFill++) EmojiData(396, 72, 0xD83DDC8DU, 0x0U, 2); - new (toFill++) EmojiData(414, 72, 0xD83DDC8EU, 0x0U, 2); - new (toFill++) EmojiData(180, 54, 0xD83DDC8FU, 0x0U, 2); - new (toFill++) EmojiData(216, 108, 0xD83DDC90U, 0x0U, 2); - new (toFill++) EmojiData(198, 54, 0xD83DDC91U, 0x0U, 2); - new (toFill++) EmojiData(450, 234, 0xD83DDC92U, 0x0U, 2); - new (toFill++) EmojiData(270, 72, 0xD83DDC93U, 0x0U, 2); - new (toFill++) EmojiData(234, 72, 0xD83DDC94U, 0x0U, 2); - new (toFill++) EmojiData(288, 72, 0xD83DDC95U, 0x0U, 2); - new (toFill++) EmojiData(306, 72, 0xD83DDC96U, 0x0U, 2); - new (toFill++) EmojiData(252, 72, 0xD83DDC97U, 0x0U, 2); - new (toFill++) EmojiData(342, 72, 0xD83DDC98U, 0x0U, 2); - new (toFill++) EmojiData(162, 72, 0xD83DDC99U, 0x0U, 2); - new (toFill++) EmojiData(198, 72, 0xD83DDC9AU, 0x0U, 2); - new (toFill++) EmojiData(144, 72, 0xD83DDC9BU, 0x0U, 2); - new (toFill++) EmojiData(180, 72, 0xD83DDC9CU, 0x0U, 2); - new (toFill++) EmojiData(468, 126, 0xD83DDC9DU, 0x0U, 2); - new (toFill++) EmojiData(324, 72, 0xD83DDC9EU, 0x0U, 2); - new (toFill++) EmojiData(306, 324, 0xD83DDC9FU, 0x0U, 2); - new (toFill++) EmojiData(450, 324, 0xD83DDCA0U, 0x0U, 2); - new (toFill++) EmojiData(18, 162, 0xD83DDCA1U, 0x0U, 2); - new (toFill++) EmojiData(270, 36, 0xD83DDCA2U, 0x0U, 2); - new (toFill++) EmojiData(306, 162, 0xD83DDCA3U, 0x0U, 2); - new (toFill++) EmojiData(324, 36, 0xD83DDCA4U, 0x0U, 2); - new (toFill++) EmojiData(252, 36, 0xD83DDCA5U, 0x0U, 2); - new (toFill++) EmojiData(288, 36, 0xD83DDCA6U, 0x0U, 2); - new (toFill++) EmojiData(306, 36, 0xD83DDCA7U, 0x0U, 2); - new (toFill++) EmojiData(342, 36, 0xD83DDCA8U, 0x0U, 2); - new (toFill++) EmojiData(162, 36, 0xD83DDCA9U, 0x0U, 2); - new (toFill++) EmojiData(36, 54, 0xD83DDCAAU, 0x0U, 2); - new (toFill++) EmojiData(234, 36, 0xD83DDCABU, 0x0U, 2); - new (toFill++) EmojiData(468, 72, 0xD83DDCACU, 0x0U, 2); - new (toFill++) EmojiData(504, 72, 0xD83DDCADU, 0x0U, 2); - new (toFill++) EmojiData(270, 360, 0xD83DDCAEU, 0x0U, 2); - new (toFill++) EmojiData(288, 360, 0xD83DDCAFU, 0x0U, 2); - new (toFill++) EmojiData(396, 162, 0xD83DDCB0U, 0x0U, 2); - new (toFill++) EmojiData(90, 342, 0xD83DDCB1U, 0x0U, 2); - new (toFill++) EmojiData(72, 342, 0xD83DDCB2U, 0x0U, 2); - new (toFill++) EmojiData(486, 162, 0xD83DDCB3U, 0x0U, 2); - new (toFill++) EmojiData(414, 162, 0xD83DDCB4U, 0x0U, 2); - new (toFill++) EmojiData(432, 162, 0xD83DDCB5U, 0x0U, 2); - new (toFill++) EmojiData(468, 162, 0xD83DDCB6U, 0x0U, 2); - new (toFill++) EmojiData(450, 162, 0xD83DDCB7U, 0x0U, 2); - new (toFill++) EmojiData(504, 162, 0xD83DDCB8U, 0x0U, 2); - new (toFill++) EmojiData(54, 342, 0xD83DDCB9U, 0x0U, 2); - new (toFill++) EmojiData(252, 252, 0xD83DDCBAU, 0x0U, 2); - new (toFill++) EmojiData(252, 144, 0xD83DDCBBU, 0x0U, 2); - new (toFill++) EmojiData(0, 72, 0xD83DDCBCU, 0x0U, 2); - new (toFill++) EmojiData(216, 144, 0xD83DDCBDU, 0x0U, 2); - new (toFill++) EmojiData(234, 144, 0xD83DDCBEU, 0x0U, 2); - new (toFill++) EmojiData(180, 144, 0xD83DDCBFU, 0x0U, 2); - new (toFill++) EmojiData(198, 144, 0xD83DDCC0U, 0x0U, 2); - new (toFill++) EmojiData(270, 180, 0xD83DDCC1U, 0x0U, 2); - new (toFill++) EmojiData(288, 180, 0xD83DDCC2U, 0x0U, 2); - new (toFill++) EmojiData(90, 180, 0xD83DDCC3U, 0x0U, 2); - new (toFill++) EmojiData(72, 180, 0xD83DDCC4U, 0x0U, 2); - new (toFill++) EmojiData(216, 180, 0xD83DDCC5U, 0x0U, 2); - new (toFill++) EmojiData(234, 180, 0xD83DDCC6U, 0x0U, 2); - new (toFill++) EmojiData(252, 180, 0xD83DDCC7U, 0x0U, 2); - new (toFill++) EmojiData(144, 180, 0xD83DDCC8U, 0x0U, 2); - new (toFill++) EmojiData(162, 180, 0xD83DDCC9U, 0x0U, 2); - new (toFill++) EmojiData(126, 180, 0xD83DDCCAU, 0x0U, 2); - new (toFill++) EmojiData(198, 180, 0xD83DDCCBU, 0x0U, 2); - new (toFill++) EmojiData(324, 180, 0xD83DDCCCU, 0x0U, 2); - new (toFill++) EmojiData(432, 270, 0xD83DDCCDU, 0x0U, 2); - new (toFill++) EmojiData(342, 180, 0xD83DDCCEU, 0x0U, 2); - new (toFill++) EmojiData(396, 180, 0xD83DDCCFU, 0x0U, 2); - new (toFill++) EmojiData(414, 180, 0xD83DDCD0U, 0x0U, 2); - new (toFill++) EmojiData(108, 180, 0xD83DDCD1U, 0x0U, 2); - new (toFill++) EmojiData(540, 180, 0xD83DDCD2U, 0x0U, 2); - new (toFill++) EmojiData(504, 180, 0xD83DDCD3U, 0x0U, 2); - new (toFill++) EmojiData(522, 180, 0xD83DDCD4U, 0x0U, 2); - new (toFill++) EmojiData(432, 180, 0xD83DDCD5U, 0x0U, 2); - new (toFill++) EmojiData(576, 180, 0xD83DDCD6U, 0x0U, 2); - new (toFill++) EmojiData(450, 180, 0xD83DDCD7U, 0x0U, 2); - new (toFill++) EmojiData(468, 180, 0xD83DDCD8U, 0x0U, 2); - new (toFill++) EmojiData(486, 180, 0xD83DDCD9U, 0x0U, 2); - new (toFill++) EmojiData(558, 180, 0xD83DDCDAU, 0x0U, 2); - new (toFill++) EmojiData(612, 180, 0xD83DDCDBU, 0x0U, 2); - new (toFill++) EmojiData(180, 180, 0xD83DDCDCU, 0x0U, 2); - new (toFill++) EmojiData(54, 180, 0xD83DDCDDU, 0x0U, 2); - new (toFill++) EmojiData(306, 144, 0xD83DDCDEU, 0x0U, 2); - new (toFill++) EmojiData(324, 144, 0xD83DDCDFU, 0x0U, 2); - new (toFill++) EmojiData(342, 144, 0xD83DDCE0U, 0x0U, 2); - new (toFill++) EmojiData(360, 144, 0xD83DDCE1U, 0x0U, 2); - new (toFill++) EmojiData(522, 144, 0xD83DDCE2U, 0x0U, 2); - new (toFill++) EmojiData(540, 144, 0xD83DDCE3U, 0x0U, 2); - new (toFill++) EmojiData(576, 162, 0xD83DDCE4U, 0x0U, 2); - new (toFill++) EmojiData(558, 162, 0xD83DDCE5U, 0x0U, 2); - new (toFill++) EmojiData(36, 180, 0xD83DDCE6U, 0x0U, 2); - new (toFill++) EmojiData(540, 162, 0xD83DDCE7U, 0x0U, 2); - new (toFill++) EmojiData(630, 162, 0xD83DDCE8U, 0x0U, 2); - new (toFill++) EmojiData(612, 162, 0xD83DDCE9U, 0x0U, 2); - new (toFill++) EmojiData(684, 162, 0xD83DDCEAU, 0x0U, 2); - new (toFill++) EmojiData(666, 162, 0xD83DDCEBU, 0x0U, 2); - new (toFill++) EmojiData(702, 162, 0xD83DDCECU, 0x0U, 2); - new (toFill++) EmojiData(0, 180, 0xD83DDCEDU, 0x0U, 2); - new (toFill++) EmojiData(18, 180, 0xD83DDCEEU, 0x0U, 2); - new (toFill++) EmojiData(648, 162, 0xD83DDCEFU, 0x0U, 2); - new (toFill++) EmojiData(666, 180, 0xD83DDCF0U, 0x0U, 2); - new (toFill++) EmojiData(270, 144, 0xD83DDCF1U, 0x0U, 2); - new (toFill++) EmojiData(522, 162, 0xD83DDCF2U, 0x0U, 2); - new (toFill++) EmojiData(342, 324, 0xD83DDCF3U, 0x0U, 2); - new (toFill++) EmojiData(360, 324, 0xD83DDCF4U, 0x0U, 2); - new (toFill++) EmojiData(90, 324, 0xD83DDCF5U, 0x0U, 2); - new (toFill++) EmojiData(108, 306, 0xD83DDCF6U, 0x0U, 2); - new (toFill++) EmojiData(126, 144, 0xD83DDCF7U, 0x0U, 2); - new (toFill++) EmojiData(144, 144, 0xD83DDCF9U, 0x0U, 2); - new (toFill++) EmojiData(378, 144, 0xD83DDCFAU, 0x0U, 2); - new (toFill++) EmojiData(396, 144, 0xD83DDCFBU, 0x0U, 2); - new (toFill++) EmojiData(162, 144, 0xD83DDCFCU, 0x0U, 2); - new (toFill++) EmojiData(684, 288, 0xD83DDD00U, 0x0U, 2); - new (toFill++) EmojiData(702, 288, 0xD83DDD01U, 0x0U, 2); - new (toFill++) EmojiData(0, 306, 0xD83DDD02U, 0x0U, 2); - new (toFill++) EmojiData(396, 342, 0xD83DDD03U, 0x0U, 2); - new (toFill++) EmojiData(414, 288, 0xD83DDD04U, 0x0U, 2); - new (toFill++) EmojiData(72, 162, 0xD83DDD05U, 0x0U, 2); - new (toFill++) EmojiData(54, 162, 0xD83DDD06U, 0x0U, 2); - new (toFill++) EmojiData(468, 144, 0xD83DDD07U, 0x0U, 2); - new (toFill++) EmojiData(450, 144, 0xD83DDD08U, 0x0U, 2); - new (toFill++) EmojiData(432, 144, 0xD83DDD09U, 0x0U, 2); - new (toFill++) EmojiData(414, 144, 0xD83DDD0AU, 0x0U, 2); - new (toFill++) EmojiData(108, 162, 0xD83DDD0BU, 0x0U, 2); - new (toFill++) EmojiData(90, 162, 0xD83DDD0CU, 0x0U, 2); - new (toFill++) EmojiData(126, 162, 0xD83DDD0DU, 0x0U, 2); - new (toFill++) EmojiData(0, 162, 0xD83DDD0EU, 0x0U, 2); - new (toFill++) EmojiData(666, 144, 0xD83DDD0FU, 0x0U, 2); - new (toFill++) EmojiData(684, 144, 0xD83DDD10U, 0x0U, 2); - new (toFill++) EmojiData(702, 144, 0xD83DDD11U, 0x0U, 2); - new (toFill++) EmojiData(648, 144, 0xD83DDD12U, 0x0U, 2); - new (toFill++) EmojiData(630, 144, 0xD83DDD13U, 0x0U, 2); - new (toFill++) EmojiData(486, 144, 0xD83DDD14U, 0x0U, 2); - new (toFill++) EmojiData(504, 144, 0xD83DDD15U, 0x0U, 2); - new (toFill++) EmojiData(594, 180, 0xD83DDD16U, 0x0U, 2); - new (toFill++) EmojiData(360, 360, 0xD83DDD17U, 0x0U, 2); - new (toFill++) EmojiData(342, 360, 0xD83DDD18U, 0x0U, 2); - new (toFill++) EmojiData(342, 342, 0xD83DDD19U, 0x0U, 2); - new (toFill++) EmojiData(324, 342, 0xD83DDD1AU, 0x0U, 2); - new (toFill++) EmojiData(360, 342, 0xD83DDD1BU, 0x0U, 2); - new (toFill++) EmojiData(378, 342, 0xD83DDD1CU, 0x0U, 2); - new (toFill++) EmojiData(306, 342, 0xD83DDD1DU, 0x0U, 2); - new (toFill++) EmojiData(72, 324, 0xD83DDD1EU, 0x0U, 2); - new (toFill++) EmojiData(108, 288, 0xD83DDD1FU, 0x0U, 2); - new (toFill++) EmojiData(252, 288, 0xD83DDD20U, 0x0U, 2); - new (toFill++) EmojiData(270, 288, 0xD83DDD21U, 0x0U, 2); - new (toFill++) EmojiData(126, 288, 0xD83DDD22U, 0x0U, 2); - new (toFill++) EmojiData(162, 288, 0xD83DDD23U, 0x0U, 2); - new (toFill++) EmojiData(288, 288, 0xD83DDD24U, 0x0U, 2); - new (toFill++) EmojiData(180, 36, 0xD83DDD25U, 0x0U, 2); - new (toFill++) EmojiData(36, 162, 0xD83DDD26U, 0x0U, 2); - new (toFill++) EmojiData(216, 162, 0xD83DDD27U, 0x0U, 2); - new (toFill++) EmojiData(252, 162, 0xD83DDD28U, 0x0U, 2); - new (toFill++) EmojiData(234, 162, 0xD83DDD29U, 0x0U, 2); - new (toFill++) EmojiData(342, 162, 0xD83DDD2AU, 0x0U, 2); - new (toFill++) EmojiData(324, 162, 0xD83DDD2BU, 0x0U, 2); - new (toFill++) EmojiData(630, 180, 0xD83DDD2CU, 0x0U, 2); - new (toFill++) EmojiData(648, 180, 0xD83DDD2DU, 0x0U, 2); - new (toFill++) EmojiData(90, 144, 0xD83DDD2EU, 0x0U, 2); - new (toFill++) EmojiData(18, 342, 0xD83DDD2FU, 0x0U, 2); - new (toFill++) EmojiData(288, 270, 0xD83DDD30U, 0x0U, 2); - new (toFill++) EmojiData(432, 360, 0xD83DDD31U, 0x0U, 2); - new (toFill++) EmojiData(576, 360, 0xD83DDD32U, 0x0U, 2); - new (toFill++) EmojiData(594, 360, 0xD83DDD33U, 0x0U, 2); - new (toFill++) EmojiData(648, 360, 0xD83DDD34U, 0x0U, 2); - new (toFill++) EmojiData(666, 360, 0xD83DDD35U, 0x0U, 2); - new (toFill++) EmojiData(18, 378, 0xD83DDD36U, 0x0U, 2); - new (toFill++) EmojiData(36, 378, 0xD83DDD37U, 0x0U, 2); - new (toFill++) EmojiData(54, 378, 0xD83DDD38U, 0x0U, 2); - new (toFill++) EmojiData(72, 378, 0xD83DDD39U, 0x0U, 2); - new (toFill++) EmojiData(558, 360, 0xD83DDD3AU, 0x0U, 2); - new (toFill++) EmojiData(684, 360, 0xD83DDD3BU, 0x0U, 2); - new (toFill++) EmojiData(468, 288, 0xD83DDD3CU, 0x0U, 2); - new (toFill++) EmojiData(486, 288, 0xD83DDD3DU, 0x0U, 2); - new (toFill++) EmojiData(450, 342, 0xD83DDD50U, 0x0U, 2); - new (toFill++) EmojiData(486, 342, 0xD83DDD51U, 0x0U, 2); - new (toFill++) EmojiData(522, 342, 0xD83DDD52U, 0x0U, 2); - new (toFill++) EmojiData(558, 342, 0xD83DDD53U, 0x0U, 2); - new (toFill++) EmojiData(594, 342, 0xD83DDD54U, 0x0U, 2); - new (toFill++) EmojiData(630, 342, 0xD83DDD55U, 0x0U, 2); - new (toFill++) EmojiData(648, 342, 0xD83DDD56U, 0x0U, 2); - new (toFill++) EmojiData(666, 342, 0xD83DDD57U, 0x0U, 2); - new (toFill++) EmojiData(684, 342, 0xD83DDD58U, 0x0U, 2); - new (toFill++) EmojiData(702, 342, 0xD83DDD59U, 0x0U, 2); - new (toFill++) EmojiData(0, 360, 0xD83DDD5AU, 0x0U, 2); - new (toFill++) EmojiData(414, 342, 0xD83DDD5BU, 0x0U, 2); - new (toFill++) EmojiData(468, 342, 0xD83DDD5CU, 0x0U, 2); - new (toFill++) EmojiData(504, 342, 0xD83DDD5DU, 0x0U, 2); - new (toFill++) EmojiData(540, 342, 0xD83DDD5EU, 0x0U, 2); - new (toFill++) EmojiData(576, 342, 0xD83DDD5FU, 0x0U, 2); - new (toFill++) EmojiData(612, 342, 0xD83DDD60U, 0x0U, 2); - new (toFill++) EmojiData(18, 360, 0xD83DDD61U, 0x0U, 2); - new (toFill++) EmojiData(36, 360, 0xD83DDD62U, 0x0U, 2); - new (toFill++) EmojiData(54, 360, 0xD83DDD63U, 0x0U, 2); - new (toFill++) EmojiData(72, 360, 0xD83DDD64U, 0x0U, 2); - new (toFill++) EmojiData(90, 360, 0xD83DDD65U, 0x0U, 2); - new (toFill++) EmojiData(108, 360, 0xD83DDD66U, 0x0U, 2); - new (toFill++) EmojiData(432, 342, 0xD83DDD67U, 0x0U, 2); - new (toFill++) EmojiData(666, 234, 0xD83DDDFBU, 0x0U, 2); - new (toFill++) EmojiData(630, 234, 0xD83DDDFCU, 0x0U, 2); - new (toFill++) EmojiData(18, 252, 0xD83DDDFDU, 0x0U, 2); - new (toFill++) EmojiData(648, 234, 0xD83DDDFEU, 0x0U, 2); - new (toFill++) EmojiData(378, 270, 0xD83DDDFFU, 0x0U, 2); - new (toFill++) EmojiData(36, 0, 0xD83DDE00U, 0x0U, 2); - new (toFill++) EmojiData(270, 0, 0xD83DDE01U, 0x0U, 2); - new (toFill++) EmojiData(396, 0, 0xD83DDE02U, 0x0U, 2); - new (toFill++) EmojiData(18, 0, 0xD83DDE03U, 0x0U, 2); - new (toFill++) EmojiData(0, 0, 0xD83DDE04U, 0x0U, 2); - new (toFill++) EmojiData(486, 0, 0xD83DDE05U, 0x0U, 2); - new (toFill++) EmojiData(666, 0, 0xD83DDE06U, 0x0U, 2); - new (toFill++) EmojiData(270, 18, 0xD83DDE07U, 0x0U, 2); - new (toFill++) EmojiData(126, 18, 0xD83DDE08U, 0x0U, 2); - new (toFill++) EmojiData(90, 0, 0xD83DDE09U, 0x0U, 2); - new (toFill++) EmojiData(54, 0, 0xD83DDE0AU, 0x0U, 2); - new (toFill++) EmojiData(684, 0, 0xD83DDE0BU, 0x0U, 2); - new (toFill++) EmojiData(306, 0, 0xD83DDE0CU, 0x0U, 2); - new (toFill++) EmojiData(108, 0, 0xD83DDE0DU, 0x0U, 2); - new (toFill++) EmojiData(0, 18, 0xD83DDE0EU, 0x0U, 2); - new (toFill++) EmojiData(288, 18, 0xD83DDE0FU, 0x0U, 2); - new (toFill++) EmojiData(198, 18, 0xD83DDE10U, 0x0U, 2); - new (toFill++) EmojiData(306, 18, 0xD83DDE11U, 0x0U, 2); - new (toFill++) EmojiData(324, 0, 0xD83DDE12U, 0x0U, 2); - new (toFill++) EmojiData(504, 0, 0xD83DDE13U, 0x0U, 2); - new (toFill++) EmojiData(288, 0, 0xD83DDE14U, 0x0U, 2); - new (toFill++) EmojiData(216, 18, 0xD83DDE15U, 0x0U, 2); - new (toFill++) EmojiData(648, 0, 0xD83DDE16U, 0x0U, 2); - new (toFill++) EmojiData(162, 0, 0xD83DDE17U, 0x0U, 2); - new (toFill++) EmojiData(126, 0, 0xD83DDE18U, 0x0U, 2); - new (toFill++) EmojiData(180, 0, 0xD83DDE19U, 0x0U, 2); - new (toFill++) EmojiData(144, 0, 0xD83DDE1AU, 0x0U, 2); - new (toFill++) EmojiData(234, 0, 0xD83DDE1BU, 0x0U, 2); - new (toFill++) EmojiData(198, 0, 0xD83DDE1CU, 0x0U, 2); - new (toFill++) EmojiData(216, 0, 0xD83DDE1DU, 0x0U, 2); - new (toFill++) EmojiData(342, 0, 0xD83DDE1EU, 0x0U, 2); - new (toFill++) EmojiData(72, 18, 0xD83DDE1FU, 0x0U, 2); - new (toFill++) EmojiData(594, 0, 0xD83DDE20U, 0x0U, 2); - new (toFill++) EmojiData(612, 0, 0xD83DDE21U, 0x0U, 2); - new (toFill++) EmojiData(378, 0, 0xD83DDE22U, 0x0U, 2); - new (toFill++) EmojiData(360, 0, 0xD83DDE23U, 0x0U, 2); - new (toFill++) EmojiData(630, 0, 0xD83DDE24U, 0x0U, 2); - new (toFill++) EmojiData(450, 0, 0xD83DDE25U, 0x0U, 2); - new (toFill++) EmojiData(90, 18, 0xD83DDE26U, 0x0U, 2); - new (toFill++) EmojiData(108, 18, 0xD83DDE27U, 0x0U, 2); - new (toFill++) EmojiData(558, 0, 0xD83DDE28U, 0x0U, 2); - new (toFill++) EmojiData(522, 0, 0xD83DDE29U, 0x0U, 2); - new (toFill++) EmojiData(432, 0, 0xD83DDE2AU, 0x0U, 2); - new (toFill++) EmojiData(540, 0, 0xD83DDE2BU, 0x0U, 2); - new (toFill++) EmojiData(180, 18, 0xD83DDE2CU, 0x0U, 2); - new (toFill++) EmojiData(414, 0, 0xD83DDE2DU, 0x0U, 2); - new (toFill++) EmojiData(162, 18, 0xD83DDE2EU, 0x0U, 2); - new (toFill++) EmojiData(234, 18, 0xD83DDE2FU, 0x0U, 2); - new (toFill++) EmojiData(468, 0, 0xD83DDE30U, 0x0U, 2); - new (toFill++) EmojiData(576, 0, 0xD83DDE31U, 0x0U, 2); - new (toFill++) EmojiData(54, 18, 0xD83DDE32U, 0x0U, 2); - new (toFill++) EmojiData(252, 0, 0xD83DDE33U, 0x0U, 2); - new (toFill++) EmojiData(18, 18, 0xD83DDE34U, 0x0U, 2); - new (toFill++) EmojiData(36, 18, 0xD83DDE35U, 0x0U, 2); - new (toFill++) EmojiData(252, 18, 0xD83DDE36U, 0x0U, 2); - new (toFill++) EmojiData(702, 0, 0xD83DDE37U, 0x0U, 2); - new (toFill++) EmojiData(612, 18, 0xD83DDE38U, 0x0U, 2); - new (toFill++) EmojiData(0, 36, 0xD83DDE39U, 0x0U, 2); - new (toFill++) EmojiData(594, 18, 0xD83DDE3AU, 0x0U, 2); - new (toFill++) EmojiData(630, 18, 0xD83DDE3BU, 0x0U, 2); - new (toFill++) EmojiData(666, 18, 0xD83DDE3CU, 0x0U, 2); - new (toFill++) EmojiData(648, 18, 0xD83DDE3DU, 0x0U, 2); - new (toFill++) EmojiData(18, 36, 0xD83DDE3EU, 0x0U, 2); - new (toFill++) EmojiData(702, 18, 0xD83DDE3FU, 0x0U, 2); - new (toFill++) EmojiData(684, 18, 0xD83DDE40U, 0x0U, 2); - new (toFill++) EmojiData(252, 54, 0xD83DDE45U, 0x0U, 2); - new (toFill++) EmojiData(234, 54, 0xD83DDE46U, 0x0U, 2); - new (toFill++) EmojiData(414, 54, 0xD83DDE47U, 0x0U, 2); - new (toFill++) EmojiData(72, 36, 0xD83DDE48U, 0x0U, 2); - new (toFill++) EmojiData(90, 36, 0xD83DDE49U, 0x0U, 2); - new (toFill++) EmojiData(108, 36, 0xD83DDE4AU, 0x0U, 2); - new (toFill++) EmojiData(288, 54, 0xD83DDE4BU, 0x0U, 2); - new (toFill++) EmojiData(684, 36, 0xD83DDE4CU, 0x0U, 2); - new (toFill++) EmojiData(396, 54, 0xD83DDE4DU, 0x0U, 2); - new (toFill++) EmojiData(378, 54, 0xD83DDE4EU, 0x0U, 2); - new (toFill++) EmojiData(702, 36, 0xD83DDE4FU, 0x0U, 2); - new (toFill++) EmojiData(216, 252, 0xD83DDE80U, 0x0U, 2); - new (toFill++) EmojiData(270, 252, 0xD83DDE81U, 0x0U, 2); - new (toFill++) EmojiData(288, 252, 0xD83DDE82U, 0x0U, 2); - new (toFill++) EmojiData(486, 252, 0xD83DDE83U, 0x0U, 2); - new (toFill++) EmojiData(378, 252, 0xD83DDE84U, 0x0U, 2); - new (toFill++) EmojiData(396, 252, 0xD83DDE85U, 0x0U, 2); - new (toFill++) EmojiData(360, 252, 0xD83DDE86U, 0x0U, 2); - new (toFill++) EmojiData(432, 252, 0xD83DDE87U, 0x0U, 2); - new (toFill++) EmojiData(414, 252, 0xD83DDE88U, 0x0U, 2); - new (toFill++) EmojiData(324, 252, 0xD83DDE89U, 0x0U, 2); - new (toFill++) EmojiData(306, 252, 0xD83DDE8AU, 0x0U, 2); - new (toFill++) EmojiData(468, 252, 0xD83DDE8BU, 0x0U, 2); - new (toFill++) EmojiData(522, 252, 0xD83DDE8CU, 0x0U, 2); - new (toFill++) EmojiData(540, 252, 0xD83DDE8DU, 0x0U, 2); - new (toFill++) EmojiData(504, 252, 0xD83DDE8EU, 0x0U, 2); - new (toFill++) EmojiData(180, 270, 0xD83DDE8FU, 0x0U, 2); - new (toFill++) EmojiData(54, 270, 0xD83DDE90U, 0x0U, 2); - new (toFill++) EmojiData(36, 270, 0xD83DDE91U, 0x0U, 2); - new (toFill++) EmojiData(18, 270, 0xD83DDE92U, 0x0U, 2); - new (toFill++) EmojiData(702, 252, 0xD83DDE93U, 0x0U, 2); - new (toFill++) EmojiData(0, 270, 0xD83DDE94U, 0x0U, 2); - new (toFill++) EmojiData(612, 252, 0xD83DDE95U, 0x0U, 2); - new (toFill++) EmojiData(630, 252, 0xD83DDE96U, 0x0U, 2); - new (toFill++) EmojiData(594, 252, 0xD83DDE97U, 0x0U, 2); - new (toFill++) EmojiData(576, 252, 0xD83DDE98U, 0x0U, 2); - new (toFill++) EmojiData(558, 252, 0xD83DDE99U, 0x0U, 2); - new (toFill++) EmojiData(666, 252, 0xD83DDE9AU, 0x0U, 2); - new (toFill++) EmojiData(648, 252, 0xD83DDE9BU, 0x0U, 2); - new (toFill++) EmojiData(144, 270, 0xD83DDE9CU, 0x0U, 2); - new (toFill++) EmojiData(450, 252, 0xD83DDE9DU, 0x0U, 2); - new (toFill++) EmojiData(342, 252, 0xD83DDE9EU, 0x0U, 2); - new (toFill++) EmojiData(108, 270, 0xD83DDE9FU, 0x0U, 2); - new (toFill++) EmojiData(126, 270, 0xD83DDEA0U, 0x0U, 2); - new (toFill++) EmojiData(90, 270, 0xD83DDEA1U, 0x0U, 2); - new (toFill++) EmojiData(126, 252, 0xD83DDEA2U, 0x0U, 2); - new (toFill++) EmojiData(180, 252, 0xD83DDEA3U, 0x0U, 2); - new (toFill++) EmojiData(162, 252, 0xD83DDEA4U, 0x0U, 2); - new (toFill++) EmojiData(234, 270, 0xD83DDEA5U, 0x0U, 2); - new (toFill++) EmojiData(216, 270, 0xD83DDEA6U, 0x0U, 2); - new (toFill++) EmojiData(270, 270, 0xD83DDEA7U, 0x0U, 2); - new (toFill++) EmojiData(684, 252, 0xD83DDEA8U, 0x0U, 2); - new (toFill++) EmojiData(450, 270, 0xD83DDEA9U, 0x0U, 2); - new (toFill++) EmojiData(270, 162, 0xD83DDEAAU, 0x0U, 2); - new (toFill++) EmojiData(54, 324, 0xD83DDEABU, 0x0U, 2); - new (toFill++) EmojiData(288, 162, 0xD83DDEACU, 0x0U, 2); - new (toFill++) EmojiData(504, 306, 0xD83DDEADU, 0x0U, 2); - new (toFill++) EmojiData(450, 306, 0xD83DDEAEU, 0x0U, 2); - new (toFill++) EmojiData(108, 324, 0xD83DDEAFU, 0x0U, 2); - new (toFill++) EmojiData(432, 306, 0xD83DDEB0U, 0x0U, 2); - new (toFill++) EmojiData(126, 324, 0xD83DDEB1U, 0x0U, 2); - new (toFill++) EmojiData(72, 270, 0xD83DDEB2U, 0x0U, 2); - new (toFill++) EmojiData(144, 324, 0xD83DDEB3U, 0x0U, 2); - new (toFill++) EmojiData(486, 198, 0xD83DDEB4U, 0x0U, 2); - new (toFill++) EmojiData(468, 198, 0xD83DDEB5U, 0x0U, 2); - new (toFill++) EmojiData(54, 54, 0xD83DDEB6U, 0x0U, 2); - new (toFill++) EmojiData(162, 324, 0xD83DDEB7U, 0x0U, 2); - new (toFill++) EmojiData(180, 324, 0xD83DDEB8U, 0x0U, 2); - new (toFill++) EmojiData(360, 306, 0xD83DDEB9U, 0x0U, 2); - new (toFill++) EmojiData(378, 306, 0xD83DDEBAU, 0x0U, 2); - new (toFill++) EmojiData(342, 306, 0xD83DDEBBU, 0x0U, 2); - new (toFill++) EmojiData(396, 306, 0xD83DDEBCU, 0x0U, 2); - new (toFill++) EmojiData(198, 162, 0xD83DDEBDU, 0x0U, 2); - new (toFill++) EmojiData(414, 306, 0xD83DDEBEU, 0x0U, 2); - new (toFill++) EmojiData(180, 162, 0xD83DDEBFU, 0x0U, 2); - new (toFill++) EmojiData(162, 162, 0xD83DDEC0U, 0x0U, 2); - new (toFill++) EmojiData(144, 162, 0xD83DDEC1U, 0x0U, 2); - new (toFill++) EmojiData(594, 306, 0xD83DDEC2U, 0x0U, 2); - new (toFill++) EmojiData(648, 306, 0xD83DDEC3U, 0x0U, 2); - new (toFill++) EmojiData(612, 306, 0xD83DDEC4U, 0x0U, 2); - new (toFill++) EmojiData(630, 306, 0xD83DDEC5U, 0x0U, 2); -} - -void initEmojiOneAndQuarter() { - EmojiData *toFill = emojis = (EmojiData*)emojisData; - - new (toFill++) EmojiData(132, 418, 0xA9U, 0x0U, 1); - new (toFill++) EmojiData(154, 418, 0xAEU, 0x0U, 1); - new (toFill++) EmojiData(220, 418, 0x203CU, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(242, 418, 0x2049U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(176, 418, 0x2122U, 0x0U, 1); - new (toFill++) EmojiData(660, 352, 0x2139U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(462, 352, 0x2194U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(484, 352, 0x2195U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(396, 352, 0x2196U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(374, 352, 0x2197U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(418, 352, 0x2198U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(440, 352, 0x2199U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(616, 352, 0x21A9U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(638, 352, 0x21AAU, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(748, 176, 0x231AU, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(704, 176, 0x231BU, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(704, 352, 0x23E9U, 0x0U, 1); - new (toFill++) EmojiData(682, 352, 0x23EAU, 0x0U, 1); - new (toFill++) EmojiData(726, 352, 0x23EBU, 0x0U, 1); - new (toFill++) EmojiData(748, 352, 0x23ECU, 0x0U, 1); - new (toFill++) EmojiData(726, 176, 0x23F0U, 0x0U, 1); - new (toFill++) EmojiData(682, 176, 0x23F3U, 0x0U, 1); - new (toFill++) EmojiData(704, 374, 0x24C2U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(638, 440, 0x25AAU, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(660, 440, 0x25ABU, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(550, 352, 0x25B6U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(528, 352, 0x25C0U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(572, 440, 0x25FBU, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(550, 440, 0x25FCU, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(616, 440, 0x25FDU, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(594, 440, 0x25FEU, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(308, 154, 0x2600U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(352, 154, 0x2601U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(352, 176, 0x260EU, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(396, 440, 0x2611U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(396, 154, 0x2614U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(792, 242, 0x2615U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(0, 66, 0x261DU, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(88, 0, 0x263AU, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(616, 396, 0x2648U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(638, 396, 0x2649U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(660, 396, 0x264AU, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(682, 396, 0x264BU, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(704, 396, 0x264CU, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(726, 396, 0x264DU, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(748, 396, 0x264EU, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(770, 396, 0x264FU, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(792, 396, 0x2650U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(814, 396, 0x2651U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(836, 396, 0x2652U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(858, 396, 0x2653U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(242, 440, 0x2660U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(286, 440, 0x2663U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(264, 440, 0x2665U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(308, 440, 0x2666U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(440, 330, 0x2668U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(594, 396, 0x267BU, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(594, 374, 0x267FU, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(242, 308, 0x2693U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(308, 330, 0x26A0U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(374, 154, 0x26A1U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(770, 440, 0x26AAU, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(748, 440, 0x26ABU, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(418, 242, 0x26BDU, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(440, 242, 0x26BEU, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(440, 154, 0x26C4U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(330, 154, 0x26C5U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(0, 418, 0x26CEU, 0x0U, 1); - new (toFill++) EmojiData(242, 396, 0x26D4U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(572, 286, 0x26EAU, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(110, 308, 0x26F2U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(550, 242, 0x26F3U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(176, 308, 0x26F5U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(726, 286, 0x26FAU, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(374, 330, 0x26FDU, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(374, 220, 0x2702U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(330, 396, 0x2705U, 0x0U, 1); - new (toFill++) EmojiData(286, 308, 0x2708U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(726, 198, 0x2709U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(638, 44, 0x270AU, 0x0U, 1); - new (toFill++) EmojiData(704, 44, 0x270BU, 0x0U, 1); - new (toFill++) EmojiData(660, 44, 0x270CU, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(462, 220, 0x270FU, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(440, 220, 0x2712U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(374, 440, 0x2714U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(154, 440, 0x2716U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(242, 44, 0x2728U, 0x0U, 1); - new (toFill++) EmojiData(264, 396, 0x2733U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(352, 396, 0x2734U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(418, 154, 0x2744U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(286, 396, 0x2747U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(198, 418, 0x274CU, 0x0U, 1); - new (toFill++) EmojiData(308, 396, 0x274EU, 0x0U, 1); - new (toFill++) EmojiData(286, 418, 0x2753U, 0x0U, 1); - new (toFill++) EmojiData(330, 418, 0x2754U, 0x0U, 1); - new (toFill++) EmojiData(308, 418, 0x2755U, 0x0U, 1); - new (toFill++) EmojiData(264, 418, 0x2757U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(264, 88, 0x2764U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(176, 440, 0x2795U, 0x0U, 1); - new (toFill++) EmojiData(198, 440, 0x2796U, 0x0U, 1); - new (toFill++) EmojiData(220, 440, 0x2797U, 0x0U, 1); - new (toFill++) EmojiData(286, 352, 0x27A1U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(462, 440, 0x27B0U, 0x0U, 1); - new (toFill++) EmojiData(572, 396, 0x27BFU, 0x0U, 1); - new (toFill++) EmojiData(792, 352, 0x2934U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(770, 352, 0x2935U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(264, 352, 0x2B05U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(220, 352, 0x2B06U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(242, 352, 0x2B07U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(0, 462, 0x2B1BU, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(858, 440, 0x2B1CU, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(286, 154, 0x2B50U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(352, 418, 0x2B55U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(484, 440, 0x3030U, 0x0U, 1); - new (toFill++) EmojiData(506, 440, 0x303DU, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(858, 374, 0x3297U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(836, 374, 0x3299U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(176, 352, 0x2320E3U, 0x0U, 2); - new (toFill++) EmojiData(110, 352, 0x3020E3U, 0x0U, 2); - new (toFill++) EmojiData(792, 330, 0x3120E3U, 0x0U, 2); - new (toFill++) EmojiData(814, 330, 0x3220E3U, 0x0U, 2); - new (toFill++) EmojiData(836, 330, 0x3320E3U, 0x0U, 2); - new (toFill++) EmojiData(858, 330, 0x3420E3U, 0x0U, 2); - new (toFill++) EmojiData(0, 352, 0x3520E3U, 0x0U, 2); - new (toFill++) EmojiData(22, 352, 0x3620E3U, 0x0U, 2); - new (toFill++) EmojiData(44, 352, 0x3720E3U, 0x0U, 2); - new (toFill++) EmojiData(66, 352, 0x3820E3U, 0x0U, 2); - new (toFill++) EmojiData(88, 352, 0x3920E3U, 0x0U, 2); - new (toFill++) EmojiData(308, 242, 0xD83CDC04U, 0x0U, 2, 0xFE0F); - new (toFill++) EmojiData(264, 242, 0xD83CDCCFU, 0x0U, 2); - new (toFill++) EmojiData(462, 396, 0xD83CDD70U, 0x0U, 2); - new (toFill++) EmojiData(484, 396, 0xD83CDD71U, 0x0U, 2); - new (toFill++) EmojiData(528, 396, 0xD83CDD7EU, 0x0U, 2); - new (toFill++) EmojiData(572, 374, 0xD83CDD7FU, 0x0U, 2, 0xFE0F); - new (toFill++) EmojiData(506, 396, 0xD83CDD8EU, 0x0U, 2); - new (toFill++) EmojiData(0, 396, 0xD83CDD91U, 0x0U, 2); - new (toFill++) EmojiData(66, 374, 0xD83CDD92U, 0x0U, 2); - new (toFill++) EmojiData(88, 374, 0xD83CDD93U, 0x0U, 2); - new (toFill++) EmojiData(44, 396, 0xD83CDD94U, 0x0U, 2); - new (toFill++) EmojiData(22, 374, 0xD83CDD95U, 0x0U, 2); - new (toFill++) EmojiData(110, 374, 0xD83CDD96U, 0x0U, 2); - new (toFill++) EmojiData(814, 352, 0xD83CDD97U, 0x0U, 2); - new (toFill++) EmojiData(22, 396, 0xD83CDD98U, 0x0U, 2); - new (toFill++) EmojiData(44, 374, 0xD83CDD99U, 0x0U, 2); - new (toFill++) EmojiData(396, 396, 0xD83CDD9AU, 0x0U, 2); - new (toFill++) EmojiData(638, 330, 0xD83CDDE8U, 0xD83CDDF3U, 4); - new (toFill++) EmojiData(616, 330, 0xD83CDDE9U, 0xD83CDDEAU, 4); - new (toFill++) EmojiData(704, 330, 0xD83CDDEAU, 0xD83CDDF8U, 4); - new (toFill++) EmojiData(682, 330, 0xD83CDDEBU, 0xD83CDDF7U, 4); - new (toFill++) EmojiData(770, 330, 0xD83CDDECU, 0xD83CDDE7U, 4); - new (toFill++) EmojiData(726, 330, 0xD83CDDEEU, 0xD83CDDF9U, 4); - new (toFill++) EmojiData(572, 330, 0xD83CDDEFU, 0xD83CDDF5U, 4); - new (toFill++) EmojiData(594, 330, 0xD83CDDF0U, 0xD83CDDF7U, 4); - new (toFill++) EmojiData(748, 330, 0xD83CDDF7U, 0xD83CDDFAU, 4); - new (toFill++) EmojiData(660, 330, 0xD83CDDFAU, 0xD83CDDF8U, 4); - new (toFill++) EmojiData(176, 374, 0xD83CDE01U, 0x0U, 2); - new (toFill++) EmojiData(682, 374, 0xD83CDE02U, 0x0U, 2); - new (toFill++) EmojiData(396, 374, 0xD83CDE1AU, 0x0U, 2, 0xFE0F); - new (toFill++) EmojiData(198, 374, 0xD83CDE2FU, 0x0U, 2, 0xFE0F); - new (toFill++) EmojiData(286, 374, 0xD83CDE32U, 0x0U, 2); - new (toFill++) EmojiData(220, 374, 0xD83CDE33U, 0x0U, 2); - new (toFill++) EmojiData(264, 374, 0xD83CDE34U, 0x0U, 2); - new (toFill++) EmojiData(242, 374, 0xD83CDE35U, 0x0U, 2); - new (toFill++) EmojiData(374, 374, 0xD83CDE36U, 0x0U, 2); - new (toFill++) EmojiData(638, 374, 0xD83CDE37U, 0x0U, 2); - new (toFill++) EmojiData(660, 374, 0xD83CDE38U, 0x0U, 2); - new (toFill++) EmojiData(330, 374, 0xD83CDE39U, 0x0U, 2); - new (toFill++) EmojiData(352, 374, 0xD83CDE3AU, 0x0U, 2); - new (toFill++) EmojiData(308, 374, 0xD83CDE50U, 0x0U, 2); - new (toFill++) EmojiData(814, 374, 0xD83CDE51U, 0x0U, 2); - new (toFill++) EmojiData(462, 154, 0xD83CDF00U, 0x0U, 2); - new (toFill++) EmojiData(484, 154, 0xD83CDF01U, 0x0U, 2); - new (toFill++) EmojiData(132, 88, 0xD83CDF02U, 0x0U, 2); - new (toFill++) EmojiData(0, 308, 0xD83CDF03U, 0x0U, 2); - new (toFill++) EmojiData(836, 286, 0xD83CDF04U, 0x0U, 2); - new (toFill++) EmojiData(858, 286, 0xD83CDF05U, 0x0U, 2); - new (toFill++) EmojiData(660, 286, 0xD83CDF06U, 0x0U, 2); - new (toFill++) EmojiData(638, 286, 0xD83CDF07U, 0x0U, 2); - new (toFill++) EmojiData(506, 154, 0xD83CDF08U, 0x0U, 2); - new (toFill++) EmojiData(44, 308, 0xD83CDF09U, 0x0U, 2); - new (toFill++) EmojiData(528, 154, 0xD83CDF0AU, 0x0U, 2); - new (toFill++) EmojiData(220, 154, 0xD83CDF0BU, 0x0U, 2); - new (toFill++) EmojiData(242, 154, 0xD83CDF0CU, 0x0U, 2); - new (toFill++) EmojiData(154, 154, 0xD83CDF0DU, 0x0U, 2); - new (toFill++) EmojiData(176, 154, 0xD83CDF0EU, 0x0U, 2); - new (toFill++) EmojiData(198, 154, 0xD83CDF0FU, 0x0U, 2); - new (toFill++) EmojiData(704, 132, 0xD83CDF10U, 0x0U, 2); - new (toFill++) EmojiData(792, 132, 0xD83CDF11U, 0x0U, 2); - new (toFill++) EmojiData(814, 132, 0xD83CDF12U, 0x0U, 2); - new (toFill++) EmojiData(836, 132, 0xD83CDF13U, 0x0U, 2); - new (toFill++) EmojiData(858, 132, 0xD83CDF14U, 0x0U, 2); - new (toFill++) EmojiData(0, 154, 0xD83CDF15U, 0x0U, 2); - new (toFill++) EmojiData(22, 154, 0xD83CDF16U, 0x0U, 2); - new (toFill++) EmojiData(44, 154, 0xD83CDF17U, 0x0U, 2); - new (toFill++) EmojiData(66, 154, 0xD83CDF18U, 0x0U, 2); - new (toFill++) EmojiData(132, 154, 0xD83CDF19U, 0x0U, 2); - new (toFill++) EmojiData(770, 132, 0xD83CDF1AU, 0x0U, 2); - new (toFill++) EmojiData(110, 154, 0xD83CDF1BU, 0x0U, 2); - new (toFill++) EmojiData(88, 154, 0xD83CDF1CU, 0x0U, 2); - new (toFill++) EmojiData(748, 132, 0xD83CDF1DU, 0x0U, 2); - new (toFill++) EmojiData(726, 132, 0xD83CDF1EU, 0x0U, 2); - new (toFill++) EmojiData(264, 44, 0xD83CDF1FU, 0x0U, 2); - new (toFill++) EmojiData(264, 154, 0xD83CDF20U, 0x0U, 2); - new (toFill++) EmojiData(638, 132, 0xD83CDF30U, 0x0U, 2); - new (toFill++) EmojiData(660, 132, 0xD83CDF31U, 0x0U, 2); - new (toFill++) EmojiData(594, 132, 0xD83CDF32U, 0x0U, 2); - new (toFill++) EmojiData(616, 132, 0xD83CDF33U, 0x0U, 2); - new (toFill++) EmojiData(572, 132, 0xD83CDF34U, 0x0U, 2); - new (toFill++) EmojiData(550, 132, 0xD83CDF35U, 0x0U, 2); - new (toFill++) EmojiData(308, 132, 0xD83CDF37U, 0x0U, 2); - new (toFill++) EmojiData(286, 132, 0xD83CDF38U, 0x0U, 2); - new (toFill++) EmojiData(352, 132, 0xD83CDF39U, 0x0U, 2); - new (toFill++) EmojiData(396, 132, 0xD83CDF3AU, 0x0U, 2); - new (toFill++) EmojiData(374, 132, 0xD83CDF3BU, 0x0U, 2); - new (toFill++) EmojiData(682, 132, 0xD83CDF3CU, 0x0U, 2); - new (toFill++) EmojiData(308, 286, 0xD83CDF3DU, 0x0U, 2); - new (toFill++) EmojiData(506, 132, 0xD83CDF3EU, 0x0U, 2); - new (toFill++) EmojiData(484, 132, 0xD83CDF3FU, 0x0U, 2); - new (toFill++) EmojiData(330, 132, 0xD83CDF40U, 0x0U, 2); - new (toFill++) EmojiData(418, 132, 0xD83CDF41U, 0x0U, 2); - new (toFill++) EmojiData(462, 132, 0xD83CDF42U, 0x0U, 2); - new (toFill++) EmojiData(440, 132, 0xD83CDF43U, 0x0U, 2); - new (toFill++) EmojiData(528, 132, 0xD83CDF44U, 0x0U, 2); - new (toFill++) EmojiData(286, 286, 0xD83CDF45U, 0x0U, 2); - new (toFill++) EmojiData(264, 286, 0xD83CDF46U, 0x0U, 2); - new (toFill++) EmojiData(66, 286, 0xD83CDF47U, 0x0U, 2); - new (toFill++) EmojiData(154, 286, 0xD83CDF48U, 0x0U, 2); - new (toFill++) EmojiData(88, 286, 0xD83CDF49U, 0x0U, 2); - new (toFill++) EmojiData(0, 286, 0xD83CDF4AU, 0x0U, 2); - new (toFill++) EmojiData(22, 286, 0xD83CDF4BU, 0x0U, 2); - new (toFill++) EmojiData(176, 286, 0xD83CDF4CU, 0x0U, 2); - new (toFill++) EmojiData(220, 286, 0xD83CDF4DU, 0x0U, 2); - new (toFill++) EmojiData(836, 264, 0xD83CDF4EU, 0x0U, 2); - new (toFill++) EmojiData(858, 264, 0xD83CDF4FU, 0x0U, 2); - new (toFill++) EmojiData(198, 286, 0xD83CDF50U, 0x0U, 2); - new (toFill++) EmojiData(132, 286, 0xD83CDF51U, 0x0U, 2); - new (toFill++) EmojiData(44, 286, 0xD83CDF52U, 0x0U, 2); - new (toFill++) EmojiData(110, 286, 0xD83CDF53U, 0x0U, 2); - new (toFill++) EmojiData(154, 264, 0xD83CDF54U, 0x0U, 2); - new (toFill++) EmojiData(132, 264, 0xD83CDF55U, 0x0U, 2); - new (toFill++) EmojiData(220, 264, 0xD83CDF56U, 0x0U, 2); - new (toFill++) EmojiData(198, 264, 0xD83CDF57U, 0x0U, 2); - new (toFill++) EmojiData(396, 264, 0xD83CDF58U, 0x0U, 2); - new (toFill++) EmojiData(374, 264, 0xD83CDF59U, 0x0U, 2); - new (toFill++) EmojiData(418, 264, 0xD83CDF5AU, 0x0U, 2); - new (toFill++) EmojiData(264, 264, 0xD83CDF5BU, 0x0U, 2); - new (toFill++) EmojiData(440, 264, 0xD83CDF5CU, 0x0U, 2); - new (toFill++) EmojiData(242, 264, 0xD83CDF5DU, 0x0U, 2); - new (toFill++) EmojiData(550, 264, 0xD83CDF5EU, 0x0U, 2); - new (toFill++) EmojiData(176, 264, 0xD83CDF5FU, 0x0U, 2); - new (toFill++) EmojiData(242, 286, 0xD83CDF60U, 0x0U, 2); - new (toFill++) EmojiData(506, 264, 0xD83CDF61U, 0x0U, 2); - new (toFill++) EmojiData(484, 264, 0xD83CDF62U, 0x0U, 2); - new (toFill++) EmojiData(330, 264, 0xD83CDF63U, 0x0U, 2); - new (toFill++) EmojiData(286, 264, 0xD83CDF64U, 0x0U, 2); - new (toFill++) EmojiData(352, 264, 0xD83CDF65U, 0x0U, 2); - new (toFill++) EmojiData(616, 264, 0xD83CDF66U, 0x0U, 2); - new (toFill++) EmojiData(660, 264, 0xD83CDF67U, 0x0U, 2); - new (toFill++) EmojiData(638, 264, 0xD83CDF68U, 0x0U, 2); - new (toFill++) EmojiData(572, 264, 0xD83CDF69U, 0x0U, 2); - new (toFill++) EmojiData(726, 264, 0xD83CDF6AU, 0x0U, 2); - new (toFill++) EmojiData(748, 264, 0xD83CDF6BU, 0x0U, 2); - new (toFill++) EmojiData(770, 264, 0xD83CDF6CU, 0x0U, 2); - new (toFill++) EmojiData(792, 264, 0xD83CDF6DU, 0x0U, 2); - new (toFill++) EmojiData(594, 264, 0xD83CDF6EU, 0x0U, 2); - new (toFill++) EmojiData(814, 264, 0xD83CDF6FU, 0x0U, 2); - new (toFill++) EmojiData(704, 264, 0xD83CDF70U, 0x0U, 2); - new (toFill++) EmojiData(308, 264, 0xD83CDF71U, 0x0U, 2); - new (toFill++) EmojiData(462, 264, 0xD83CDF72U, 0x0U, 2); - new (toFill++) EmojiData(528, 264, 0xD83CDF73U, 0x0U, 2); - new (toFill++) EmojiData(110, 264, 0xD83CDF74U, 0x0U, 2); - new (toFill++) EmojiData(814, 242, 0xD83CDF75U, 0x0U, 2); - new (toFill++) EmojiData(836, 242, 0xD83CDF76U, 0x0U, 2); - new (toFill++) EmojiData(88, 264, 0xD83CDF77U, 0x0U, 2); - new (toFill++) EmojiData(44, 264, 0xD83CDF78U, 0x0U, 2); - new (toFill++) EmojiData(66, 264, 0xD83CDF79U, 0x0U, 2); - new (toFill++) EmojiData(0, 264, 0xD83CDF7AU, 0x0U, 2); - new (toFill++) EmojiData(22, 264, 0xD83CDF7BU, 0x0U, 2); - new (toFill++) EmojiData(858, 242, 0xD83CDF7CU, 0x0U, 2); - new (toFill++) EmojiData(110, 88, 0xD83CDF80U, 0x0U, 2); - new (toFill++) EmojiData(858, 154, 0xD83CDF81U, 0x0U, 2); - new (toFill++) EmojiData(682, 264, 0xD83CDF82U, 0x0U, 2); - new (toFill++) EmojiData(770, 154, 0xD83CDF83U, 0x0U, 2); - new (toFill++) EmojiData(836, 154, 0xD83CDF84U, 0x0U, 2); - new (toFill++) EmojiData(814, 154, 0xD83CDF85U, 0x0U, 2); - new (toFill++) EmojiData(682, 154, 0xD83CDF86U, 0x0U, 2); - new (toFill++) EmojiData(704, 154, 0xD83CDF87U, 0x0U, 2); - new (toFill++) EmojiData(66, 176, 0xD83CDF88U, 0x0U, 2); - new (toFill++) EmojiData(22, 176, 0xD83CDF89U, 0x0U, 2); - new (toFill++) EmojiData(44, 176, 0xD83CDF8AU, 0x0U, 2); - new (toFill++) EmojiData(0, 176, 0xD83CDF8BU, 0x0U, 2); - new (toFill++) EmojiData(88, 176, 0xD83CDF8CU, 0x0U, 2); - new (toFill++) EmojiData(550, 154, 0xD83CDF8DU, 0x0U, 2); - new (toFill++) EmojiData(594, 154, 0xD83CDF8EU, 0x0U, 2); - new (toFill++) EmojiData(660, 154, 0xD83CDF8FU, 0x0U, 2); - new (toFill++) EmojiData(726, 154, 0xD83CDF90U, 0x0U, 2); - new (toFill++) EmojiData(748, 154, 0xD83CDF91U, 0x0U, 2); - new (toFill++) EmojiData(616, 154, 0xD83CDF92U, 0x0U, 2); - new (toFill++) EmojiData(638, 154, 0xD83CDF93U, 0x0U, 2); - new (toFill++) EmojiData(66, 308, 0xD83CDFA0U, 0x0U, 2); - new (toFill++) EmojiData(88, 308, 0xD83CDFA1U, 0x0U, 2); - new (toFill++) EmojiData(132, 308, 0xD83CDFA2U, 0x0U, 2); - new (toFill++) EmojiData(770, 242, 0xD83CDFA3U, 0x0U, 2); - new (toFill++) EmojiData(0, 242, 0xD83CDFA4U, 0x0U, 2); - new (toFill++) EmojiData(132, 176, 0xD83CDFA5U, 0x0U, 2); - new (toFill++) EmojiData(154, 374, 0xD83CDFA6U, 0x0U, 2); - new (toFill++) EmojiData(22, 242, 0xD83CDFA7U, 0x0U, 2); - new (toFill++) EmojiData(836, 220, 0xD83CDFA8U, 0x0U, 2); - new (toFill++) EmojiData(528, 66, 0xD83CDFA9U, 0x0U, 2); - new (toFill++) EmojiData(484, 330, 0xD83CDFAAU, 0x0U, 2); - new (toFill++) EmojiData(242, 330, 0xD83CDFABU, 0x0U, 2); - new (toFill++) EmojiData(858, 220, 0xD83CDFACU, 0x0U, 2); - new (toFill++) EmojiData(506, 330, 0xD83CDFADU, 0x0U, 2); - new (toFill++) EmojiData(242, 242, 0xD83CDFAEU, 0x0U, 2); - new (toFill++) EmojiData(352, 242, 0xD83CDFAFU, 0x0U, 2); - new (toFill++) EmojiData(418, 330, 0xD83CDFB0U, 0x0U, 2); - new (toFill++) EmojiData(484, 242, 0xD83CDFB1U, 0x0U, 2); - new (toFill++) EmojiData(330, 242, 0xD83CDFB2U, 0x0U, 2); - new (toFill++) EmojiData(528, 242, 0xD83CDFB3U, 0x0U, 2); - new (toFill++) EmojiData(286, 242, 0xD83CDFB4U, 0x0U, 2); - new (toFill++) EmojiData(66, 242, 0xD83CDFB5U, 0x0U, 2); - new (toFill++) EmojiData(88, 242, 0xD83CDFB6U, 0x0U, 2); - new (toFill++) EmojiData(176, 242, 0xD83CDFB7U, 0x0U, 2); - new (toFill++) EmojiData(198, 242, 0xD83CDFB8U, 0x0U, 2); - new (toFill++) EmojiData(110, 242, 0xD83CDFB9U, 0x0U, 2); - new (toFill++) EmojiData(154, 242, 0xD83CDFBAU, 0x0U, 2); - new (toFill++) EmojiData(132, 242, 0xD83CDFBBU, 0x0U, 2); - new (toFill++) EmojiData(44, 242, 0xD83CDFBCU, 0x0U, 2); - new (toFill++) EmojiData(792, 66, 0xD83CDFBDU, 0x0U, 2); - new (toFill++) EmojiData(462, 242, 0xD83CDFBEU, 0x0U, 2); - new (toFill++) EmojiData(682, 242, 0xD83CDFBFU, 0x0U, 2); - new (toFill++) EmojiData(396, 242, 0xD83CDFC0U, 0x0U, 2); - new (toFill++) EmojiData(616, 242, 0xD83CDFC1U, 0x0U, 2); - new (toFill++) EmojiData(704, 242, 0xD83CDFC2U, 0x0U, 2); - new (toFill++) EmojiData(88, 66, 0xD83CDFC3U, 0x0U, 2); - new (toFill++) EmojiData(748, 242, 0xD83CDFC4U, 0x0U, 2); - new (toFill++) EmojiData(660, 242, 0xD83CDFC6U, 0x0U, 2); - new (toFill++) EmojiData(638, 242, 0xD83CDFC7U, 0x0U, 2); - new (toFill++) EmojiData(374, 242, 0xD83CDFC8U, 0x0U, 2); - new (toFill++) EmojiData(506, 242, 0xD83CDFC9U, 0x0U, 2); - new (toFill++) EmojiData(726, 242, 0xD83CDFCAU, 0x0U, 2); - new (toFill++) EmojiData(330, 286, 0xD83CDFE0U, 0x0U, 2); - new (toFill++) EmojiData(352, 286, 0xD83CDFE1U, 0x0U, 2); - new (toFill++) EmojiData(396, 286, 0xD83CDFE2U, 0x0U, 2); - new (toFill++) EmojiData(418, 286, 0xD83CDFE3U, 0x0U, 2); - new (toFill++) EmojiData(616, 286, 0xD83CDFE4U, 0x0U, 2); - new (toFill++) EmojiData(440, 286, 0xD83CDFE5U, 0x0U, 2); - new (toFill++) EmojiData(462, 286, 0xD83CDFE6U, 0x0U, 2); - new (toFill++) EmojiData(44, 418, 0xD83CDFE7U, 0x0U, 2); - new (toFill++) EmojiData(528, 286, 0xD83CDFE8U, 0x0U, 2); - new (toFill++) EmojiData(506, 286, 0xD83CDFE9U, 0x0U, 2); - new (toFill++) EmojiData(484, 286, 0xD83CDFEAU, 0x0U, 2); - new (toFill++) EmojiData(374, 286, 0xD83CDFEBU, 0x0U, 2); - new (toFill++) EmojiData(594, 286, 0xD83CDFECU, 0x0U, 2); - new (toFill++) EmojiData(748, 286, 0xD83CDFEDU, 0x0U, 2); - new (toFill++) EmojiData(396, 330, 0xD83CDFEEU, 0x0U, 2); - new (toFill++) EmojiData(682, 286, 0xD83CDFEFU, 0x0U, 2); - new (toFill++) EmojiData(704, 286, 0xD83CDFF0U, 0x0U, 2); - new (toFill++) EmojiData(682, 110, 0xD83DDC00U, 0x0U, 2); - new (toFill++) EmojiData(22, 132, 0xD83DDC01U, 0x0U, 2); - new (toFill++) EmojiData(44, 132, 0xD83DDC02U, 0x0U, 2); - new (toFill++) EmojiData(704, 110, 0xD83DDC03U, 0x0U, 2); - new (toFill++) EmojiData(638, 110, 0xD83DDC04U, 0x0U, 2); - new (toFill++) EmojiData(726, 110, 0xD83DDC05U, 0x0U, 2); - new (toFill++) EmojiData(176, 132, 0xD83DDC06U, 0x0U, 2); - new (toFill++) EmojiData(748, 110, 0xD83DDC07U, 0x0U, 2); - new (toFill++) EmojiData(198, 132, 0xD83DDC08U, 0x0U, 2); - new (toFill++) EmojiData(770, 110, 0xD83DDC09U, 0x0U, 2); - new (toFill++) EmojiData(110, 132, 0xD83DDC0AU, 0x0U, 2); - new (toFill++) EmojiData(616, 110, 0xD83DDC0BU, 0x0U, 2); - new (toFill++) EmojiData(462, 110, 0xD83DDC0CU, 0x0U, 2); - new (toFill++) EmojiData(330, 110, 0xD83DDC0DU, 0x0U, 2); - new (toFill++) EmojiData(792, 110, 0xD83DDC0EU, 0x0U, 2); - new (toFill++) EmojiData(660, 110, 0xD83DDC0FU, 0x0U, 2); - new (toFill++) EmojiData(814, 110, 0xD83DDC10U, 0x0U, 2); - new (toFill++) EmojiData(132, 110, 0xD83DDC11U, 0x0U, 2); - new (toFill++) EmojiData(88, 110, 0xD83DDC12U, 0x0U, 2); - new (toFill++) EmojiData(836, 110, 0xD83DDC13U, 0x0U, 2); - new (toFill++) EmojiData(308, 110, 0xD83DDC14U, 0x0U, 2); - new (toFill++) EmojiData(858, 110, 0xD83DDC15U, 0x0U, 2); - new (toFill++) EmojiData(0, 132, 0xD83DDC16U, 0x0U, 2); - new (toFill++) EmojiData(44, 110, 0xD83DDC17U, 0x0U, 2); - new (toFill++) EmojiData(154, 110, 0xD83DDC18U, 0x0U, 2); - new (toFill++) EmojiData(484, 110, 0xD83DDC19U, 0x0U, 2); - new (toFill++) EmojiData(506, 110, 0xD83DDC1AU, 0x0U, 2); - new (toFill++) EmojiData(374, 110, 0xD83DDC1BU, 0x0U, 2); - new (toFill++) EmojiData(418, 110, 0xD83DDC1CU, 0x0U, 2); - new (toFill++) EmojiData(396, 110, 0xD83DDC1DU, 0x0U, 2); - new (toFill++) EmojiData(440, 110, 0xD83DDC1EU, 0x0U, 2); - new (toFill++) EmojiData(550, 110, 0xD83DDC1FU, 0x0U, 2); - new (toFill++) EmojiData(528, 110, 0xD83DDC20U, 0x0U, 2); - new (toFill++) EmojiData(88, 132, 0xD83DDC21U, 0x0U, 2); - new (toFill++) EmojiData(352, 110, 0xD83DDC22U, 0x0U, 2); - new (toFill++) EmojiData(286, 110, 0xD83DDC23U, 0x0U, 2); - new (toFill++) EmojiData(242, 110, 0xD83DDC24U, 0x0U, 2); - new (toFill++) EmojiData(264, 110, 0xD83DDC25U, 0x0U, 2); - new (toFill++) EmojiData(220, 110, 0xD83DDC26U, 0x0U, 2); - new (toFill++) EmojiData(198, 110, 0xD83DDC27U, 0x0U, 2); - new (toFill++) EmojiData(814, 88, 0xD83DDC28U, 0x0U, 2); - new (toFill++) EmojiData(220, 132, 0xD83DDC29U, 0x0U, 2); - new (toFill++) EmojiData(154, 132, 0xD83DDC2AU, 0x0U, 2); - new (toFill++) EmojiData(132, 132, 0xD83DDC2BU, 0x0U, 2); - new (toFill++) EmojiData(572, 110, 0xD83DDC2CU, 0x0U, 2); - new (toFill++) EmojiData(704, 88, 0xD83DDC2DU, 0x0U, 2); - new (toFill++) EmojiData(22, 110, 0xD83DDC2EU, 0x0U, 2); - new (toFill++) EmojiData(792, 88, 0xD83DDC2FU, 0x0U, 2); - new (toFill++) EmojiData(748, 88, 0xD83DDC30U, 0x0U, 2); - new (toFill++) EmojiData(682, 88, 0xD83DDC31U, 0x0U, 2); - new (toFill++) EmojiData(66, 132, 0xD83DDC32U, 0x0U, 2); - new (toFill++) EmojiData(594, 110, 0xD83DDC33U, 0x0U, 2); - new (toFill++) EmojiData(110, 110, 0xD83DDC34U, 0x0U, 2); - new (toFill++) EmojiData(66, 110, 0xD83DDC35U, 0x0U, 2); - new (toFill++) EmojiData(638, 88, 0xD83DDC36U, 0x0U, 2); - new (toFill++) EmojiData(858, 88, 0xD83DDC37U, 0x0U, 2); - new (toFill++) EmojiData(770, 88, 0xD83DDC38U, 0x0U, 2); - new (toFill++) EmojiData(726, 88, 0xD83DDC39U, 0x0U, 2); - new (toFill++) EmojiData(660, 88, 0xD83DDC3AU, 0x0U, 2); - new (toFill++) EmojiData(836, 88, 0xD83DDC3BU, 0x0U, 2); - new (toFill++) EmojiData(176, 110, 0xD83DDC3CU, 0x0U, 2); - new (toFill++) EmojiData(0, 110, 0xD83DDC3DU, 0x0U, 2); - new (toFill++) EmojiData(242, 132, 0xD83DDC3EU, 0x0U, 2); - new (toFill++) EmojiData(462, 44, 0xD83DDC40U, 0x0U, 2); - new (toFill++) EmojiData(440, 44, 0xD83DDC42U, 0x0U, 2); - new (toFill++) EmojiData(484, 44, 0xD83DDC43U, 0x0U, 2); - new (toFill++) EmojiData(528, 44, 0xD83DDC44U, 0x0U, 2); - new (toFill++) EmojiData(506, 44, 0xD83DDC45U, 0x0U, 2); - new (toFill++) EmojiData(748, 44, 0xD83DDC46U, 0x0U, 2); - new (toFill++) EmojiData(770, 44, 0xD83DDC47U, 0x0U, 2); - new (toFill++) EmojiData(814, 44, 0xD83DDC48U, 0x0U, 2); - new (toFill++) EmojiData(792, 44, 0xD83DDC49U, 0x0U, 2); - new (toFill++) EmojiData(616, 44, 0xD83DDC4AU, 0x0U, 2); - new (toFill++) EmojiData(682, 44, 0xD83DDC4BU, 0x0U, 2); - new (toFill++) EmojiData(594, 44, 0xD83DDC4CU, 0x0U, 2); - new (toFill++) EmojiData(550, 44, 0xD83DDC4DU, 0x0U, 2); - new (toFill++) EmojiData(572, 44, 0xD83DDC4EU, 0x0U, 2); - new (toFill++) EmojiData(22, 66, 0xD83DDC4FU, 0x0U, 2); - new (toFill++) EmojiData(726, 44, 0xD83DDC50U, 0x0U, 2); - new (toFill++) EmojiData(550, 66, 0xD83DDC51U, 0x0U, 2); - new (toFill++) EmojiData(572, 66, 0xD83DDC52U, 0x0U, 2); - new (toFill++) EmojiData(88, 88, 0xD83DDC53U, 0x0U, 2); - new (toFill++) EmojiData(726, 66, 0xD83DDC54U, 0x0U, 2); - new (toFill++) EmojiData(704, 66, 0xD83DDC55U, 0x0U, 2); - new (toFill++) EmojiData(814, 66, 0xD83DDC56U, 0x0U, 2); - new (toFill++) EmojiData(770, 66, 0xD83DDC57U, 0x0U, 2); - new (toFill++) EmojiData(836, 66, 0xD83DDC58U, 0x0U, 2); - new (toFill++) EmojiData(858, 66, 0xD83DDC59U, 0x0U, 2); - new (toFill++) EmojiData(748, 66, 0xD83DDC5AU, 0x0U, 2); - new (toFill++) EmojiData(66, 88, 0xD83DDC5BU, 0x0U, 2); - new (toFill++) EmojiData(22, 88, 0xD83DDC5CU, 0x0U, 2); - new (toFill++) EmojiData(44, 88, 0xD83DDC5DU, 0x0U, 2); - new (toFill++) EmojiData(616, 66, 0xD83DDC5EU, 0x0U, 2); - new (toFill++) EmojiData(594, 66, 0xD83DDC5FU, 0x0U, 2); - new (toFill++) EmojiData(660, 66, 0xD83DDC60U, 0x0U, 2); - new (toFill++) EmojiData(638, 66, 0xD83DDC61U, 0x0U, 2); - new (toFill++) EmojiData(682, 66, 0xD83DDC62U, 0x0U, 2); - new (toFill++) EmojiData(594, 88, 0xD83DDC63U, 0x0U, 2); - new (toFill++) EmojiData(528, 88, 0xD83DDC64U, 0x0U, 2); - new (toFill++) EmojiData(550, 88, 0xD83DDC65U, 0x0U, 2); - new (toFill++) EmojiData(528, 22, 0xD83DDC66U, 0x0U, 2); - new (toFill++) EmojiData(550, 22, 0xD83DDC67U, 0x0U, 2); - new (toFill++) EmojiData(572, 22, 0xD83DDC68U, 0x0U, 2); - new (toFill++) EmojiData(594, 22, 0xD83DDC69U, 0x0U, 2); - new (toFill++) EmojiData(154, 66, 0xD83DDC6AU, 0x0U, 2); - new (toFill++) EmojiData(132, 66, 0xD83DDC6BU, 0x0U, 2); - new (toFill++) EmojiData(176, 66, 0xD83DDC6CU, 0x0U, 2); - new (toFill++) EmojiData(198, 66, 0xD83DDC6DU, 0x0U, 2); - new (toFill++) EmojiData(440, 22, 0xD83DDC6EU, 0x0U, 2); - new (toFill++) EmojiData(264, 66, 0xD83DDC6FU, 0x0U, 2); - new (toFill++) EmojiData(440, 66, 0xD83DDC70U, 0x0U, 2); - new (toFill++) EmojiData(660, 22, 0xD83DDC71U, 0x0U, 2); - new (toFill++) EmojiData(396, 22, 0xD83DDC72U, 0x0U, 2); - new (toFill++) EmojiData(418, 22, 0xD83DDC73U, 0x0U, 2); - new (toFill++) EmojiData(616, 22, 0xD83DDC74U, 0x0U, 2); - new (toFill++) EmojiData(638, 22, 0xD83DDC75U, 0x0U, 2); - new (toFill++) EmojiData(506, 22, 0xD83DDC76U, 0x0U, 2); - new (toFill++) EmojiData(462, 22, 0xD83DDC77U, 0x0U, 2); - new (toFill++) EmojiData(704, 22, 0xD83DDC78U, 0x0U, 2); - new (toFill++) EmojiData(44, 44, 0xD83DDC79U, 0x0U, 2); - new (toFill++) EmojiData(66, 44, 0xD83DDC7AU, 0x0U, 2); - new (toFill++) EmojiData(792, 154, 0xD83DDC7BU, 0x0U, 2); - new (toFill++) EmojiData(682, 22, 0xD83DDC7CU, 0x0U, 2); - new (toFill++) EmojiData(176, 44, 0xD83DDC7DU, 0x0U, 2); - new (toFill++) EmojiData(220, 242, 0xD83DDC7EU, 0x0U, 2); - new (toFill++) EmojiData(176, 22, 0xD83DDC7FU, 0x0U, 2); - new (toFill++) EmojiData(154, 44, 0xD83DDC80U, 0x0U, 2); - new (toFill++) EmojiData(330, 66, 0xD83DDC81U, 0x0U, 2); - new (toFill++) EmojiData(484, 22, 0xD83DDC82U, 0x0U, 2); - new (toFill++) EmojiData(110, 66, 0xD83DDC83U, 0x0U, 2); - new (toFill++) EmojiData(154, 88, 0xD83DDC84U, 0x0U, 2); - new (toFill++) EmojiData(418, 66, 0xD83DDC85U, 0x0U, 2); - new (toFill++) EmojiData(374, 66, 0xD83DDC86U, 0x0U, 2); - new (toFill++) EmojiData(396, 66, 0xD83DDC87U, 0x0U, 2); - new (toFill++) EmojiData(198, 330, 0xD83DDC88U, 0x0U, 2); - new (toFill++) EmojiData(462, 198, 0xD83DDC89U, 0x0U, 2); - new (toFill++) EmojiData(440, 198, 0xD83DDC8AU, 0x0U, 2); - new (toFill++) EmojiData(462, 88, 0xD83DDC8BU, 0x0U, 2); - new (toFill++) EmojiData(440, 88, 0xD83DDC8CU, 0x0U, 2); - new (toFill++) EmojiData(484, 88, 0xD83DDC8DU, 0x0U, 2); - new (toFill++) EmojiData(506, 88, 0xD83DDC8EU, 0x0U, 2); - new (toFill++) EmojiData(220, 66, 0xD83DDC8FU, 0x0U, 2); - new (toFill++) EmojiData(264, 132, 0xD83DDC90U, 0x0U, 2); - new (toFill++) EmojiData(242, 66, 0xD83DDC91U, 0x0U, 2); - new (toFill++) EmojiData(550, 286, 0xD83DDC92U, 0x0U, 2); - new (toFill++) EmojiData(330, 88, 0xD83DDC93U, 0x0U, 2); - new (toFill++) EmojiData(286, 88, 0xD83DDC94U, 0x0U, 2); - new (toFill++) EmojiData(352, 88, 0xD83DDC95U, 0x0U, 2); - new (toFill++) EmojiData(374, 88, 0xD83DDC96U, 0x0U, 2); - new (toFill++) EmojiData(308, 88, 0xD83DDC97U, 0x0U, 2); - new (toFill++) EmojiData(418, 88, 0xD83DDC98U, 0x0U, 2); - new (toFill++) EmojiData(198, 88, 0xD83DDC99U, 0x0U, 2); - new (toFill++) EmojiData(242, 88, 0xD83DDC9AU, 0x0U, 2); - new (toFill++) EmojiData(176, 88, 0xD83DDC9BU, 0x0U, 2); - new (toFill++) EmojiData(220, 88, 0xD83DDC9CU, 0x0U, 2); - new (toFill++) EmojiData(572, 154, 0xD83DDC9DU, 0x0U, 2); - new (toFill++) EmojiData(396, 88, 0xD83DDC9EU, 0x0U, 2); - new (toFill++) EmojiData(374, 396, 0xD83DDC9FU, 0x0U, 2); - new (toFill++) EmojiData(550, 396, 0xD83DDCA0U, 0x0U, 2); - new (toFill++) EmojiData(22, 198, 0xD83DDCA1U, 0x0U, 2); - new (toFill++) EmojiData(330, 44, 0xD83DDCA2U, 0x0U, 2); - new (toFill++) EmojiData(374, 198, 0xD83DDCA3U, 0x0U, 2); - new (toFill++) EmojiData(396, 44, 0xD83DDCA4U, 0x0U, 2); - new (toFill++) EmojiData(308, 44, 0xD83DDCA5U, 0x0U, 2); - new (toFill++) EmojiData(352, 44, 0xD83DDCA6U, 0x0U, 2); - new (toFill++) EmojiData(374, 44, 0xD83DDCA7U, 0x0U, 2); - new (toFill++) EmojiData(418, 44, 0xD83DDCA8U, 0x0U, 2); - new (toFill++) EmojiData(198, 44, 0xD83DDCA9U, 0x0U, 2); - new (toFill++) EmojiData(44, 66, 0xD83DDCAAU, 0x0U, 2); - new (toFill++) EmojiData(286, 44, 0xD83DDCABU, 0x0U, 2); - new (toFill++) EmojiData(572, 88, 0xD83DDCACU, 0x0U, 2); - new (toFill++) EmojiData(616, 88, 0xD83DDCADU, 0x0U, 2); - new (toFill++) EmojiData(330, 440, 0xD83DDCAEU, 0x0U, 2); - new (toFill++) EmojiData(352, 440, 0xD83DDCAFU, 0x0U, 2); - new (toFill++) EmojiData(484, 198, 0xD83DDCB0U, 0x0U, 2); - new (toFill++) EmojiData(110, 418, 0xD83DDCB1U, 0x0U, 2); - new (toFill++) EmojiData(88, 418, 0xD83DDCB2U, 0x0U, 2); - new (toFill++) EmojiData(594, 198, 0xD83DDCB3U, 0x0U, 2); - new (toFill++) EmojiData(506, 198, 0xD83DDCB4U, 0x0U, 2); - new (toFill++) EmojiData(528, 198, 0xD83DDCB5U, 0x0U, 2); - new (toFill++) EmojiData(572, 198, 0xD83DDCB6U, 0x0U, 2); - new (toFill++) EmojiData(550, 198, 0xD83DDCB7U, 0x0U, 2); - new (toFill++) EmojiData(616, 198, 0xD83DDCB8U, 0x0U, 2); - new (toFill++) EmojiData(66, 418, 0xD83DDCB9U, 0x0U, 2); - new (toFill++) EmojiData(308, 308, 0xD83DDCBAU, 0x0U, 2); - new (toFill++) EmojiData(308, 176, 0xD83DDCBBU, 0x0U, 2); - new (toFill++) EmojiData(0, 88, 0xD83DDCBCU, 0x0U, 2); - new (toFill++) EmojiData(264, 176, 0xD83DDCBDU, 0x0U, 2); - new (toFill++) EmojiData(286, 176, 0xD83DDCBEU, 0x0U, 2); - new (toFill++) EmojiData(220, 176, 0xD83DDCBFU, 0x0U, 2); - new (toFill++) EmojiData(242, 176, 0xD83DDCC0U, 0x0U, 2); - new (toFill++) EmojiData(330, 220, 0xD83DDCC1U, 0x0U, 2); - new (toFill++) EmojiData(352, 220, 0xD83DDCC2U, 0x0U, 2); - new (toFill++) EmojiData(110, 220, 0xD83DDCC3U, 0x0U, 2); - new (toFill++) EmojiData(88, 220, 0xD83DDCC4U, 0x0U, 2); - new (toFill++) EmojiData(264, 220, 0xD83DDCC5U, 0x0U, 2); - new (toFill++) EmojiData(286, 220, 0xD83DDCC6U, 0x0U, 2); - new (toFill++) EmojiData(308, 220, 0xD83DDCC7U, 0x0U, 2); - new (toFill++) EmojiData(176, 220, 0xD83DDCC8U, 0x0U, 2); - new (toFill++) EmojiData(198, 220, 0xD83DDCC9U, 0x0U, 2); - new (toFill++) EmojiData(154, 220, 0xD83DDCCAU, 0x0U, 2); - new (toFill++) EmojiData(242, 220, 0xD83DDCCBU, 0x0U, 2); - new (toFill++) EmojiData(396, 220, 0xD83DDCCCU, 0x0U, 2); - new (toFill++) EmojiData(528, 330, 0xD83DDCCDU, 0x0U, 2); - new (toFill++) EmojiData(418, 220, 0xD83DDCCEU, 0x0U, 2); - new (toFill++) EmojiData(484, 220, 0xD83DDCCFU, 0x0U, 2); - new (toFill++) EmojiData(506, 220, 0xD83DDCD0U, 0x0U, 2); - new (toFill++) EmojiData(132, 220, 0xD83DDCD1U, 0x0U, 2); - new (toFill++) EmojiData(660, 220, 0xD83DDCD2U, 0x0U, 2); - new (toFill++) EmojiData(616, 220, 0xD83DDCD3U, 0x0U, 2); - new (toFill++) EmojiData(638, 220, 0xD83DDCD4U, 0x0U, 2); - new (toFill++) EmojiData(528, 220, 0xD83DDCD5U, 0x0U, 2); - new (toFill++) EmojiData(704, 220, 0xD83DDCD6U, 0x0U, 2); - new (toFill++) EmojiData(550, 220, 0xD83DDCD7U, 0x0U, 2); - new (toFill++) EmojiData(572, 220, 0xD83DDCD8U, 0x0U, 2); - new (toFill++) EmojiData(594, 220, 0xD83DDCD9U, 0x0U, 2); - new (toFill++) EmojiData(682, 220, 0xD83DDCDAU, 0x0U, 2); - new (toFill++) EmojiData(748, 220, 0xD83DDCDBU, 0x0U, 2); - new (toFill++) EmojiData(220, 220, 0xD83DDCDCU, 0x0U, 2); - new (toFill++) EmojiData(66, 220, 0xD83DDCDDU, 0x0U, 2); - new (toFill++) EmojiData(374, 176, 0xD83DDCDEU, 0x0U, 2); - new (toFill++) EmojiData(396, 176, 0xD83DDCDFU, 0x0U, 2); - new (toFill++) EmojiData(418, 176, 0xD83DDCE0U, 0x0U, 2); - new (toFill++) EmojiData(440, 176, 0xD83DDCE1U, 0x0U, 2); - new (toFill++) EmojiData(638, 176, 0xD83DDCE2U, 0x0U, 2); - new (toFill++) EmojiData(660, 176, 0xD83DDCE3U, 0x0U, 2); - new (toFill++) EmojiData(704, 198, 0xD83DDCE4U, 0x0U, 2); - new (toFill++) EmojiData(682, 198, 0xD83DDCE5U, 0x0U, 2); - new (toFill++) EmojiData(44, 220, 0xD83DDCE6U, 0x0U, 2); - new (toFill++) EmojiData(660, 198, 0xD83DDCE7U, 0x0U, 2); - new (toFill++) EmojiData(770, 198, 0xD83DDCE8U, 0x0U, 2); - new (toFill++) EmojiData(748, 198, 0xD83DDCE9U, 0x0U, 2); - new (toFill++) EmojiData(836, 198, 0xD83DDCEAU, 0x0U, 2); - new (toFill++) EmojiData(814, 198, 0xD83DDCEBU, 0x0U, 2); - new (toFill++) EmojiData(858, 198, 0xD83DDCECU, 0x0U, 2); - new (toFill++) EmojiData(0, 220, 0xD83DDCEDU, 0x0U, 2); - new (toFill++) EmojiData(22, 220, 0xD83DDCEEU, 0x0U, 2); - new (toFill++) EmojiData(792, 198, 0xD83DDCEFU, 0x0U, 2); - new (toFill++) EmojiData(814, 220, 0xD83DDCF0U, 0x0U, 2); - new (toFill++) EmojiData(330, 176, 0xD83DDCF1U, 0x0U, 2); - new (toFill++) EmojiData(638, 198, 0xD83DDCF2U, 0x0U, 2); - new (toFill++) EmojiData(418, 396, 0xD83DDCF3U, 0x0U, 2); - new (toFill++) EmojiData(440, 396, 0xD83DDCF4U, 0x0U, 2); - new (toFill++) EmojiData(110, 396, 0xD83DDCF5U, 0x0U, 2); - new (toFill++) EmojiData(132, 374, 0xD83DDCF6U, 0x0U, 2); - new (toFill++) EmojiData(154, 176, 0xD83DDCF7U, 0x0U, 2); - new (toFill++) EmojiData(176, 176, 0xD83DDCF9U, 0x0U, 2); - new (toFill++) EmojiData(462, 176, 0xD83DDCFAU, 0x0U, 2); - new (toFill++) EmojiData(484, 176, 0xD83DDCFBU, 0x0U, 2); - new (toFill++) EmojiData(198, 176, 0xD83DDCFCU, 0x0U, 2); - new (toFill++) EmojiData(836, 352, 0xD83DDD00U, 0x0U, 2); - new (toFill++) EmojiData(858, 352, 0xD83DDD01U, 0x0U, 2); - new (toFill++) EmojiData(0, 374, 0xD83DDD02U, 0x0U, 2); - new (toFill++) EmojiData(484, 418, 0xD83DDD03U, 0x0U, 2); - new (toFill++) EmojiData(506, 352, 0xD83DDD04U, 0x0U, 2); - new (toFill++) EmojiData(88, 198, 0xD83DDD05U, 0x0U, 2); - new (toFill++) EmojiData(66, 198, 0xD83DDD06U, 0x0U, 2); - new (toFill++) EmojiData(572, 176, 0xD83DDD07U, 0x0U, 2); - new (toFill++) EmojiData(550, 176, 0xD83DDD08U, 0x0U, 2); - new (toFill++) EmojiData(528, 176, 0xD83DDD09U, 0x0U, 2); - new (toFill++) EmojiData(506, 176, 0xD83DDD0AU, 0x0U, 2); - new (toFill++) EmojiData(132, 198, 0xD83DDD0BU, 0x0U, 2); - new (toFill++) EmojiData(110, 198, 0xD83DDD0CU, 0x0U, 2); - new (toFill++) EmojiData(154, 198, 0xD83DDD0DU, 0x0U, 2); - new (toFill++) EmojiData(0, 198, 0xD83DDD0EU, 0x0U, 2); - new (toFill++) EmojiData(814, 176, 0xD83DDD0FU, 0x0U, 2); - new (toFill++) EmojiData(836, 176, 0xD83DDD10U, 0x0U, 2); - new (toFill++) EmojiData(858, 176, 0xD83DDD11U, 0x0U, 2); - new (toFill++) EmojiData(792, 176, 0xD83DDD12U, 0x0U, 2); - new (toFill++) EmojiData(770, 176, 0xD83DDD13U, 0x0U, 2); - new (toFill++) EmojiData(594, 176, 0xD83DDD14U, 0x0U, 2); - new (toFill++) EmojiData(616, 176, 0xD83DDD15U, 0x0U, 2); - new (toFill++) EmojiData(726, 220, 0xD83DDD16U, 0x0U, 2); - new (toFill++) EmojiData(440, 440, 0xD83DDD17U, 0x0U, 2); - new (toFill++) EmojiData(418, 440, 0xD83DDD18U, 0x0U, 2); - new (toFill++) EmojiData(418, 418, 0xD83DDD19U, 0x0U, 2); - new (toFill++) EmojiData(396, 418, 0xD83DDD1AU, 0x0U, 2); - new (toFill++) EmojiData(440, 418, 0xD83DDD1BU, 0x0U, 2); - new (toFill++) EmojiData(462, 418, 0xD83DDD1CU, 0x0U, 2); - new (toFill++) EmojiData(374, 418, 0xD83DDD1DU, 0x0U, 2); - new (toFill++) EmojiData(88, 396, 0xD83DDD1EU, 0x0U, 2); - new (toFill++) EmojiData(132, 352, 0xD83DDD1FU, 0x0U, 2); - new (toFill++) EmojiData(308, 352, 0xD83DDD20U, 0x0U, 2); - new (toFill++) EmojiData(330, 352, 0xD83DDD21U, 0x0U, 2); - new (toFill++) EmojiData(154, 352, 0xD83DDD22U, 0x0U, 2); - new (toFill++) EmojiData(198, 352, 0xD83DDD23U, 0x0U, 2); - new (toFill++) EmojiData(352, 352, 0xD83DDD24U, 0x0U, 2); - new (toFill++) EmojiData(220, 44, 0xD83DDD25U, 0x0U, 2); - new (toFill++) EmojiData(44, 198, 0xD83DDD26U, 0x0U, 2); - new (toFill++) EmojiData(264, 198, 0xD83DDD27U, 0x0U, 2); - new (toFill++) EmojiData(308, 198, 0xD83DDD28U, 0x0U, 2); - new (toFill++) EmojiData(286, 198, 0xD83DDD29U, 0x0U, 2); - new (toFill++) EmojiData(418, 198, 0xD83DDD2AU, 0x0U, 2); - new (toFill++) EmojiData(396, 198, 0xD83DDD2BU, 0x0U, 2); - new (toFill++) EmojiData(770, 220, 0xD83DDD2CU, 0x0U, 2); - new (toFill++) EmojiData(792, 220, 0xD83DDD2DU, 0x0U, 2); - new (toFill++) EmojiData(110, 176, 0xD83DDD2EU, 0x0U, 2); - new (toFill++) EmojiData(22, 418, 0xD83DDD2FU, 0x0U, 2); - new (toFill++) EmojiData(352, 330, 0xD83DDD30U, 0x0U, 2); - new (toFill++) EmojiData(528, 440, 0xD83DDD31U, 0x0U, 2); - new (toFill++) EmojiData(704, 440, 0xD83DDD32U, 0x0U, 2); - new (toFill++) EmojiData(726, 440, 0xD83DDD33U, 0x0U, 2); - new (toFill++) EmojiData(792, 440, 0xD83DDD34U, 0x0U, 2); - new (toFill++) EmojiData(814, 440, 0xD83DDD35U, 0x0U, 2); - new (toFill++) EmojiData(22, 462, 0xD83DDD36U, 0x0U, 2); - new (toFill++) EmojiData(44, 462, 0xD83DDD37U, 0x0U, 2); - new (toFill++) EmojiData(66, 462, 0xD83DDD38U, 0x0U, 2); - new (toFill++) EmojiData(88, 462, 0xD83DDD39U, 0x0U, 2); - new (toFill++) EmojiData(682, 440, 0xD83DDD3AU, 0x0U, 2); - new (toFill++) EmojiData(836, 440, 0xD83DDD3BU, 0x0U, 2); - new (toFill++) EmojiData(572, 352, 0xD83DDD3CU, 0x0U, 2); - new (toFill++) EmojiData(594, 352, 0xD83DDD3DU, 0x0U, 2); - new (toFill++) EmojiData(550, 418, 0xD83DDD50U, 0x0U, 2); - new (toFill++) EmojiData(594, 418, 0xD83DDD51U, 0x0U, 2); - new (toFill++) EmojiData(638, 418, 0xD83DDD52U, 0x0U, 2); - new (toFill++) EmojiData(682, 418, 0xD83DDD53U, 0x0U, 2); - new (toFill++) EmojiData(726, 418, 0xD83DDD54U, 0x0U, 2); - new (toFill++) EmojiData(770, 418, 0xD83DDD55U, 0x0U, 2); - new (toFill++) EmojiData(792, 418, 0xD83DDD56U, 0x0U, 2); - new (toFill++) EmojiData(814, 418, 0xD83DDD57U, 0x0U, 2); - new (toFill++) EmojiData(836, 418, 0xD83DDD58U, 0x0U, 2); - new (toFill++) EmojiData(858, 418, 0xD83DDD59U, 0x0U, 2); - new (toFill++) EmojiData(0, 440, 0xD83DDD5AU, 0x0U, 2); - new (toFill++) EmojiData(506, 418, 0xD83DDD5BU, 0x0U, 2); - new (toFill++) EmojiData(572, 418, 0xD83DDD5CU, 0x0U, 2); - new (toFill++) EmojiData(616, 418, 0xD83DDD5DU, 0x0U, 2); - new (toFill++) EmojiData(660, 418, 0xD83DDD5EU, 0x0U, 2); - new (toFill++) EmojiData(704, 418, 0xD83DDD5FU, 0x0U, 2); - new (toFill++) EmojiData(748, 418, 0xD83DDD60U, 0x0U, 2); - new (toFill++) EmojiData(22, 440, 0xD83DDD61U, 0x0U, 2); - new (toFill++) EmojiData(44, 440, 0xD83DDD62U, 0x0U, 2); - new (toFill++) EmojiData(66, 440, 0xD83DDD63U, 0x0U, 2); - new (toFill++) EmojiData(88, 440, 0xD83DDD64U, 0x0U, 2); - new (toFill++) EmojiData(110, 440, 0xD83DDD65U, 0x0U, 2); - new (toFill++) EmojiData(132, 440, 0xD83DDD66U, 0x0U, 2); - new (toFill++) EmojiData(528, 418, 0xD83DDD67U, 0x0U, 2); - new (toFill++) EmojiData(814, 286, 0xD83DDDFBU, 0x0U, 2); - new (toFill++) EmojiData(770, 286, 0xD83DDDFCU, 0x0U, 2); - new (toFill++) EmojiData(22, 308, 0xD83DDDFDU, 0x0U, 2); - new (toFill++) EmojiData(792, 286, 0xD83DDDFEU, 0x0U, 2); - new (toFill++) EmojiData(462, 330, 0xD83DDDFFU, 0x0U, 2); - new (toFill++) EmojiData(44, 0, 0xD83DDE00U, 0x0U, 2); - new (toFill++) EmojiData(330, 0, 0xD83DDE01U, 0x0U, 2); - new (toFill++) EmojiData(484, 0, 0xD83DDE02U, 0x0U, 2); - new (toFill++) EmojiData(22, 0, 0xD83DDE03U, 0x0U, 2); - new (toFill++) EmojiData(0, 0, 0xD83DDE04U, 0x0U, 2); - new (toFill++) EmojiData(594, 0, 0xD83DDE05U, 0x0U, 2); - new (toFill++) EmojiData(814, 0, 0xD83DDE06U, 0x0U, 2); - new (toFill++) EmojiData(330, 22, 0xD83DDE07U, 0x0U, 2); - new (toFill++) EmojiData(154, 22, 0xD83DDE08U, 0x0U, 2); - new (toFill++) EmojiData(110, 0, 0xD83DDE09U, 0x0U, 2); - new (toFill++) EmojiData(66, 0, 0xD83DDE0AU, 0x0U, 2); - new (toFill++) EmojiData(836, 0, 0xD83DDE0BU, 0x0U, 2); - new (toFill++) EmojiData(374, 0, 0xD83DDE0CU, 0x0U, 2); - new (toFill++) EmojiData(132, 0, 0xD83DDE0DU, 0x0U, 2); - new (toFill++) EmojiData(0, 22, 0xD83DDE0EU, 0x0U, 2); - new (toFill++) EmojiData(352, 22, 0xD83DDE0FU, 0x0U, 2); - new (toFill++) EmojiData(242, 22, 0xD83DDE10U, 0x0U, 2); - new (toFill++) EmojiData(374, 22, 0xD83DDE11U, 0x0U, 2); - new (toFill++) EmojiData(396, 0, 0xD83DDE12U, 0x0U, 2); - new (toFill++) EmojiData(616, 0, 0xD83DDE13U, 0x0U, 2); - new (toFill++) EmojiData(352, 0, 0xD83DDE14U, 0x0U, 2); - new (toFill++) EmojiData(264, 22, 0xD83DDE15U, 0x0U, 2); - new (toFill++) EmojiData(792, 0, 0xD83DDE16U, 0x0U, 2); - new (toFill++) EmojiData(198, 0, 0xD83DDE17U, 0x0U, 2); - new (toFill++) EmojiData(154, 0, 0xD83DDE18U, 0x0U, 2); - new (toFill++) EmojiData(220, 0, 0xD83DDE19U, 0x0U, 2); - new (toFill++) EmojiData(176, 0, 0xD83DDE1AU, 0x0U, 2); - new (toFill++) EmojiData(286, 0, 0xD83DDE1BU, 0x0U, 2); - new (toFill++) EmojiData(242, 0, 0xD83DDE1CU, 0x0U, 2); - new (toFill++) EmojiData(264, 0, 0xD83DDE1DU, 0x0U, 2); - new (toFill++) EmojiData(418, 0, 0xD83DDE1EU, 0x0U, 2); - new (toFill++) EmojiData(88, 22, 0xD83DDE1FU, 0x0U, 2); - new (toFill++) EmojiData(726, 0, 0xD83DDE20U, 0x0U, 2); - new (toFill++) EmojiData(748, 0, 0xD83DDE21U, 0x0U, 2); - new (toFill++) EmojiData(462, 0, 0xD83DDE22U, 0x0U, 2); - new (toFill++) EmojiData(440, 0, 0xD83DDE23U, 0x0U, 2); - new (toFill++) EmojiData(770, 0, 0xD83DDE24U, 0x0U, 2); - new (toFill++) EmojiData(550, 0, 0xD83DDE25U, 0x0U, 2); - new (toFill++) EmojiData(110, 22, 0xD83DDE26U, 0x0U, 2); - new (toFill++) EmojiData(132, 22, 0xD83DDE27U, 0x0U, 2); - new (toFill++) EmojiData(682, 0, 0xD83DDE28U, 0x0U, 2); - new (toFill++) EmojiData(638, 0, 0xD83DDE29U, 0x0U, 2); - new (toFill++) EmojiData(528, 0, 0xD83DDE2AU, 0x0U, 2); - new (toFill++) EmojiData(660, 0, 0xD83DDE2BU, 0x0U, 2); - new (toFill++) EmojiData(220, 22, 0xD83DDE2CU, 0x0U, 2); - new (toFill++) EmojiData(506, 0, 0xD83DDE2DU, 0x0U, 2); - new (toFill++) EmojiData(198, 22, 0xD83DDE2EU, 0x0U, 2); - new (toFill++) EmojiData(286, 22, 0xD83DDE2FU, 0x0U, 2); - new (toFill++) EmojiData(572, 0, 0xD83DDE30U, 0x0U, 2); - new (toFill++) EmojiData(704, 0, 0xD83DDE31U, 0x0U, 2); - new (toFill++) EmojiData(66, 22, 0xD83DDE32U, 0x0U, 2); - new (toFill++) EmojiData(308, 0, 0xD83DDE33U, 0x0U, 2); - new (toFill++) EmojiData(22, 22, 0xD83DDE34U, 0x0U, 2); - new (toFill++) EmojiData(44, 22, 0xD83DDE35U, 0x0U, 2); - new (toFill++) EmojiData(308, 22, 0xD83DDE36U, 0x0U, 2); - new (toFill++) EmojiData(858, 0, 0xD83DDE37U, 0x0U, 2); - new (toFill++) EmojiData(748, 22, 0xD83DDE38U, 0x0U, 2); - new (toFill++) EmojiData(0, 44, 0xD83DDE39U, 0x0U, 2); - new (toFill++) EmojiData(726, 22, 0xD83DDE3AU, 0x0U, 2); - new (toFill++) EmojiData(770, 22, 0xD83DDE3BU, 0x0U, 2); - new (toFill++) EmojiData(814, 22, 0xD83DDE3CU, 0x0U, 2); - new (toFill++) EmojiData(792, 22, 0xD83DDE3DU, 0x0U, 2); - new (toFill++) EmojiData(22, 44, 0xD83DDE3EU, 0x0U, 2); - new (toFill++) EmojiData(858, 22, 0xD83DDE3FU, 0x0U, 2); - new (toFill++) EmojiData(836, 22, 0xD83DDE40U, 0x0U, 2); - new (toFill++) EmojiData(308, 66, 0xD83DDE45U, 0x0U, 2); - new (toFill++) EmojiData(286, 66, 0xD83DDE46U, 0x0U, 2); - new (toFill++) EmojiData(506, 66, 0xD83DDE47U, 0x0U, 2); - new (toFill++) EmojiData(88, 44, 0xD83DDE48U, 0x0U, 2); - new (toFill++) EmojiData(110, 44, 0xD83DDE49U, 0x0U, 2); - new (toFill++) EmojiData(132, 44, 0xD83DDE4AU, 0x0U, 2); - new (toFill++) EmojiData(352, 66, 0xD83DDE4BU, 0x0U, 2); - new (toFill++) EmojiData(836, 44, 0xD83DDE4CU, 0x0U, 2); - new (toFill++) EmojiData(484, 66, 0xD83DDE4DU, 0x0U, 2); - new (toFill++) EmojiData(462, 66, 0xD83DDE4EU, 0x0U, 2); - new (toFill++) EmojiData(858, 44, 0xD83DDE4FU, 0x0U, 2); - new (toFill++) EmojiData(264, 308, 0xD83DDE80U, 0x0U, 2); - new (toFill++) EmojiData(330, 308, 0xD83DDE81U, 0x0U, 2); - new (toFill++) EmojiData(352, 308, 0xD83DDE82U, 0x0U, 2); - new (toFill++) EmojiData(594, 308, 0xD83DDE83U, 0x0U, 2); - new (toFill++) EmojiData(462, 308, 0xD83DDE84U, 0x0U, 2); - new (toFill++) EmojiData(484, 308, 0xD83DDE85U, 0x0U, 2); - new (toFill++) EmojiData(440, 308, 0xD83DDE86U, 0x0U, 2); - new (toFill++) EmojiData(528, 308, 0xD83DDE87U, 0x0U, 2); - new (toFill++) EmojiData(506, 308, 0xD83DDE88U, 0x0U, 2); - new (toFill++) EmojiData(396, 308, 0xD83DDE89U, 0x0U, 2); - new (toFill++) EmojiData(374, 308, 0xD83DDE8AU, 0x0U, 2); - new (toFill++) EmojiData(572, 308, 0xD83DDE8BU, 0x0U, 2); - new (toFill++) EmojiData(638, 308, 0xD83DDE8CU, 0x0U, 2); - new (toFill++) EmojiData(660, 308, 0xD83DDE8DU, 0x0U, 2); - new (toFill++) EmojiData(616, 308, 0xD83DDE8EU, 0x0U, 2); - new (toFill++) EmojiData(220, 330, 0xD83DDE8FU, 0x0U, 2); - new (toFill++) EmojiData(66, 330, 0xD83DDE90U, 0x0U, 2); - new (toFill++) EmojiData(44, 330, 0xD83DDE91U, 0x0U, 2); - new (toFill++) EmojiData(22, 330, 0xD83DDE92U, 0x0U, 2); - new (toFill++) EmojiData(858, 308, 0xD83DDE93U, 0x0U, 2); - new (toFill++) EmojiData(0, 330, 0xD83DDE94U, 0x0U, 2); - new (toFill++) EmojiData(748, 308, 0xD83DDE95U, 0x0U, 2); - new (toFill++) EmojiData(770, 308, 0xD83DDE96U, 0x0U, 2); - new (toFill++) EmojiData(726, 308, 0xD83DDE97U, 0x0U, 2); - new (toFill++) EmojiData(704, 308, 0xD83DDE98U, 0x0U, 2); - new (toFill++) EmojiData(682, 308, 0xD83DDE99U, 0x0U, 2); - new (toFill++) EmojiData(814, 308, 0xD83DDE9AU, 0x0U, 2); - new (toFill++) EmojiData(792, 308, 0xD83DDE9BU, 0x0U, 2); - new (toFill++) EmojiData(176, 330, 0xD83DDE9CU, 0x0U, 2); - new (toFill++) EmojiData(550, 308, 0xD83DDE9DU, 0x0U, 2); - new (toFill++) EmojiData(418, 308, 0xD83DDE9EU, 0x0U, 2); - new (toFill++) EmojiData(132, 330, 0xD83DDE9FU, 0x0U, 2); - new (toFill++) EmojiData(154, 330, 0xD83DDEA0U, 0x0U, 2); - new (toFill++) EmojiData(110, 330, 0xD83DDEA1U, 0x0U, 2); - new (toFill++) EmojiData(154, 308, 0xD83DDEA2U, 0x0U, 2); - new (toFill++) EmojiData(220, 308, 0xD83DDEA3U, 0x0U, 2); - new (toFill++) EmojiData(198, 308, 0xD83DDEA4U, 0x0U, 2); - new (toFill++) EmojiData(286, 330, 0xD83DDEA5U, 0x0U, 2); - new (toFill++) EmojiData(264, 330, 0xD83DDEA6U, 0x0U, 2); - new (toFill++) EmojiData(330, 330, 0xD83DDEA7U, 0x0U, 2); - new (toFill++) EmojiData(836, 308, 0xD83DDEA8U, 0x0U, 2); - new (toFill++) EmojiData(550, 330, 0xD83DDEA9U, 0x0U, 2); - new (toFill++) EmojiData(330, 198, 0xD83DDEAAU, 0x0U, 2); - new (toFill++) EmojiData(66, 396, 0xD83DDEABU, 0x0U, 2); - new (toFill++) EmojiData(352, 198, 0xD83DDEACU, 0x0U, 2); - new (toFill++) EmojiData(616, 374, 0xD83DDEADU, 0x0U, 2); - new (toFill++) EmojiData(550, 374, 0xD83DDEAEU, 0x0U, 2); - new (toFill++) EmojiData(132, 396, 0xD83DDEAFU, 0x0U, 2); - new (toFill++) EmojiData(528, 374, 0xD83DDEB0U, 0x0U, 2); - new (toFill++) EmojiData(154, 396, 0xD83DDEB1U, 0x0U, 2); - new (toFill++) EmojiData(88, 330, 0xD83DDEB2U, 0x0U, 2); - new (toFill++) EmojiData(176, 396, 0xD83DDEB3U, 0x0U, 2); - new (toFill++) EmojiData(594, 242, 0xD83DDEB4U, 0x0U, 2); - new (toFill++) EmojiData(572, 242, 0xD83DDEB5U, 0x0U, 2); - new (toFill++) EmojiData(66, 66, 0xD83DDEB6U, 0x0U, 2); - new (toFill++) EmojiData(198, 396, 0xD83DDEB7U, 0x0U, 2); - new (toFill++) EmojiData(220, 396, 0xD83DDEB8U, 0x0U, 2); - new (toFill++) EmojiData(440, 374, 0xD83DDEB9U, 0x0U, 2); - new (toFill++) EmojiData(462, 374, 0xD83DDEBAU, 0x0U, 2); - new (toFill++) EmojiData(418, 374, 0xD83DDEBBU, 0x0U, 2); - new (toFill++) EmojiData(484, 374, 0xD83DDEBCU, 0x0U, 2); - new (toFill++) EmojiData(242, 198, 0xD83DDEBDU, 0x0U, 2); - new (toFill++) EmojiData(506, 374, 0xD83DDEBEU, 0x0U, 2); - new (toFill++) EmojiData(220, 198, 0xD83DDEBFU, 0x0U, 2); - new (toFill++) EmojiData(198, 198, 0xD83DDEC0U, 0x0U, 2); - new (toFill++) EmojiData(176, 198, 0xD83DDEC1U, 0x0U, 2); - new (toFill++) EmojiData(726, 374, 0xD83DDEC2U, 0x0U, 2); - new (toFill++) EmojiData(792, 374, 0xD83DDEC3U, 0x0U, 2); - new (toFill++) EmojiData(748, 374, 0xD83DDEC4U, 0x0U, 2); - new (toFill++) EmojiData(770, 374, 0xD83DDEC5U, 0x0U, 2); -} - -void initEmojiOneAndHalf() { - EmojiData *toFill = emojis = (EmojiData*)emojisData; - - new (toFill++) EmojiData(162, 513, 0xA9U, 0x0U, 1); - new (toFill++) EmojiData(189, 513, 0xAEU, 0x0U, 1); - new (toFill++) EmojiData(270, 513, 0x203CU, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(297, 513, 0x2049U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(216, 513, 0x2122U, 0x0U, 1); - new (toFill++) EmojiData(810, 432, 0x2139U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(567, 432, 0x2194U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(594, 432, 0x2195U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(486, 432, 0x2196U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(459, 432, 0x2197U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(513, 432, 0x2198U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(540, 432, 0x2199U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(756, 432, 0x21A9U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(783, 432, 0x21AAU, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(918, 216, 0x231AU, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(864, 216, 0x231BU, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(864, 432, 0x23E9U, 0x0U, 1); - new (toFill++) EmojiData(837, 432, 0x23EAU, 0x0U, 1); - new (toFill++) EmojiData(891, 432, 0x23EBU, 0x0U, 1); - new (toFill++) EmojiData(918, 432, 0x23ECU, 0x0U, 1); - new (toFill++) EmojiData(891, 216, 0x23F0U, 0x0U, 1); - new (toFill++) EmojiData(837, 216, 0x23F3U, 0x0U, 1); - new (toFill++) EmojiData(864, 459, 0x24C2U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(783, 540, 0x25AAU, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(810, 540, 0x25ABU, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(675, 432, 0x25B6U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(648, 432, 0x25C0U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(702, 540, 0x25FBU, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(675, 540, 0x25FCU, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(756, 540, 0x25FDU, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(729, 540, 0x25FEU, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(378, 189, 0x2600U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(432, 189, 0x2601U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(432, 216, 0x260EU, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(486, 540, 0x2611U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(486, 189, 0x2614U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(972, 297, 0x2615U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(0, 81, 0x261DU, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(108, 0, 0x263AU, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(756, 486, 0x2648U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(783, 486, 0x2649U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(810, 486, 0x264AU, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(837, 486, 0x264BU, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(864, 486, 0x264CU, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(891, 486, 0x264DU, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(918, 486, 0x264EU, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(945, 486, 0x264FU, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(972, 486, 0x2650U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(999, 486, 0x2651U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(1026, 486, 0x2652U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(1053, 486, 0x2653U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(297, 540, 0x2660U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(351, 540, 0x2663U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(324, 540, 0x2665U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(378, 540, 0x2666U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(540, 405, 0x2668U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(729, 486, 0x267BU, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(729, 459, 0x267FU, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(297, 378, 0x2693U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(378, 405, 0x26A0U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(459, 189, 0x26A1U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(945, 540, 0x26AAU, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(918, 540, 0x26ABU, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(513, 297, 0x26BDU, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(540, 297, 0x26BEU, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(540, 189, 0x26C4U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(405, 189, 0x26C5U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(0, 513, 0x26CEU, 0x0U, 1); - new (toFill++) EmojiData(297, 486, 0x26D4U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(702, 351, 0x26EAU, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(135, 378, 0x26F2U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(675, 297, 0x26F3U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(216, 378, 0x26F5U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(891, 351, 0x26FAU, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(459, 405, 0x26FDU, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(459, 270, 0x2702U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(405, 486, 0x2705U, 0x0U, 1); - new (toFill++) EmojiData(351, 378, 0x2708U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(891, 243, 0x2709U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(783, 54, 0x270AU, 0x0U, 1); - new (toFill++) EmojiData(864, 54, 0x270BU, 0x0U, 1); - new (toFill++) EmojiData(810, 54, 0x270CU, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(567, 270, 0x270FU, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(540, 270, 0x2712U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(459, 540, 0x2714U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(189, 540, 0x2716U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(297, 54, 0x2728U, 0x0U, 1); - new (toFill++) EmojiData(324, 486, 0x2733U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(432, 486, 0x2734U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(513, 189, 0x2744U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(351, 486, 0x2747U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(243, 513, 0x274CU, 0x0U, 1); - new (toFill++) EmojiData(378, 486, 0x274EU, 0x0U, 1); - new (toFill++) EmojiData(351, 513, 0x2753U, 0x0U, 1); - new (toFill++) EmojiData(405, 513, 0x2754U, 0x0U, 1); - new (toFill++) EmojiData(378, 513, 0x2755U, 0x0U, 1); - new (toFill++) EmojiData(324, 513, 0x2757U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(324, 108, 0x2764U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(216, 540, 0x2795U, 0x0U, 1); - new (toFill++) EmojiData(243, 540, 0x2796U, 0x0U, 1); - new (toFill++) EmojiData(270, 540, 0x2797U, 0x0U, 1); - new (toFill++) EmojiData(351, 432, 0x27A1U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(567, 540, 0x27B0U, 0x0U, 1); - new (toFill++) EmojiData(702, 486, 0x27BFU, 0x0U, 1); - new (toFill++) EmojiData(972, 432, 0x2934U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(945, 432, 0x2935U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(324, 432, 0x2B05U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(270, 432, 0x2B06U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(297, 432, 0x2B07U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(0, 567, 0x2B1BU, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(1053, 540, 0x2B1CU, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(351, 189, 0x2B50U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(432, 513, 0x2B55U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(594, 540, 0x3030U, 0x0U, 1); - new (toFill++) EmojiData(621, 540, 0x303DU, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(1053, 459, 0x3297U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(1026, 459, 0x3299U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(216, 432, 0x2320E3U, 0x0U, 2); - new (toFill++) EmojiData(135, 432, 0x3020E3U, 0x0U, 2); - new (toFill++) EmojiData(972, 405, 0x3120E3U, 0x0U, 2); - new (toFill++) EmojiData(999, 405, 0x3220E3U, 0x0U, 2); - new (toFill++) EmojiData(1026, 405, 0x3320E3U, 0x0U, 2); - new (toFill++) EmojiData(1053, 405, 0x3420E3U, 0x0U, 2); - new (toFill++) EmojiData(0, 432, 0x3520E3U, 0x0U, 2); - new (toFill++) EmojiData(27, 432, 0x3620E3U, 0x0U, 2); - new (toFill++) EmojiData(54, 432, 0x3720E3U, 0x0U, 2); - new (toFill++) EmojiData(81, 432, 0x3820E3U, 0x0U, 2); - new (toFill++) EmojiData(108, 432, 0x3920E3U, 0x0U, 2); - new (toFill++) EmojiData(378, 297, 0xD83CDC04U, 0x0U, 2, 0xFE0F); - new (toFill++) EmojiData(324, 297, 0xD83CDCCFU, 0x0U, 2); - new (toFill++) EmojiData(567, 486, 0xD83CDD70U, 0x0U, 2); - new (toFill++) EmojiData(594, 486, 0xD83CDD71U, 0x0U, 2); - new (toFill++) EmojiData(648, 486, 0xD83CDD7EU, 0x0U, 2); - new (toFill++) EmojiData(702, 459, 0xD83CDD7FU, 0x0U, 2, 0xFE0F); - new (toFill++) EmojiData(621, 486, 0xD83CDD8EU, 0x0U, 2); - new (toFill++) EmojiData(0, 486, 0xD83CDD91U, 0x0U, 2); - new (toFill++) EmojiData(81, 459, 0xD83CDD92U, 0x0U, 2); - new (toFill++) EmojiData(108, 459, 0xD83CDD93U, 0x0U, 2); - new (toFill++) EmojiData(54, 486, 0xD83CDD94U, 0x0U, 2); - new (toFill++) EmojiData(27, 459, 0xD83CDD95U, 0x0U, 2); - new (toFill++) EmojiData(135, 459, 0xD83CDD96U, 0x0U, 2); - new (toFill++) EmojiData(999, 432, 0xD83CDD97U, 0x0U, 2); - new (toFill++) EmojiData(27, 486, 0xD83CDD98U, 0x0U, 2); - new (toFill++) EmojiData(54, 459, 0xD83CDD99U, 0x0U, 2); - new (toFill++) EmojiData(486, 486, 0xD83CDD9AU, 0x0U, 2); - new (toFill++) EmojiData(783, 405, 0xD83CDDE8U, 0xD83CDDF3U, 4); - new (toFill++) EmojiData(756, 405, 0xD83CDDE9U, 0xD83CDDEAU, 4); - new (toFill++) EmojiData(864, 405, 0xD83CDDEAU, 0xD83CDDF8U, 4); - new (toFill++) EmojiData(837, 405, 0xD83CDDEBU, 0xD83CDDF7U, 4); - new (toFill++) EmojiData(945, 405, 0xD83CDDECU, 0xD83CDDE7U, 4); - new (toFill++) EmojiData(891, 405, 0xD83CDDEEU, 0xD83CDDF9U, 4); - new (toFill++) EmojiData(702, 405, 0xD83CDDEFU, 0xD83CDDF5U, 4); - new (toFill++) EmojiData(729, 405, 0xD83CDDF0U, 0xD83CDDF7U, 4); - new (toFill++) EmojiData(918, 405, 0xD83CDDF7U, 0xD83CDDFAU, 4); - new (toFill++) EmojiData(810, 405, 0xD83CDDFAU, 0xD83CDDF8U, 4); - new (toFill++) EmojiData(216, 459, 0xD83CDE01U, 0x0U, 2); - new (toFill++) EmojiData(837, 459, 0xD83CDE02U, 0x0U, 2); - new (toFill++) EmojiData(486, 459, 0xD83CDE1AU, 0x0U, 2, 0xFE0F); - new (toFill++) EmojiData(243, 459, 0xD83CDE2FU, 0x0U, 2, 0xFE0F); - new (toFill++) EmojiData(351, 459, 0xD83CDE32U, 0x0U, 2); - new (toFill++) EmojiData(270, 459, 0xD83CDE33U, 0x0U, 2); - new (toFill++) EmojiData(324, 459, 0xD83CDE34U, 0x0U, 2); - new (toFill++) EmojiData(297, 459, 0xD83CDE35U, 0x0U, 2); - new (toFill++) EmojiData(459, 459, 0xD83CDE36U, 0x0U, 2); - new (toFill++) EmojiData(783, 459, 0xD83CDE37U, 0x0U, 2); - new (toFill++) EmojiData(810, 459, 0xD83CDE38U, 0x0U, 2); - new (toFill++) EmojiData(405, 459, 0xD83CDE39U, 0x0U, 2); - new (toFill++) EmojiData(432, 459, 0xD83CDE3AU, 0x0U, 2); - new (toFill++) EmojiData(378, 459, 0xD83CDE50U, 0x0U, 2); - new (toFill++) EmojiData(999, 459, 0xD83CDE51U, 0x0U, 2); - new (toFill++) EmojiData(567, 189, 0xD83CDF00U, 0x0U, 2); - new (toFill++) EmojiData(594, 189, 0xD83CDF01U, 0x0U, 2); - new (toFill++) EmojiData(162, 108, 0xD83CDF02U, 0x0U, 2); - new (toFill++) EmojiData(0, 378, 0xD83CDF03U, 0x0U, 2); - new (toFill++) EmojiData(1026, 351, 0xD83CDF04U, 0x0U, 2); - new (toFill++) EmojiData(1053, 351, 0xD83CDF05U, 0x0U, 2); - new (toFill++) EmojiData(810, 351, 0xD83CDF06U, 0x0U, 2); - new (toFill++) EmojiData(783, 351, 0xD83CDF07U, 0x0U, 2); - new (toFill++) EmojiData(621, 189, 0xD83CDF08U, 0x0U, 2); - new (toFill++) EmojiData(54, 378, 0xD83CDF09U, 0x0U, 2); - new (toFill++) EmojiData(648, 189, 0xD83CDF0AU, 0x0U, 2); - new (toFill++) EmojiData(270, 189, 0xD83CDF0BU, 0x0U, 2); - new (toFill++) EmojiData(297, 189, 0xD83CDF0CU, 0x0U, 2); - new (toFill++) EmojiData(189, 189, 0xD83CDF0DU, 0x0U, 2); - new (toFill++) EmojiData(216, 189, 0xD83CDF0EU, 0x0U, 2); - new (toFill++) EmojiData(243, 189, 0xD83CDF0FU, 0x0U, 2); - new (toFill++) EmojiData(864, 162, 0xD83CDF10U, 0x0U, 2); - new (toFill++) EmojiData(972, 162, 0xD83CDF11U, 0x0U, 2); - new (toFill++) EmojiData(999, 162, 0xD83CDF12U, 0x0U, 2); - new (toFill++) EmojiData(1026, 162, 0xD83CDF13U, 0x0U, 2); - new (toFill++) EmojiData(1053, 162, 0xD83CDF14U, 0x0U, 2); - new (toFill++) EmojiData(0, 189, 0xD83CDF15U, 0x0U, 2); - new (toFill++) EmojiData(27, 189, 0xD83CDF16U, 0x0U, 2); - new (toFill++) EmojiData(54, 189, 0xD83CDF17U, 0x0U, 2); - new (toFill++) EmojiData(81, 189, 0xD83CDF18U, 0x0U, 2); - new (toFill++) EmojiData(162, 189, 0xD83CDF19U, 0x0U, 2); - new (toFill++) EmojiData(945, 162, 0xD83CDF1AU, 0x0U, 2); - new (toFill++) EmojiData(135, 189, 0xD83CDF1BU, 0x0U, 2); - new (toFill++) EmojiData(108, 189, 0xD83CDF1CU, 0x0U, 2); - new (toFill++) EmojiData(918, 162, 0xD83CDF1DU, 0x0U, 2); - new (toFill++) EmojiData(891, 162, 0xD83CDF1EU, 0x0U, 2); - new (toFill++) EmojiData(324, 54, 0xD83CDF1FU, 0x0U, 2); - new (toFill++) EmojiData(324, 189, 0xD83CDF20U, 0x0U, 2); - new (toFill++) EmojiData(783, 162, 0xD83CDF30U, 0x0U, 2); - new (toFill++) EmojiData(810, 162, 0xD83CDF31U, 0x0U, 2); - new (toFill++) EmojiData(729, 162, 0xD83CDF32U, 0x0U, 2); - new (toFill++) EmojiData(756, 162, 0xD83CDF33U, 0x0U, 2); - new (toFill++) EmojiData(702, 162, 0xD83CDF34U, 0x0U, 2); - new (toFill++) EmojiData(675, 162, 0xD83CDF35U, 0x0U, 2); - new (toFill++) EmojiData(378, 162, 0xD83CDF37U, 0x0U, 2); - new (toFill++) EmojiData(351, 162, 0xD83CDF38U, 0x0U, 2); - new (toFill++) EmojiData(432, 162, 0xD83CDF39U, 0x0U, 2); - new (toFill++) EmojiData(486, 162, 0xD83CDF3AU, 0x0U, 2); - new (toFill++) EmojiData(459, 162, 0xD83CDF3BU, 0x0U, 2); - new (toFill++) EmojiData(837, 162, 0xD83CDF3CU, 0x0U, 2); - new (toFill++) EmojiData(378, 351, 0xD83CDF3DU, 0x0U, 2); - new (toFill++) EmojiData(621, 162, 0xD83CDF3EU, 0x0U, 2); - new (toFill++) EmojiData(594, 162, 0xD83CDF3FU, 0x0U, 2); - new (toFill++) EmojiData(405, 162, 0xD83CDF40U, 0x0U, 2); - new (toFill++) EmojiData(513, 162, 0xD83CDF41U, 0x0U, 2); - new (toFill++) EmojiData(567, 162, 0xD83CDF42U, 0x0U, 2); - new (toFill++) EmojiData(540, 162, 0xD83CDF43U, 0x0U, 2); - new (toFill++) EmojiData(648, 162, 0xD83CDF44U, 0x0U, 2); - new (toFill++) EmojiData(351, 351, 0xD83CDF45U, 0x0U, 2); - new (toFill++) EmojiData(324, 351, 0xD83CDF46U, 0x0U, 2); - new (toFill++) EmojiData(81, 351, 0xD83CDF47U, 0x0U, 2); - new (toFill++) EmojiData(189, 351, 0xD83CDF48U, 0x0U, 2); - new (toFill++) EmojiData(108, 351, 0xD83CDF49U, 0x0U, 2); - new (toFill++) EmojiData(0, 351, 0xD83CDF4AU, 0x0U, 2); - new (toFill++) EmojiData(27, 351, 0xD83CDF4BU, 0x0U, 2); - new (toFill++) EmojiData(216, 351, 0xD83CDF4CU, 0x0U, 2); - new (toFill++) EmojiData(270, 351, 0xD83CDF4DU, 0x0U, 2); - new (toFill++) EmojiData(1026, 324, 0xD83CDF4EU, 0x0U, 2); - new (toFill++) EmojiData(1053, 324, 0xD83CDF4FU, 0x0U, 2); - new (toFill++) EmojiData(243, 351, 0xD83CDF50U, 0x0U, 2); - new (toFill++) EmojiData(162, 351, 0xD83CDF51U, 0x0U, 2); - new (toFill++) EmojiData(54, 351, 0xD83CDF52U, 0x0U, 2); - new (toFill++) EmojiData(135, 351, 0xD83CDF53U, 0x0U, 2); - new (toFill++) EmojiData(189, 324, 0xD83CDF54U, 0x0U, 2); - new (toFill++) EmojiData(162, 324, 0xD83CDF55U, 0x0U, 2); - new (toFill++) EmojiData(270, 324, 0xD83CDF56U, 0x0U, 2); - new (toFill++) EmojiData(243, 324, 0xD83CDF57U, 0x0U, 2); - new (toFill++) EmojiData(486, 324, 0xD83CDF58U, 0x0U, 2); - new (toFill++) EmojiData(459, 324, 0xD83CDF59U, 0x0U, 2); - new (toFill++) EmojiData(513, 324, 0xD83CDF5AU, 0x0U, 2); - new (toFill++) EmojiData(324, 324, 0xD83CDF5BU, 0x0U, 2); - new (toFill++) EmojiData(540, 324, 0xD83CDF5CU, 0x0U, 2); - new (toFill++) EmojiData(297, 324, 0xD83CDF5DU, 0x0U, 2); - new (toFill++) EmojiData(675, 324, 0xD83CDF5EU, 0x0U, 2); - new (toFill++) EmojiData(216, 324, 0xD83CDF5FU, 0x0U, 2); - new (toFill++) EmojiData(297, 351, 0xD83CDF60U, 0x0U, 2); - new (toFill++) EmojiData(621, 324, 0xD83CDF61U, 0x0U, 2); - new (toFill++) EmojiData(594, 324, 0xD83CDF62U, 0x0U, 2); - new (toFill++) EmojiData(405, 324, 0xD83CDF63U, 0x0U, 2); - new (toFill++) EmojiData(351, 324, 0xD83CDF64U, 0x0U, 2); - new (toFill++) EmojiData(432, 324, 0xD83CDF65U, 0x0U, 2); - new (toFill++) EmojiData(756, 324, 0xD83CDF66U, 0x0U, 2); - new (toFill++) EmojiData(810, 324, 0xD83CDF67U, 0x0U, 2); - new (toFill++) EmojiData(783, 324, 0xD83CDF68U, 0x0U, 2); - new (toFill++) EmojiData(702, 324, 0xD83CDF69U, 0x0U, 2); - new (toFill++) EmojiData(891, 324, 0xD83CDF6AU, 0x0U, 2); - new (toFill++) EmojiData(918, 324, 0xD83CDF6BU, 0x0U, 2); - new (toFill++) EmojiData(945, 324, 0xD83CDF6CU, 0x0U, 2); - new (toFill++) EmojiData(972, 324, 0xD83CDF6DU, 0x0U, 2); - new (toFill++) EmojiData(729, 324, 0xD83CDF6EU, 0x0U, 2); - new (toFill++) EmojiData(999, 324, 0xD83CDF6FU, 0x0U, 2); - new (toFill++) EmojiData(864, 324, 0xD83CDF70U, 0x0U, 2); - new (toFill++) EmojiData(378, 324, 0xD83CDF71U, 0x0U, 2); - new (toFill++) EmojiData(567, 324, 0xD83CDF72U, 0x0U, 2); - new (toFill++) EmojiData(648, 324, 0xD83CDF73U, 0x0U, 2); - new (toFill++) EmojiData(135, 324, 0xD83CDF74U, 0x0U, 2); - new (toFill++) EmojiData(999, 297, 0xD83CDF75U, 0x0U, 2); - new (toFill++) EmojiData(1026, 297, 0xD83CDF76U, 0x0U, 2); - new (toFill++) EmojiData(108, 324, 0xD83CDF77U, 0x0U, 2); - new (toFill++) EmojiData(54, 324, 0xD83CDF78U, 0x0U, 2); - new (toFill++) EmojiData(81, 324, 0xD83CDF79U, 0x0U, 2); - new (toFill++) EmojiData(0, 324, 0xD83CDF7AU, 0x0U, 2); - new (toFill++) EmojiData(27, 324, 0xD83CDF7BU, 0x0U, 2); - new (toFill++) EmojiData(1053, 297, 0xD83CDF7CU, 0x0U, 2); - new (toFill++) EmojiData(135, 108, 0xD83CDF80U, 0x0U, 2); - new (toFill++) EmojiData(1053, 189, 0xD83CDF81U, 0x0U, 2); - new (toFill++) EmojiData(837, 324, 0xD83CDF82U, 0x0U, 2); - new (toFill++) EmojiData(945, 189, 0xD83CDF83U, 0x0U, 2); - new (toFill++) EmojiData(1026, 189, 0xD83CDF84U, 0x0U, 2); - new (toFill++) EmojiData(999, 189, 0xD83CDF85U, 0x0U, 2); - new (toFill++) EmojiData(837, 189, 0xD83CDF86U, 0x0U, 2); - new (toFill++) EmojiData(864, 189, 0xD83CDF87U, 0x0U, 2); - new (toFill++) EmojiData(81, 216, 0xD83CDF88U, 0x0U, 2); - new (toFill++) EmojiData(27, 216, 0xD83CDF89U, 0x0U, 2); - new (toFill++) EmojiData(54, 216, 0xD83CDF8AU, 0x0U, 2); - new (toFill++) EmojiData(0, 216, 0xD83CDF8BU, 0x0U, 2); - new (toFill++) EmojiData(108, 216, 0xD83CDF8CU, 0x0U, 2); - new (toFill++) EmojiData(675, 189, 0xD83CDF8DU, 0x0U, 2); - new (toFill++) EmojiData(729, 189, 0xD83CDF8EU, 0x0U, 2); - new (toFill++) EmojiData(810, 189, 0xD83CDF8FU, 0x0U, 2); - new (toFill++) EmojiData(891, 189, 0xD83CDF90U, 0x0U, 2); - new (toFill++) EmojiData(918, 189, 0xD83CDF91U, 0x0U, 2); - new (toFill++) EmojiData(756, 189, 0xD83CDF92U, 0x0U, 2); - new (toFill++) EmojiData(783, 189, 0xD83CDF93U, 0x0U, 2); - new (toFill++) EmojiData(81, 378, 0xD83CDFA0U, 0x0U, 2); - new (toFill++) EmojiData(108, 378, 0xD83CDFA1U, 0x0U, 2); - new (toFill++) EmojiData(162, 378, 0xD83CDFA2U, 0x0U, 2); - new (toFill++) EmojiData(945, 297, 0xD83CDFA3U, 0x0U, 2); - new (toFill++) EmojiData(0, 297, 0xD83CDFA4U, 0x0U, 2); - new (toFill++) EmojiData(162, 216, 0xD83CDFA5U, 0x0U, 2); - new (toFill++) EmojiData(189, 459, 0xD83CDFA6U, 0x0U, 2); - new (toFill++) EmojiData(27, 297, 0xD83CDFA7U, 0x0U, 2); - new (toFill++) EmojiData(1026, 270, 0xD83CDFA8U, 0x0U, 2); - new (toFill++) EmojiData(648, 81, 0xD83CDFA9U, 0x0U, 2); - new (toFill++) EmojiData(594, 405, 0xD83CDFAAU, 0x0U, 2); - new (toFill++) EmojiData(297, 405, 0xD83CDFABU, 0x0U, 2); - new (toFill++) EmojiData(1053, 270, 0xD83CDFACU, 0x0U, 2); - new (toFill++) EmojiData(621, 405, 0xD83CDFADU, 0x0U, 2); - new (toFill++) EmojiData(297, 297, 0xD83CDFAEU, 0x0U, 2); - new (toFill++) EmojiData(432, 297, 0xD83CDFAFU, 0x0U, 2); - new (toFill++) EmojiData(513, 405, 0xD83CDFB0U, 0x0U, 2); - new (toFill++) EmojiData(594, 297, 0xD83CDFB1U, 0x0U, 2); - new (toFill++) EmojiData(405, 297, 0xD83CDFB2U, 0x0U, 2); - new (toFill++) EmojiData(648, 297, 0xD83CDFB3U, 0x0U, 2); - new (toFill++) EmojiData(351, 297, 0xD83CDFB4U, 0x0U, 2); - new (toFill++) EmojiData(81, 297, 0xD83CDFB5U, 0x0U, 2); - new (toFill++) EmojiData(108, 297, 0xD83CDFB6U, 0x0U, 2); - new (toFill++) EmojiData(216, 297, 0xD83CDFB7U, 0x0U, 2); - new (toFill++) EmojiData(243, 297, 0xD83CDFB8U, 0x0U, 2); - new (toFill++) EmojiData(135, 297, 0xD83CDFB9U, 0x0U, 2); - new (toFill++) EmojiData(189, 297, 0xD83CDFBAU, 0x0U, 2); - new (toFill++) EmojiData(162, 297, 0xD83CDFBBU, 0x0U, 2); - new (toFill++) EmojiData(54, 297, 0xD83CDFBCU, 0x0U, 2); - new (toFill++) EmojiData(972, 81, 0xD83CDFBDU, 0x0U, 2); - new (toFill++) EmojiData(567, 297, 0xD83CDFBEU, 0x0U, 2); - new (toFill++) EmojiData(837, 297, 0xD83CDFBFU, 0x0U, 2); - new (toFill++) EmojiData(486, 297, 0xD83CDFC0U, 0x0U, 2); - new (toFill++) EmojiData(756, 297, 0xD83CDFC1U, 0x0U, 2); - new (toFill++) EmojiData(864, 297, 0xD83CDFC2U, 0x0U, 2); - new (toFill++) EmojiData(108, 81, 0xD83CDFC3U, 0x0U, 2); - new (toFill++) EmojiData(918, 297, 0xD83CDFC4U, 0x0U, 2); - new (toFill++) EmojiData(810, 297, 0xD83CDFC6U, 0x0U, 2); - new (toFill++) EmojiData(783, 297, 0xD83CDFC7U, 0x0U, 2); - new (toFill++) EmojiData(459, 297, 0xD83CDFC8U, 0x0U, 2); - new (toFill++) EmojiData(621, 297, 0xD83CDFC9U, 0x0U, 2); - new (toFill++) EmojiData(891, 297, 0xD83CDFCAU, 0x0U, 2); - new (toFill++) EmojiData(405, 351, 0xD83CDFE0U, 0x0U, 2); - new (toFill++) EmojiData(432, 351, 0xD83CDFE1U, 0x0U, 2); - new (toFill++) EmojiData(486, 351, 0xD83CDFE2U, 0x0U, 2); - new (toFill++) EmojiData(513, 351, 0xD83CDFE3U, 0x0U, 2); - new (toFill++) EmojiData(756, 351, 0xD83CDFE4U, 0x0U, 2); - new (toFill++) EmojiData(540, 351, 0xD83CDFE5U, 0x0U, 2); - new (toFill++) EmojiData(567, 351, 0xD83CDFE6U, 0x0U, 2); - new (toFill++) EmojiData(54, 513, 0xD83CDFE7U, 0x0U, 2); - new (toFill++) EmojiData(648, 351, 0xD83CDFE8U, 0x0U, 2); - new (toFill++) EmojiData(621, 351, 0xD83CDFE9U, 0x0U, 2); - new (toFill++) EmojiData(594, 351, 0xD83CDFEAU, 0x0U, 2); - new (toFill++) EmojiData(459, 351, 0xD83CDFEBU, 0x0U, 2); - new (toFill++) EmojiData(729, 351, 0xD83CDFECU, 0x0U, 2); - new (toFill++) EmojiData(918, 351, 0xD83CDFEDU, 0x0U, 2); - new (toFill++) EmojiData(486, 405, 0xD83CDFEEU, 0x0U, 2); - new (toFill++) EmojiData(837, 351, 0xD83CDFEFU, 0x0U, 2); - new (toFill++) EmojiData(864, 351, 0xD83CDFF0U, 0x0U, 2); - new (toFill++) EmojiData(837, 135, 0xD83DDC00U, 0x0U, 2); - new (toFill++) EmojiData(27, 162, 0xD83DDC01U, 0x0U, 2); - new (toFill++) EmojiData(54, 162, 0xD83DDC02U, 0x0U, 2); - new (toFill++) EmojiData(864, 135, 0xD83DDC03U, 0x0U, 2); - new (toFill++) EmojiData(783, 135, 0xD83DDC04U, 0x0U, 2); - new (toFill++) EmojiData(891, 135, 0xD83DDC05U, 0x0U, 2); - new (toFill++) EmojiData(216, 162, 0xD83DDC06U, 0x0U, 2); - new (toFill++) EmojiData(918, 135, 0xD83DDC07U, 0x0U, 2); - new (toFill++) EmojiData(243, 162, 0xD83DDC08U, 0x0U, 2); - new (toFill++) EmojiData(945, 135, 0xD83DDC09U, 0x0U, 2); - new (toFill++) EmojiData(135, 162, 0xD83DDC0AU, 0x0U, 2); - new (toFill++) EmojiData(756, 135, 0xD83DDC0BU, 0x0U, 2); - new (toFill++) EmojiData(567, 135, 0xD83DDC0CU, 0x0U, 2); - new (toFill++) EmojiData(405, 135, 0xD83DDC0DU, 0x0U, 2); - new (toFill++) EmojiData(972, 135, 0xD83DDC0EU, 0x0U, 2); - new (toFill++) EmojiData(810, 135, 0xD83DDC0FU, 0x0U, 2); - new (toFill++) EmojiData(999, 135, 0xD83DDC10U, 0x0U, 2); - new (toFill++) EmojiData(162, 135, 0xD83DDC11U, 0x0U, 2); - new (toFill++) EmojiData(108, 135, 0xD83DDC12U, 0x0U, 2); - new (toFill++) EmojiData(1026, 135, 0xD83DDC13U, 0x0U, 2); - new (toFill++) EmojiData(378, 135, 0xD83DDC14U, 0x0U, 2); - new (toFill++) EmojiData(1053, 135, 0xD83DDC15U, 0x0U, 2); - new (toFill++) EmojiData(0, 162, 0xD83DDC16U, 0x0U, 2); - new (toFill++) EmojiData(54, 135, 0xD83DDC17U, 0x0U, 2); - new (toFill++) EmojiData(189, 135, 0xD83DDC18U, 0x0U, 2); - new (toFill++) EmojiData(594, 135, 0xD83DDC19U, 0x0U, 2); - new (toFill++) EmojiData(621, 135, 0xD83DDC1AU, 0x0U, 2); - new (toFill++) EmojiData(459, 135, 0xD83DDC1BU, 0x0U, 2); - new (toFill++) EmojiData(513, 135, 0xD83DDC1CU, 0x0U, 2); - new (toFill++) EmojiData(486, 135, 0xD83DDC1DU, 0x0U, 2); - new (toFill++) EmojiData(540, 135, 0xD83DDC1EU, 0x0U, 2); - new (toFill++) EmojiData(675, 135, 0xD83DDC1FU, 0x0U, 2); - new (toFill++) EmojiData(648, 135, 0xD83DDC20U, 0x0U, 2); - new (toFill++) EmojiData(108, 162, 0xD83DDC21U, 0x0U, 2); - new (toFill++) EmojiData(432, 135, 0xD83DDC22U, 0x0U, 2); - new (toFill++) EmojiData(351, 135, 0xD83DDC23U, 0x0U, 2); - new (toFill++) EmojiData(297, 135, 0xD83DDC24U, 0x0U, 2); - new (toFill++) EmojiData(324, 135, 0xD83DDC25U, 0x0U, 2); - new (toFill++) EmojiData(270, 135, 0xD83DDC26U, 0x0U, 2); - new (toFill++) EmojiData(243, 135, 0xD83DDC27U, 0x0U, 2); - new (toFill++) EmojiData(999, 108, 0xD83DDC28U, 0x0U, 2); - new (toFill++) EmojiData(270, 162, 0xD83DDC29U, 0x0U, 2); - new (toFill++) EmojiData(189, 162, 0xD83DDC2AU, 0x0U, 2); - new (toFill++) EmojiData(162, 162, 0xD83DDC2BU, 0x0U, 2); - new (toFill++) EmojiData(702, 135, 0xD83DDC2CU, 0x0U, 2); - new (toFill++) EmojiData(864, 108, 0xD83DDC2DU, 0x0U, 2); - new (toFill++) EmojiData(27, 135, 0xD83DDC2EU, 0x0U, 2); - new (toFill++) EmojiData(972, 108, 0xD83DDC2FU, 0x0U, 2); - new (toFill++) EmojiData(918, 108, 0xD83DDC30U, 0x0U, 2); - new (toFill++) EmojiData(837, 108, 0xD83DDC31U, 0x0U, 2); - new (toFill++) EmojiData(81, 162, 0xD83DDC32U, 0x0U, 2); - new (toFill++) EmojiData(729, 135, 0xD83DDC33U, 0x0U, 2); - new (toFill++) EmojiData(135, 135, 0xD83DDC34U, 0x0U, 2); - new (toFill++) EmojiData(81, 135, 0xD83DDC35U, 0x0U, 2); - new (toFill++) EmojiData(783, 108, 0xD83DDC36U, 0x0U, 2); - new (toFill++) EmojiData(1053, 108, 0xD83DDC37U, 0x0U, 2); - new (toFill++) EmojiData(945, 108, 0xD83DDC38U, 0x0U, 2); - new (toFill++) EmojiData(891, 108, 0xD83DDC39U, 0x0U, 2); - new (toFill++) EmojiData(810, 108, 0xD83DDC3AU, 0x0U, 2); - new (toFill++) EmojiData(1026, 108, 0xD83DDC3BU, 0x0U, 2); - new (toFill++) EmojiData(216, 135, 0xD83DDC3CU, 0x0U, 2); - new (toFill++) EmojiData(0, 135, 0xD83DDC3DU, 0x0U, 2); - new (toFill++) EmojiData(297, 162, 0xD83DDC3EU, 0x0U, 2); - new (toFill++) EmojiData(567, 54, 0xD83DDC40U, 0x0U, 2); - new (toFill++) EmojiData(540, 54, 0xD83DDC42U, 0x0U, 2); - new (toFill++) EmojiData(594, 54, 0xD83DDC43U, 0x0U, 2); - new (toFill++) EmojiData(648, 54, 0xD83DDC44U, 0x0U, 2); - new (toFill++) EmojiData(621, 54, 0xD83DDC45U, 0x0U, 2); - new (toFill++) EmojiData(918, 54, 0xD83DDC46U, 0x0U, 2); - new (toFill++) EmojiData(945, 54, 0xD83DDC47U, 0x0U, 2); - new (toFill++) EmojiData(999, 54, 0xD83DDC48U, 0x0U, 2); - new (toFill++) EmojiData(972, 54, 0xD83DDC49U, 0x0U, 2); - new (toFill++) EmojiData(756, 54, 0xD83DDC4AU, 0x0U, 2); - new (toFill++) EmojiData(837, 54, 0xD83DDC4BU, 0x0U, 2); - new (toFill++) EmojiData(729, 54, 0xD83DDC4CU, 0x0U, 2); - new (toFill++) EmojiData(675, 54, 0xD83DDC4DU, 0x0U, 2); - new (toFill++) EmojiData(702, 54, 0xD83DDC4EU, 0x0U, 2); - new (toFill++) EmojiData(27, 81, 0xD83DDC4FU, 0x0U, 2); - new (toFill++) EmojiData(891, 54, 0xD83DDC50U, 0x0U, 2); - new (toFill++) EmojiData(675, 81, 0xD83DDC51U, 0x0U, 2); - new (toFill++) EmojiData(702, 81, 0xD83DDC52U, 0x0U, 2); - new (toFill++) EmojiData(108, 108, 0xD83DDC53U, 0x0U, 2); - new (toFill++) EmojiData(891, 81, 0xD83DDC54U, 0x0U, 2); - new (toFill++) EmojiData(864, 81, 0xD83DDC55U, 0x0U, 2); - new (toFill++) EmojiData(999, 81, 0xD83DDC56U, 0x0U, 2); - new (toFill++) EmojiData(945, 81, 0xD83DDC57U, 0x0U, 2); - new (toFill++) EmojiData(1026, 81, 0xD83DDC58U, 0x0U, 2); - new (toFill++) EmojiData(1053, 81, 0xD83DDC59U, 0x0U, 2); - new (toFill++) EmojiData(918, 81, 0xD83DDC5AU, 0x0U, 2); - new (toFill++) EmojiData(81, 108, 0xD83DDC5BU, 0x0U, 2); - new (toFill++) EmojiData(27, 108, 0xD83DDC5CU, 0x0U, 2); - new (toFill++) EmojiData(54, 108, 0xD83DDC5DU, 0x0U, 2); - new (toFill++) EmojiData(756, 81, 0xD83DDC5EU, 0x0U, 2); - new (toFill++) EmojiData(729, 81, 0xD83DDC5FU, 0x0U, 2); - new (toFill++) EmojiData(810, 81, 0xD83DDC60U, 0x0U, 2); - new (toFill++) EmojiData(783, 81, 0xD83DDC61U, 0x0U, 2); - new (toFill++) EmojiData(837, 81, 0xD83DDC62U, 0x0U, 2); - new (toFill++) EmojiData(729, 108, 0xD83DDC63U, 0x0U, 2); - new (toFill++) EmojiData(648, 108, 0xD83DDC64U, 0x0U, 2); - new (toFill++) EmojiData(675, 108, 0xD83DDC65U, 0x0U, 2); - new (toFill++) EmojiData(648, 27, 0xD83DDC66U, 0x0U, 2); - new (toFill++) EmojiData(675, 27, 0xD83DDC67U, 0x0U, 2); - new (toFill++) EmojiData(702, 27, 0xD83DDC68U, 0x0U, 2); - new (toFill++) EmojiData(729, 27, 0xD83DDC69U, 0x0U, 2); - new (toFill++) EmojiData(189, 81, 0xD83DDC6AU, 0x0U, 2); - new (toFill++) EmojiData(162, 81, 0xD83DDC6BU, 0x0U, 2); - new (toFill++) EmojiData(216, 81, 0xD83DDC6CU, 0x0U, 2); - new (toFill++) EmojiData(243, 81, 0xD83DDC6DU, 0x0U, 2); - new (toFill++) EmojiData(540, 27, 0xD83DDC6EU, 0x0U, 2); - new (toFill++) EmojiData(324, 81, 0xD83DDC6FU, 0x0U, 2); - new (toFill++) EmojiData(540, 81, 0xD83DDC70U, 0x0U, 2); - new (toFill++) EmojiData(810, 27, 0xD83DDC71U, 0x0U, 2); - new (toFill++) EmojiData(486, 27, 0xD83DDC72U, 0x0U, 2); - new (toFill++) EmojiData(513, 27, 0xD83DDC73U, 0x0U, 2); - new (toFill++) EmojiData(756, 27, 0xD83DDC74U, 0x0U, 2); - new (toFill++) EmojiData(783, 27, 0xD83DDC75U, 0x0U, 2); - new (toFill++) EmojiData(621, 27, 0xD83DDC76U, 0x0U, 2); - new (toFill++) EmojiData(567, 27, 0xD83DDC77U, 0x0U, 2); - new (toFill++) EmojiData(864, 27, 0xD83DDC78U, 0x0U, 2); - new (toFill++) EmojiData(54, 54, 0xD83DDC79U, 0x0U, 2); - new (toFill++) EmojiData(81, 54, 0xD83DDC7AU, 0x0U, 2); - new (toFill++) EmojiData(972, 189, 0xD83DDC7BU, 0x0U, 2); - new (toFill++) EmojiData(837, 27, 0xD83DDC7CU, 0x0U, 2); - new (toFill++) EmojiData(216, 54, 0xD83DDC7DU, 0x0U, 2); - new (toFill++) EmojiData(270, 297, 0xD83DDC7EU, 0x0U, 2); - new (toFill++) EmojiData(216, 27, 0xD83DDC7FU, 0x0U, 2); - new (toFill++) EmojiData(189, 54, 0xD83DDC80U, 0x0U, 2); - new (toFill++) EmojiData(405, 81, 0xD83DDC81U, 0x0U, 2); - new (toFill++) EmojiData(594, 27, 0xD83DDC82U, 0x0U, 2); - new (toFill++) EmojiData(135, 81, 0xD83DDC83U, 0x0U, 2); - new (toFill++) EmojiData(189, 108, 0xD83DDC84U, 0x0U, 2); - new (toFill++) EmojiData(513, 81, 0xD83DDC85U, 0x0U, 2); - new (toFill++) EmojiData(459, 81, 0xD83DDC86U, 0x0U, 2); - new (toFill++) EmojiData(486, 81, 0xD83DDC87U, 0x0U, 2); - new (toFill++) EmojiData(243, 405, 0xD83DDC88U, 0x0U, 2); - new (toFill++) EmojiData(567, 243, 0xD83DDC89U, 0x0U, 2); - new (toFill++) EmojiData(540, 243, 0xD83DDC8AU, 0x0U, 2); - new (toFill++) EmojiData(567, 108, 0xD83DDC8BU, 0x0U, 2); - new (toFill++) EmojiData(540, 108, 0xD83DDC8CU, 0x0U, 2); - new (toFill++) EmojiData(594, 108, 0xD83DDC8DU, 0x0U, 2); - new (toFill++) EmojiData(621, 108, 0xD83DDC8EU, 0x0U, 2); - new (toFill++) EmojiData(270, 81, 0xD83DDC8FU, 0x0U, 2); - new (toFill++) EmojiData(324, 162, 0xD83DDC90U, 0x0U, 2); - new (toFill++) EmojiData(297, 81, 0xD83DDC91U, 0x0U, 2); - new (toFill++) EmojiData(675, 351, 0xD83DDC92U, 0x0U, 2); - new (toFill++) EmojiData(405, 108, 0xD83DDC93U, 0x0U, 2); - new (toFill++) EmojiData(351, 108, 0xD83DDC94U, 0x0U, 2); - new (toFill++) EmojiData(432, 108, 0xD83DDC95U, 0x0U, 2); - new (toFill++) EmojiData(459, 108, 0xD83DDC96U, 0x0U, 2); - new (toFill++) EmojiData(378, 108, 0xD83DDC97U, 0x0U, 2); - new (toFill++) EmojiData(513, 108, 0xD83DDC98U, 0x0U, 2); - new (toFill++) EmojiData(243, 108, 0xD83DDC99U, 0x0U, 2); - new (toFill++) EmojiData(297, 108, 0xD83DDC9AU, 0x0U, 2); - new (toFill++) EmojiData(216, 108, 0xD83DDC9BU, 0x0U, 2); - new (toFill++) EmojiData(270, 108, 0xD83DDC9CU, 0x0U, 2); - new (toFill++) EmojiData(702, 189, 0xD83DDC9DU, 0x0U, 2); - new (toFill++) EmojiData(486, 108, 0xD83DDC9EU, 0x0U, 2); - new (toFill++) EmojiData(459, 486, 0xD83DDC9FU, 0x0U, 2); - new (toFill++) EmojiData(675, 486, 0xD83DDCA0U, 0x0U, 2); - new (toFill++) EmojiData(27, 243, 0xD83DDCA1U, 0x0U, 2); - new (toFill++) EmojiData(405, 54, 0xD83DDCA2U, 0x0U, 2); - new (toFill++) EmojiData(459, 243, 0xD83DDCA3U, 0x0U, 2); - new (toFill++) EmojiData(486, 54, 0xD83DDCA4U, 0x0U, 2); - new (toFill++) EmojiData(378, 54, 0xD83DDCA5U, 0x0U, 2); - new (toFill++) EmojiData(432, 54, 0xD83DDCA6U, 0x0U, 2); - new (toFill++) EmojiData(459, 54, 0xD83DDCA7U, 0x0U, 2); - new (toFill++) EmojiData(513, 54, 0xD83DDCA8U, 0x0U, 2); - new (toFill++) EmojiData(243, 54, 0xD83DDCA9U, 0x0U, 2); - new (toFill++) EmojiData(54, 81, 0xD83DDCAAU, 0x0U, 2); - new (toFill++) EmojiData(351, 54, 0xD83DDCABU, 0x0U, 2); - new (toFill++) EmojiData(702, 108, 0xD83DDCACU, 0x0U, 2); - new (toFill++) EmojiData(756, 108, 0xD83DDCADU, 0x0U, 2); - new (toFill++) EmojiData(405, 540, 0xD83DDCAEU, 0x0U, 2); - new (toFill++) EmojiData(432, 540, 0xD83DDCAFU, 0x0U, 2); - new (toFill++) EmojiData(594, 243, 0xD83DDCB0U, 0x0U, 2); - new (toFill++) EmojiData(135, 513, 0xD83DDCB1U, 0x0U, 2); - new (toFill++) EmojiData(108, 513, 0xD83DDCB2U, 0x0U, 2); - new (toFill++) EmojiData(729, 243, 0xD83DDCB3U, 0x0U, 2); - new (toFill++) EmojiData(621, 243, 0xD83DDCB4U, 0x0U, 2); - new (toFill++) EmojiData(648, 243, 0xD83DDCB5U, 0x0U, 2); - new (toFill++) EmojiData(702, 243, 0xD83DDCB6U, 0x0U, 2); - new (toFill++) EmojiData(675, 243, 0xD83DDCB7U, 0x0U, 2); - new (toFill++) EmojiData(756, 243, 0xD83DDCB8U, 0x0U, 2); - new (toFill++) EmojiData(81, 513, 0xD83DDCB9U, 0x0U, 2); - new (toFill++) EmojiData(378, 378, 0xD83DDCBAU, 0x0U, 2); - new (toFill++) EmojiData(378, 216, 0xD83DDCBBU, 0x0U, 2); - new (toFill++) EmojiData(0, 108, 0xD83DDCBCU, 0x0U, 2); - new (toFill++) EmojiData(324, 216, 0xD83DDCBDU, 0x0U, 2); - new (toFill++) EmojiData(351, 216, 0xD83DDCBEU, 0x0U, 2); - new (toFill++) EmojiData(270, 216, 0xD83DDCBFU, 0x0U, 2); - new (toFill++) EmojiData(297, 216, 0xD83DDCC0U, 0x0U, 2); - new (toFill++) EmojiData(405, 270, 0xD83DDCC1U, 0x0U, 2); - new (toFill++) EmojiData(432, 270, 0xD83DDCC2U, 0x0U, 2); - new (toFill++) EmojiData(135, 270, 0xD83DDCC3U, 0x0U, 2); - new (toFill++) EmojiData(108, 270, 0xD83DDCC4U, 0x0U, 2); - new (toFill++) EmojiData(324, 270, 0xD83DDCC5U, 0x0U, 2); - new (toFill++) EmojiData(351, 270, 0xD83DDCC6U, 0x0U, 2); - new (toFill++) EmojiData(378, 270, 0xD83DDCC7U, 0x0U, 2); - new (toFill++) EmojiData(216, 270, 0xD83DDCC8U, 0x0U, 2); - new (toFill++) EmojiData(243, 270, 0xD83DDCC9U, 0x0U, 2); - new (toFill++) EmojiData(189, 270, 0xD83DDCCAU, 0x0U, 2); - new (toFill++) EmojiData(297, 270, 0xD83DDCCBU, 0x0U, 2); - new (toFill++) EmojiData(486, 270, 0xD83DDCCCU, 0x0U, 2); - new (toFill++) EmojiData(648, 405, 0xD83DDCCDU, 0x0U, 2); - new (toFill++) EmojiData(513, 270, 0xD83DDCCEU, 0x0U, 2); - new (toFill++) EmojiData(594, 270, 0xD83DDCCFU, 0x0U, 2); - new (toFill++) EmojiData(621, 270, 0xD83DDCD0U, 0x0U, 2); - new (toFill++) EmojiData(162, 270, 0xD83DDCD1U, 0x0U, 2); - new (toFill++) EmojiData(810, 270, 0xD83DDCD2U, 0x0U, 2); - new (toFill++) EmojiData(756, 270, 0xD83DDCD3U, 0x0U, 2); - new (toFill++) EmojiData(783, 270, 0xD83DDCD4U, 0x0U, 2); - new (toFill++) EmojiData(648, 270, 0xD83DDCD5U, 0x0U, 2); - new (toFill++) EmojiData(864, 270, 0xD83DDCD6U, 0x0U, 2); - new (toFill++) EmojiData(675, 270, 0xD83DDCD7U, 0x0U, 2); - new (toFill++) EmojiData(702, 270, 0xD83DDCD8U, 0x0U, 2); - new (toFill++) EmojiData(729, 270, 0xD83DDCD9U, 0x0U, 2); - new (toFill++) EmojiData(837, 270, 0xD83DDCDAU, 0x0U, 2); - new (toFill++) EmojiData(918, 270, 0xD83DDCDBU, 0x0U, 2); - new (toFill++) EmojiData(270, 270, 0xD83DDCDCU, 0x0U, 2); - new (toFill++) EmojiData(81, 270, 0xD83DDCDDU, 0x0U, 2); - new (toFill++) EmojiData(459, 216, 0xD83DDCDEU, 0x0U, 2); - new (toFill++) EmojiData(486, 216, 0xD83DDCDFU, 0x0U, 2); - new (toFill++) EmojiData(513, 216, 0xD83DDCE0U, 0x0U, 2); - new (toFill++) EmojiData(540, 216, 0xD83DDCE1U, 0x0U, 2); - new (toFill++) EmojiData(783, 216, 0xD83DDCE2U, 0x0U, 2); - new (toFill++) EmojiData(810, 216, 0xD83DDCE3U, 0x0U, 2); - new (toFill++) EmojiData(864, 243, 0xD83DDCE4U, 0x0U, 2); - new (toFill++) EmojiData(837, 243, 0xD83DDCE5U, 0x0U, 2); - new (toFill++) EmojiData(54, 270, 0xD83DDCE6U, 0x0U, 2); - new (toFill++) EmojiData(810, 243, 0xD83DDCE7U, 0x0U, 2); - new (toFill++) EmojiData(945, 243, 0xD83DDCE8U, 0x0U, 2); - new (toFill++) EmojiData(918, 243, 0xD83DDCE9U, 0x0U, 2); - new (toFill++) EmojiData(1026, 243, 0xD83DDCEAU, 0x0U, 2); - new (toFill++) EmojiData(999, 243, 0xD83DDCEBU, 0x0U, 2); - new (toFill++) EmojiData(1053, 243, 0xD83DDCECU, 0x0U, 2); - new (toFill++) EmojiData(0, 270, 0xD83DDCEDU, 0x0U, 2); - new (toFill++) EmojiData(27, 270, 0xD83DDCEEU, 0x0U, 2); - new (toFill++) EmojiData(972, 243, 0xD83DDCEFU, 0x0U, 2); - new (toFill++) EmojiData(999, 270, 0xD83DDCF0U, 0x0U, 2); - new (toFill++) EmojiData(405, 216, 0xD83DDCF1U, 0x0U, 2); - new (toFill++) EmojiData(783, 243, 0xD83DDCF2U, 0x0U, 2); - new (toFill++) EmojiData(513, 486, 0xD83DDCF3U, 0x0U, 2); - new (toFill++) EmojiData(540, 486, 0xD83DDCF4U, 0x0U, 2); - new (toFill++) EmojiData(135, 486, 0xD83DDCF5U, 0x0U, 2); - new (toFill++) EmojiData(162, 459, 0xD83DDCF6U, 0x0U, 2); - new (toFill++) EmojiData(189, 216, 0xD83DDCF7U, 0x0U, 2); - new (toFill++) EmojiData(216, 216, 0xD83DDCF9U, 0x0U, 2); - new (toFill++) EmojiData(567, 216, 0xD83DDCFAU, 0x0U, 2); - new (toFill++) EmojiData(594, 216, 0xD83DDCFBU, 0x0U, 2); - new (toFill++) EmojiData(243, 216, 0xD83DDCFCU, 0x0U, 2); - new (toFill++) EmojiData(1026, 432, 0xD83DDD00U, 0x0U, 2); - new (toFill++) EmojiData(1053, 432, 0xD83DDD01U, 0x0U, 2); - new (toFill++) EmojiData(0, 459, 0xD83DDD02U, 0x0U, 2); - new (toFill++) EmojiData(594, 513, 0xD83DDD03U, 0x0U, 2); - new (toFill++) EmojiData(621, 432, 0xD83DDD04U, 0x0U, 2); - new (toFill++) EmojiData(108, 243, 0xD83DDD05U, 0x0U, 2); - new (toFill++) EmojiData(81, 243, 0xD83DDD06U, 0x0U, 2); - new (toFill++) EmojiData(702, 216, 0xD83DDD07U, 0x0U, 2); - new (toFill++) EmojiData(675, 216, 0xD83DDD08U, 0x0U, 2); - new (toFill++) EmojiData(648, 216, 0xD83DDD09U, 0x0U, 2); - new (toFill++) EmojiData(621, 216, 0xD83DDD0AU, 0x0U, 2); - new (toFill++) EmojiData(162, 243, 0xD83DDD0BU, 0x0U, 2); - new (toFill++) EmojiData(135, 243, 0xD83DDD0CU, 0x0U, 2); - new (toFill++) EmojiData(189, 243, 0xD83DDD0DU, 0x0U, 2); - new (toFill++) EmojiData(0, 243, 0xD83DDD0EU, 0x0U, 2); - new (toFill++) EmojiData(999, 216, 0xD83DDD0FU, 0x0U, 2); - new (toFill++) EmojiData(1026, 216, 0xD83DDD10U, 0x0U, 2); - new (toFill++) EmojiData(1053, 216, 0xD83DDD11U, 0x0U, 2); - new (toFill++) EmojiData(972, 216, 0xD83DDD12U, 0x0U, 2); - new (toFill++) EmojiData(945, 216, 0xD83DDD13U, 0x0U, 2); - new (toFill++) EmojiData(729, 216, 0xD83DDD14U, 0x0U, 2); - new (toFill++) EmojiData(756, 216, 0xD83DDD15U, 0x0U, 2); - new (toFill++) EmojiData(891, 270, 0xD83DDD16U, 0x0U, 2); - new (toFill++) EmojiData(540, 540, 0xD83DDD17U, 0x0U, 2); - new (toFill++) EmojiData(513, 540, 0xD83DDD18U, 0x0U, 2); - new (toFill++) EmojiData(513, 513, 0xD83DDD19U, 0x0U, 2); - new (toFill++) EmojiData(486, 513, 0xD83DDD1AU, 0x0U, 2); - new (toFill++) EmojiData(540, 513, 0xD83DDD1BU, 0x0U, 2); - new (toFill++) EmojiData(567, 513, 0xD83DDD1CU, 0x0U, 2); - new (toFill++) EmojiData(459, 513, 0xD83DDD1DU, 0x0U, 2); - new (toFill++) EmojiData(108, 486, 0xD83DDD1EU, 0x0U, 2); - new (toFill++) EmojiData(162, 432, 0xD83DDD1FU, 0x0U, 2); - new (toFill++) EmojiData(378, 432, 0xD83DDD20U, 0x0U, 2); - new (toFill++) EmojiData(405, 432, 0xD83DDD21U, 0x0U, 2); - new (toFill++) EmojiData(189, 432, 0xD83DDD22U, 0x0U, 2); - new (toFill++) EmojiData(243, 432, 0xD83DDD23U, 0x0U, 2); - new (toFill++) EmojiData(432, 432, 0xD83DDD24U, 0x0U, 2); - new (toFill++) EmojiData(270, 54, 0xD83DDD25U, 0x0U, 2); - new (toFill++) EmojiData(54, 243, 0xD83DDD26U, 0x0U, 2); - new (toFill++) EmojiData(324, 243, 0xD83DDD27U, 0x0U, 2); - new (toFill++) EmojiData(378, 243, 0xD83DDD28U, 0x0U, 2); - new (toFill++) EmojiData(351, 243, 0xD83DDD29U, 0x0U, 2); - new (toFill++) EmojiData(513, 243, 0xD83DDD2AU, 0x0U, 2); - new (toFill++) EmojiData(486, 243, 0xD83DDD2BU, 0x0U, 2); - new (toFill++) EmojiData(945, 270, 0xD83DDD2CU, 0x0U, 2); - new (toFill++) EmojiData(972, 270, 0xD83DDD2DU, 0x0U, 2); - new (toFill++) EmojiData(135, 216, 0xD83DDD2EU, 0x0U, 2); - new (toFill++) EmojiData(27, 513, 0xD83DDD2FU, 0x0U, 2); - new (toFill++) EmojiData(432, 405, 0xD83DDD30U, 0x0U, 2); - new (toFill++) EmojiData(648, 540, 0xD83DDD31U, 0x0U, 2); - new (toFill++) EmojiData(864, 540, 0xD83DDD32U, 0x0U, 2); - new (toFill++) EmojiData(891, 540, 0xD83DDD33U, 0x0U, 2); - new (toFill++) EmojiData(972, 540, 0xD83DDD34U, 0x0U, 2); - new (toFill++) EmojiData(999, 540, 0xD83DDD35U, 0x0U, 2); - new (toFill++) EmojiData(27, 567, 0xD83DDD36U, 0x0U, 2); - new (toFill++) EmojiData(54, 567, 0xD83DDD37U, 0x0U, 2); - new (toFill++) EmojiData(81, 567, 0xD83DDD38U, 0x0U, 2); - new (toFill++) EmojiData(108, 567, 0xD83DDD39U, 0x0U, 2); - new (toFill++) EmojiData(837, 540, 0xD83DDD3AU, 0x0U, 2); - new (toFill++) EmojiData(1026, 540, 0xD83DDD3BU, 0x0U, 2); - new (toFill++) EmojiData(702, 432, 0xD83DDD3CU, 0x0U, 2); - new (toFill++) EmojiData(729, 432, 0xD83DDD3DU, 0x0U, 2); - new (toFill++) EmojiData(675, 513, 0xD83DDD50U, 0x0U, 2); - new (toFill++) EmojiData(729, 513, 0xD83DDD51U, 0x0U, 2); - new (toFill++) EmojiData(783, 513, 0xD83DDD52U, 0x0U, 2); - new (toFill++) EmojiData(837, 513, 0xD83DDD53U, 0x0U, 2); - new (toFill++) EmojiData(891, 513, 0xD83DDD54U, 0x0U, 2); - new (toFill++) EmojiData(945, 513, 0xD83DDD55U, 0x0U, 2); - new (toFill++) EmojiData(972, 513, 0xD83DDD56U, 0x0U, 2); - new (toFill++) EmojiData(999, 513, 0xD83DDD57U, 0x0U, 2); - new (toFill++) EmojiData(1026, 513, 0xD83DDD58U, 0x0U, 2); - new (toFill++) EmojiData(1053, 513, 0xD83DDD59U, 0x0U, 2); - new (toFill++) EmojiData(0, 540, 0xD83DDD5AU, 0x0U, 2); - new (toFill++) EmojiData(621, 513, 0xD83DDD5BU, 0x0U, 2); - new (toFill++) EmojiData(702, 513, 0xD83DDD5CU, 0x0U, 2); - new (toFill++) EmojiData(756, 513, 0xD83DDD5DU, 0x0U, 2); - new (toFill++) EmojiData(810, 513, 0xD83DDD5EU, 0x0U, 2); - new (toFill++) EmojiData(864, 513, 0xD83DDD5FU, 0x0U, 2); - new (toFill++) EmojiData(918, 513, 0xD83DDD60U, 0x0U, 2); - new (toFill++) EmojiData(27, 540, 0xD83DDD61U, 0x0U, 2); - new (toFill++) EmojiData(54, 540, 0xD83DDD62U, 0x0U, 2); - new (toFill++) EmojiData(81, 540, 0xD83DDD63U, 0x0U, 2); - new (toFill++) EmojiData(108, 540, 0xD83DDD64U, 0x0U, 2); - new (toFill++) EmojiData(135, 540, 0xD83DDD65U, 0x0U, 2); - new (toFill++) EmojiData(162, 540, 0xD83DDD66U, 0x0U, 2); - new (toFill++) EmojiData(648, 513, 0xD83DDD67U, 0x0U, 2); - new (toFill++) EmojiData(999, 351, 0xD83DDDFBU, 0x0U, 2); - new (toFill++) EmojiData(945, 351, 0xD83DDDFCU, 0x0U, 2); - new (toFill++) EmojiData(27, 378, 0xD83DDDFDU, 0x0U, 2); - new (toFill++) EmojiData(972, 351, 0xD83DDDFEU, 0x0U, 2); - new (toFill++) EmojiData(567, 405, 0xD83DDDFFU, 0x0U, 2); - new (toFill++) EmojiData(54, 0, 0xD83DDE00U, 0x0U, 2); - new (toFill++) EmojiData(405, 0, 0xD83DDE01U, 0x0U, 2); - new (toFill++) EmojiData(594, 0, 0xD83DDE02U, 0x0U, 2); - new (toFill++) EmojiData(27, 0, 0xD83DDE03U, 0x0U, 2); - new (toFill++) EmojiData(0, 0, 0xD83DDE04U, 0x0U, 2); - new (toFill++) EmojiData(729, 0, 0xD83DDE05U, 0x0U, 2); - new (toFill++) EmojiData(999, 0, 0xD83DDE06U, 0x0U, 2); - new (toFill++) EmojiData(405, 27, 0xD83DDE07U, 0x0U, 2); - new (toFill++) EmojiData(189, 27, 0xD83DDE08U, 0x0U, 2); - new (toFill++) EmojiData(135, 0, 0xD83DDE09U, 0x0U, 2); - new (toFill++) EmojiData(81, 0, 0xD83DDE0AU, 0x0U, 2); - new (toFill++) EmojiData(1026, 0, 0xD83DDE0BU, 0x0U, 2); - new (toFill++) EmojiData(459, 0, 0xD83DDE0CU, 0x0U, 2); - new (toFill++) EmojiData(162, 0, 0xD83DDE0DU, 0x0U, 2); - new (toFill++) EmojiData(0, 27, 0xD83DDE0EU, 0x0U, 2); - new (toFill++) EmojiData(432, 27, 0xD83DDE0FU, 0x0U, 2); - new (toFill++) EmojiData(297, 27, 0xD83DDE10U, 0x0U, 2); - new (toFill++) EmojiData(459, 27, 0xD83DDE11U, 0x0U, 2); - new (toFill++) EmojiData(486, 0, 0xD83DDE12U, 0x0U, 2); - new (toFill++) EmojiData(756, 0, 0xD83DDE13U, 0x0U, 2); - new (toFill++) EmojiData(432, 0, 0xD83DDE14U, 0x0U, 2); - new (toFill++) EmojiData(324, 27, 0xD83DDE15U, 0x0U, 2); - new (toFill++) EmojiData(972, 0, 0xD83DDE16U, 0x0U, 2); - new (toFill++) EmojiData(243, 0, 0xD83DDE17U, 0x0U, 2); - new (toFill++) EmojiData(189, 0, 0xD83DDE18U, 0x0U, 2); - new (toFill++) EmojiData(270, 0, 0xD83DDE19U, 0x0U, 2); - new (toFill++) EmojiData(216, 0, 0xD83DDE1AU, 0x0U, 2); - new (toFill++) EmojiData(351, 0, 0xD83DDE1BU, 0x0U, 2); - new (toFill++) EmojiData(297, 0, 0xD83DDE1CU, 0x0U, 2); - new (toFill++) EmojiData(324, 0, 0xD83DDE1DU, 0x0U, 2); - new (toFill++) EmojiData(513, 0, 0xD83DDE1EU, 0x0U, 2); - new (toFill++) EmojiData(108, 27, 0xD83DDE1FU, 0x0U, 2); - new (toFill++) EmojiData(891, 0, 0xD83DDE20U, 0x0U, 2); - new (toFill++) EmojiData(918, 0, 0xD83DDE21U, 0x0U, 2); - new (toFill++) EmojiData(567, 0, 0xD83DDE22U, 0x0U, 2); - new (toFill++) EmojiData(540, 0, 0xD83DDE23U, 0x0U, 2); - new (toFill++) EmojiData(945, 0, 0xD83DDE24U, 0x0U, 2); - new (toFill++) EmojiData(675, 0, 0xD83DDE25U, 0x0U, 2); - new (toFill++) EmojiData(135, 27, 0xD83DDE26U, 0x0U, 2); - new (toFill++) EmojiData(162, 27, 0xD83DDE27U, 0x0U, 2); - new (toFill++) EmojiData(837, 0, 0xD83DDE28U, 0x0U, 2); - new (toFill++) EmojiData(783, 0, 0xD83DDE29U, 0x0U, 2); - new (toFill++) EmojiData(648, 0, 0xD83DDE2AU, 0x0U, 2); - new (toFill++) EmojiData(810, 0, 0xD83DDE2BU, 0x0U, 2); - new (toFill++) EmojiData(270, 27, 0xD83DDE2CU, 0x0U, 2); - new (toFill++) EmojiData(621, 0, 0xD83DDE2DU, 0x0U, 2); - new (toFill++) EmojiData(243, 27, 0xD83DDE2EU, 0x0U, 2); - new (toFill++) EmojiData(351, 27, 0xD83DDE2FU, 0x0U, 2); - new (toFill++) EmojiData(702, 0, 0xD83DDE30U, 0x0U, 2); - new (toFill++) EmojiData(864, 0, 0xD83DDE31U, 0x0U, 2); - new (toFill++) EmojiData(81, 27, 0xD83DDE32U, 0x0U, 2); - new (toFill++) EmojiData(378, 0, 0xD83DDE33U, 0x0U, 2); - new (toFill++) EmojiData(27, 27, 0xD83DDE34U, 0x0U, 2); - new (toFill++) EmojiData(54, 27, 0xD83DDE35U, 0x0U, 2); - new (toFill++) EmojiData(378, 27, 0xD83DDE36U, 0x0U, 2); - new (toFill++) EmojiData(1053, 0, 0xD83DDE37U, 0x0U, 2); - new (toFill++) EmojiData(918, 27, 0xD83DDE38U, 0x0U, 2); - new (toFill++) EmojiData(0, 54, 0xD83DDE39U, 0x0U, 2); - new (toFill++) EmojiData(891, 27, 0xD83DDE3AU, 0x0U, 2); - new (toFill++) EmojiData(945, 27, 0xD83DDE3BU, 0x0U, 2); - new (toFill++) EmojiData(999, 27, 0xD83DDE3CU, 0x0U, 2); - new (toFill++) EmojiData(972, 27, 0xD83DDE3DU, 0x0U, 2); - new (toFill++) EmojiData(27, 54, 0xD83DDE3EU, 0x0U, 2); - new (toFill++) EmojiData(1053, 27, 0xD83DDE3FU, 0x0U, 2); - new (toFill++) EmojiData(1026, 27, 0xD83DDE40U, 0x0U, 2); - new (toFill++) EmojiData(378, 81, 0xD83DDE45U, 0x0U, 2); - new (toFill++) EmojiData(351, 81, 0xD83DDE46U, 0x0U, 2); - new (toFill++) EmojiData(621, 81, 0xD83DDE47U, 0x0U, 2); - new (toFill++) EmojiData(108, 54, 0xD83DDE48U, 0x0U, 2); - new (toFill++) EmojiData(135, 54, 0xD83DDE49U, 0x0U, 2); - new (toFill++) EmojiData(162, 54, 0xD83DDE4AU, 0x0U, 2); - new (toFill++) EmojiData(432, 81, 0xD83DDE4BU, 0x0U, 2); - new (toFill++) EmojiData(1026, 54, 0xD83DDE4CU, 0x0U, 2); - new (toFill++) EmojiData(594, 81, 0xD83DDE4DU, 0x0U, 2); - new (toFill++) EmojiData(567, 81, 0xD83DDE4EU, 0x0U, 2); - new (toFill++) EmojiData(1053, 54, 0xD83DDE4FU, 0x0U, 2); - new (toFill++) EmojiData(324, 378, 0xD83DDE80U, 0x0U, 2); - new (toFill++) EmojiData(405, 378, 0xD83DDE81U, 0x0U, 2); - new (toFill++) EmojiData(432, 378, 0xD83DDE82U, 0x0U, 2); - new (toFill++) EmojiData(729, 378, 0xD83DDE83U, 0x0U, 2); - new (toFill++) EmojiData(567, 378, 0xD83DDE84U, 0x0U, 2); - new (toFill++) EmojiData(594, 378, 0xD83DDE85U, 0x0U, 2); - new (toFill++) EmojiData(540, 378, 0xD83DDE86U, 0x0U, 2); - new (toFill++) EmojiData(648, 378, 0xD83DDE87U, 0x0U, 2); - new (toFill++) EmojiData(621, 378, 0xD83DDE88U, 0x0U, 2); - new (toFill++) EmojiData(486, 378, 0xD83DDE89U, 0x0U, 2); - new (toFill++) EmojiData(459, 378, 0xD83DDE8AU, 0x0U, 2); - new (toFill++) EmojiData(702, 378, 0xD83DDE8BU, 0x0U, 2); - new (toFill++) EmojiData(783, 378, 0xD83DDE8CU, 0x0U, 2); - new (toFill++) EmojiData(810, 378, 0xD83DDE8DU, 0x0U, 2); - new (toFill++) EmojiData(756, 378, 0xD83DDE8EU, 0x0U, 2); - new (toFill++) EmojiData(270, 405, 0xD83DDE8FU, 0x0U, 2); - new (toFill++) EmojiData(81, 405, 0xD83DDE90U, 0x0U, 2); - new (toFill++) EmojiData(54, 405, 0xD83DDE91U, 0x0U, 2); - new (toFill++) EmojiData(27, 405, 0xD83DDE92U, 0x0U, 2); - new (toFill++) EmojiData(1053, 378, 0xD83DDE93U, 0x0U, 2); - new (toFill++) EmojiData(0, 405, 0xD83DDE94U, 0x0U, 2); - new (toFill++) EmojiData(918, 378, 0xD83DDE95U, 0x0U, 2); - new (toFill++) EmojiData(945, 378, 0xD83DDE96U, 0x0U, 2); - new (toFill++) EmojiData(891, 378, 0xD83DDE97U, 0x0U, 2); - new (toFill++) EmojiData(864, 378, 0xD83DDE98U, 0x0U, 2); - new (toFill++) EmojiData(837, 378, 0xD83DDE99U, 0x0U, 2); - new (toFill++) EmojiData(999, 378, 0xD83DDE9AU, 0x0U, 2); - new (toFill++) EmojiData(972, 378, 0xD83DDE9BU, 0x0U, 2); - new (toFill++) EmojiData(216, 405, 0xD83DDE9CU, 0x0U, 2); - new (toFill++) EmojiData(675, 378, 0xD83DDE9DU, 0x0U, 2); - new (toFill++) EmojiData(513, 378, 0xD83DDE9EU, 0x0U, 2); - new (toFill++) EmojiData(162, 405, 0xD83DDE9FU, 0x0U, 2); - new (toFill++) EmojiData(189, 405, 0xD83DDEA0U, 0x0U, 2); - new (toFill++) EmojiData(135, 405, 0xD83DDEA1U, 0x0U, 2); - new (toFill++) EmojiData(189, 378, 0xD83DDEA2U, 0x0U, 2); - new (toFill++) EmojiData(270, 378, 0xD83DDEA3U, 0x0U, 2); - new (toFill++) EmojiData(243, 378, 0xD83DDEA4U, 0x0U, 2); - new (toFill++) EmojiData(351, 405, 0xD83DDEA5U, 0x0U, 2); - new (toFill++) EmojiData(324, 405, 0xD83DDEA6U, 0x0U, 2); - new (toFill++) EmojiData(405, 405, 0xD83DDEA7U, 0x0U, 2); - new (toFill++) EmojiData(1026, 378, 0xD83DDEA8U, 0x0U, 2); - new (toFill++) EmojiData(675, 405, 0xD83DDEA9U, 0x0U, 2); - new (toFill++) EmojiData(405, 243, 0xD83DDEAAU, 0x0U, 2); - new (toFill++) EmojiData(81, 486, 0xD83DDEABU, 0x0U, 2); - new (toFill++) EmojiData(432, 243, 0xD83DDEACU, 0x0U, 2); - new (toFill++) EmojiData(756, 459, 0xD83DDEADU, 0x0U, 2); - new (toFill++) EmojiData(675, 459, 0xD83DDEAEU, 0x0U, 2); - new (toFill++) EmojiData(162, 486, 0xD83DDEAFU, 0x0U, 2); - new (toFill++) EmojiData(648, 459, 0xD83DDEB0U, 0x0U, 2); - new (toFill++) EmojiData(189, 486, 0xD83DDEB1U, 0x0U, 2); - new (toFill++) EmojiData(108, 405, 0xD83DDEB2U, 0x0U, 2); - new (toFill++) EmojiData(216, 486, 0xD83DDEB3U, 0x0U, 2); - new (toFill++) EmojiData(729, 297, 0xD83DDEB4U, 0x0U, 2); - new (toFill++) EmojiData(702, 297, 0xD83DDEB5U, 0x0U, 2); - new (toFill++) EmojiData(81, 81, 0xD83DDEB6U, 0x0U, 2); - new (toFill++) EmojiData(243, 486, 0xD83DDEB7U, 0x0U, 2); - new (toFill++) EmojiData(270, 486, 0xD83DDEB8U, 0x0U, 2); - new (toFill++) EmojiData(540, 459, 0xD83DDEB9U, 0x0U, 2); - new (toFill++) EmojiData(567, 459, 0xD83DDEBAU, 0x0U, 2); - new (toFill++) EmojiData(513, 459, 0xD83DDEBBU, 0x0U, 2); - new (toFill++) EmojiData(594, 459, 0xD83DDEBCU, 0x0U, 2); - new (toFill++) EmojiData(297, 243, 0xD83DDEBDU, 0x0U, 2); - new (toFill++) EmojiData(621, 459, 0xD83DDEBEU, 0x0U, 2); - new (toFill++) EmojiData(270, 243, 0xD83DDEBFU, 0x0U, 2); - new (toFill++) EmojiData(243, 243, 0xD83DDEC0U, 0x0U, 2); - new (toFill++) EmojiData(216, 243, 0xD83DDEC1U, 0x0U, 2); - new (toFill++) EmojiData(891, 459, 0xD83DDEC2U, 0x0U, 2); - new (toFill++) EmojiData(972, 459, 0xD83DDEC3U, 0x0U, 2); - new (toFill++) EmojiData(918, 459, 0xD83DDEC4U, 0x0U, 2); - new (toFill++) EmojiData(945, 459, 0xD83DDEC5U, 0x0U, 2); -} - -void initEmojiTwo() { - EmojiData *toFill = emojis = (EmojiData*)emojisData; - - new (toFill++) EmojiData(216, 684, 0xA9U, 0x0U, 1); - new (toFill++) EmojiData(252, 684, 0xAEU, 0x0U, 1); - new (toFill++) EmojiData(360, 684, 0x203CU, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(396, 684, 0x2049U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(288, 684, 0x2122U, 0x0U, 1); - new (toFill++) EmojiData(1080, 576, 0x2139U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(756, 576, 0x2194U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(792, 576, 0x2195U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(648, 576, 0x2196U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(612, 576, 0x2197U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(684, 576, 0x2198U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(720, 576, 0x2199U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(1008, 576, 0x21A9U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(1044, 576, 0x21AAU, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(1224, 288, 0x231AU, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(1152, 288, 0x231BU, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(1152, 576, 0x23E9U, 0x0U, 1); - new (toFill++) EmojiData(1116, 576, 0x23EAU, 0x0U, 1); - new (toFill++) EmojiData(1188, 576, 0x23EBU, 0x0U, 1); - new (toFill++) EmojiData(1224, 576, 0x23ECU, 0x0U, 1); - new (toFill++) EmojiData(1188, 288, 0x23F0U, 0x0U, 1); - new (toFill++) EmojiData(1116, 288, 0x23F3U, 0x0U, 1); - new (toFill++) EmojiData(1152, 612, 0x24C2U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(1044, 720, 0x25AAU, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(1080, 720, 0x25ABU, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(900, 576, 0x25B6U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(864, 576, 0x25C0U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(936, 720, 0x25FBU, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(900, 720, 0x25FCU, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(1008, 720, 0x25FDU, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(972, 720, 0x25FEU, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(504, 252, 0x2600U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(576, 252, 0x2601U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(576, 288, 0x260EU, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(648, 720, 0x2611U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(648, 252, 0x2614U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(1296, 396, 0x2615U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(0, 108, 0x261DU, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(144, 0, 0x263AU, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(1008, 648, 0x2648U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(1044, 648, 0x2649U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(1080, 648, 0x264AU, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(1116, 648, 0x264BU, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(1152, 648, 0x264CU, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(1188, 648, 0x264DU, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(1224, 648, 0x264EU, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(1260, 648, 0x264FU, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(1296, 648, 0x2650U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(1332, 648, 0x2651U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(1368, 648, 0x2652U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(1404, 648, 0x2653U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(396, 720, 0x2660U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(468, 720, 0x2663U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(432, 720, 0x2665U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(504, 720, 0x2666U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(720, 540, 0x2668U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(972, 648, 0x267BU, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(972, 612, 0x267FU, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(396, 504, 0x2693U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(504, 540, 0x26A0U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(612, 252, 0x26A1U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(1260, 720, 0x26AAU, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(1224, 720, 0x26ABU, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(684, 396, 0x26BDU, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(720, 396, 0x26BEU, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(720, 252, 0x26C4U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(540, 252, 0x26C5U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(0, 684, 0x26CEU, 0x0U, 1); - new (toFill++) EmojiData(396, 648, 0x26D4U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(936, 468, 0x26EAU, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(180, 504, 0x26F2U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(900, 396, 0x26F3U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(288, 504, 0x26F5U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(1188, 468, 0x26FAU, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(612, 540, 0x26FDU, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(612, 360, 0x2702U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(540, 648, 0x2705U, 0x0U, 1); - new (toFill++) EmojiData(468, 504, 0x2708U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(1188, 324, 0x2709U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(1044, 72, 0x270AU, 0x0U, 1); - new (toFill++) EmojiData(1152, 72, 0x270BU, 0x0U, 1); - new (toFill++) EmojiData(1080, 72, 0x270CU, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(756, 360, 0x270FU, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(720, 360, 0x2712U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(612, 720, 0x2714U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(252, 720, 0x2716U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(396, 72, 0x2728U, 0x0U, 1); - new (toFill++) EmojiData(432, 648, 0x2733U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(576, 648, 0x2734U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(684, 252, 0x2744U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(468, 648, 0x2747U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(324, 684, 0x274CU, 0x0U, 1); - new (toFill++) EmojiData(504, 648, 0x274EU, 0x0U, 1); - new (toFill++) EmojiData(468, 684, 0x2753U, 0x0U, 1); - new (toFill++) EmojiData(540, 684, 0x2754U, 0x0U, 1); - new (toFill++) EmojiData(504, 684, 0x2755U, 0x0U, 1); - new (toFill++) EmojiData(432, 684, 0x2757U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(432, 144, 0x2764U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(288, 720, 0x2795U, 0x0U, 1); - new (toFill++) EmojiData(324, 720, 0x2796U, 0x0U, 1); - new (toFill++) EmojiData(360, 720, 0x2797U, 0x0U, 1); - new (toFill++) EmojiData(468, 576, 0x27A1U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(756, 720, 0x27B0U, 0x0U, 1); - new (toFill++) EmojiData(936, 648, 0x27BFU, 0x0U, 1); - new (toFill++) EmojiData(1296, 576, 0x2934U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(1260, 576, 0x2935U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(432, 576, 0x2B05U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(360, 576, 0x2B06U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(396, 576, 0x2B07U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(0, 756, 0x2B1BU, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(1404, 720, 0x2B1CU, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(468, 252, 0x2B50U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(576, 684, 0x2B55U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(792, 720, 0x3030U, 0x0U, 1); - new (toFill++) EmojiData(828, 720, 0x303DU, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(1404, 612, 0x3297U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(1368, 612, 0x3299U, 0x0U, 1, 0xFE0F); - new (toFill++) EmojiData(288, 576, 0x2320E3U, 0x0U, 2); - new (toFill++) EmojiData(180, 576, 0x3020E3U, 0x0U, 2); - new (toFill++) EmojiData(1296, 540, 0x3120E3U, 0x0U, 2); - new (toFill++) EmojiData(1332, 540, 0x3220E3U, 0x0U, 2); - new (toFill++) EmojiData(1368, 540, 0x3320E3U, 0x0U, 2); - new (toFill++) EmojiData(1404, 540, 0x3420E3U, 0x0U, 2); - new (toFill++) EmojiData(0, 576, 0x3520E3U, 0x0U, 2); - new (toFill++) EmojiData(36, 576, 0x3620E3U, 0x0U, 2); - new (toFill++) EmojiData(72, 576, 0x3720E3U, 0x0U, 2); - new (toFill++) EmojiData(108, 576, 0x3820E3U, 0x0U, 2); - new (toFill++) EmojiData(144, 576, 0x3920E3U, 0x0U, 2); - new (toFill++) EmojiData(504, 396, 0xD83CDC04U, 0x0U, 2, 0xFE0F); - new (toFill++) EmojiData(432, 396, 0xD83CDCCFU, 0x0U, 2); - new (toFill++) EmojiData(756, 648, 0xD83CDD70U, 0x0U, 2); - new (toFill++) EmojiData(792, 648, 0xD83CDD71U, 0x0U, 2); - new (toFill++) EmojiData(864, 648, 0xD83CDD7EU, 0x0U, 2); - new (toFill++) EmojiData(936, 612, 0xD83CDD7FU, 0x0U, 2, 0xFE0F); - new (toFill++) EmojiData(828, 648, 0xD83CDD8EU, 0x0U, 2); - new (toFill++) EmojiData(0, 648, 0xD83CDD91U, 0x0U, 2); - new (toFill++) EmojiData(108, 612, 0xD83CDD92U, 0x0U, 2); - new (toFill++) EmojiData(144, 612, 0xD83CDD93U, 0x0U, 2); - new (toFill++) EmojiData(72, 648, 0xD83CDD94U, 0x0U, 2); - new (toFill++) EmojiData(36, 612, 0xD83CDD95U, 0x0U, 2); - new (toFill++) EmojiData(180, 612, 0xD83CDD96U, 0x0U, 2); - new (toFill++) EmojiData(1332, 576, 0xD83CDD97U, 0x0U, 2); - new (toFill++) EmojiData(36, 648, 0xD83CDD98U, 0x0U, 2); - new (toFill++) EmojiData(72, 612, 0xD83CDD99U, 0x0U, 2); - new (toFill++) EmojiData(648, 648, 0xD83CDD9AU, 0x0U, 2); - new (toFill++) EmojiData(1044, 540, 0xD83CDDE8U, 0xD83CDDF3U, 4); - new (toFill++) EmojiData(1008, 540, 0xD83CDDE9U, 0xD83CDDEAU, 4); - new (toFill++) EmojiData(1152, 540, 0xD83CDDEAU, 0xD83CDDF8U, 4); - new (toFill++) EmojiData(1116, 540, 0xD83CDDEBU, 0xD83CDDF7U, 4); - new (toFill++) EmojiData(1260, 540, 0xD83CDDECU, 0xD83CDDE7U, 4); - new (toFill++) EmojiData(1188, 540, 0xD83CDDEEU, 0xD83CDDF9U, 4); - new (toFill++) EmojiData(936, 540, 0xD83CDDEFU, 0xD83CDDF5U, 4); - new (toFill++) EmojiData(972, 540, 0xD83CDDF0U, 0xD83CDDF7U, 4); - new (toFill++) EmojiData(1224, 540, 0xD83CDDF7U, 0xD83CDDFAU, 4); - new (toFill++) EmojiData(1080, 540, 0xD83CDDFAU, 0xD83CDDF8U, 4); - new (toFill++) EmojiData(288, 612, 0xD83CDE01U, 0x0U, 2); - new (toFill++) EmojiData(1116, 612, 0xD83CDE02U, 0x0U, 2); - new (toFill++) EmojiData(648, 612, 0xD83CDE1AU, 0x0U, 2, 0xFE0F); - new (toFill++) EmojiData(324, 612, 0xD83CDE2FU, 0x0U, 2, 0xFE0F); - new (toFill++) EmojiData(468, 612, 0xD83CDE32U, 0x0U, 2); - new (toFill++) EmojiData(360, 612, 0xD83CDE33U, 0x0U, 2); - new (toFill++) EmojiData(432, 612, 0xD83CDE34U, 0x0U, 2); - new (toFill++) EmojiData(396, 612, 0xD83CDE35U, 0x0U, 2); - new (toFill++) EmojiData(612, 612, 0xD83CDE36U, 0x0U, 2); - new (toFill++) EmojiData(1044, 612, 0xD83CDE37U, 0x0U, 2); - new (toFill++) EmojiData(1080, 612, 0xD83CDE38U, 0x0U, 2); - new (toFill++) EmojiData(540, 612, 0xD83CDE39U, 0x0U, 2); - new (toFill++) EmojiData(576, 612, 0xD83CDE3AU, 0x0U, 2); - new (toFill++) EmojiData(504, 612, 0xD83CDE50U, 0x0U, 2); - new (toFill++) EmojiData(1332, 612, 0xD83CDE51U, 0x0U, 2); - new (toFill++) EmojiData(756, 252, 0xD83CDF00U, 0x0U, 2); - new (toFill++) EmojiData(792, 252, 0xD83CDF01U, 0x0U, 2); - new (toFill++) EmojiData(216, 144, 0xD83CDF02U, 0x0U, 2); - new (toFill++) EmojiData(0, 504, 0xD83CDF03U, 0x0U, 2); - new (toFill++) EmojiData(1368, 468, 0xD83CDF04U, 0x0U, 2); - new (toFill++) EmojiData(1404, 468, 0xD83CDF05U, 0x0U, 2); - new (toFill++) EmojiData(1080, 468, 0xD83CDF06U, 0x0U, 2); - new (toFill++) EmojiData(1044, 468, 0xD83CDF07U, 0x0U, 2); - new (toFill++) EmojiData(828, 252, 0xD83CDF08U, 0x0U, 2); - new (toFill++) EmojiData(72, 504, 0xD83CDF09U, 0x0U, 2); - new (toFill++) EmojiData(864, 252, 0xD83CDF0AU, 0x0U, 2); - new (toFill++) EmojiData(360, 252, 0xD83CDF0BU, 0x0U, 2); - new (toFill++) EmojiData(396, 252, 0xD83CDF0CU, 0x0U, 2); - new (toFill++) EmojiData(252, 252, 0xD83CDF0DU, 0x0U, 2); - new (toFill++) EmojiData(288, 252, 0xD83CDF0EU, 0x0U, 2); - new (toFill++) EmojiData(324, 252, 0xD83CDF0FU, 0x0U, 2); - new (toFill++) EmojiData(1152, 216, 0xD83CDF10U, 0x0U, 2); - new (toFill++) EmojiData(1296, 216, 0xD83CDF11U, 0x0U, 2); - new (toFill++) EmojiData(1332, 216, 0xD83CDF12U, 0x0U, 2); - new (toFill++) EmojiData(1368, 216, 0xD83CDF13U, 0x0U, 2); - new (toFill++) EmojiData(1404, 216, 0xD83CDF14U, 0x0U, 2); - new (toFill++) EmojiData(0, 252, 0xD83CDF15U, 0x0U, 2); - new (toFill++) EmojiData(36, 252, 0xD83CDF16U, 0x0U, 2); - new (toFill++) EmojiData(72, 252, 0xD83CDF17U, 0x0U, 2); - new (toFill++) EmojiData(108, 252, 0xD83CDF18U, 0x0U, 2); - new (toFill++) EmojiData(216, 252, 0xD83CDF19U, 0x0U, 2); - new (toFill++) EmojiData(1260, 216, 0xD83CDF1AU, 0x0U, 2); - new (toFill++) EmojiData(180, 252, 0xD83CDF1BU, 0x0U, 2); - new (toFill++) EmojiData(144, 252, 0xD83CDF1CU, 0x0U, 2); - new (toFill++) EmojiData(1224, 216, 0xD83CDF1DU, 0x0U, 2); - new (toFill++) EmojiData(1188, 216, 0xD83CDF1EU, 0x0U, 2); - new (toFill++) EmojiData(432, 72, 0xD83CDF1FU, 0x0U, 2); - new (toFill++) EmojiData(432, 252, 0xD83CDF20U, 0x0U, 2); - new (toFill++) EmojiData(1044, 216, 0xD83CDF30U, 0x0U, 2); - new (toFill++) EmojiData(1080, 216, 0xD83CDF31U, 0x0U, 2); - new (toFill++) EmojiData(972, 216, 0xD83CDF32U, 0x0U, 2); - new (toFill++) EmojiData(1008, 216, 0xD83CDF33U, 0x0U, 2); - new (toFill++) EmojiData(936, 216, 0xD83CDF34U, 0x0U, 2); - new (toFill++) EmojiData(900, 216, 0xD83CDF35U, 0x0U, 2); - new (toFill++) EmojiData(504, 216, 0xD83CDF37U, 0x0U, 2); - new (toFill++) EmojiData(468, 216, 0xD83CDF38U, 0x0U, 2); - new (toFill++) EmojiData(576, 216, 0xD83CDF39U, 0x0U, 2); - new (toFill++) EmojiData(648, 216, 0xD83CDF3AU, 0x0U, 2); - new (toFill++) EmojiData(612, 216, 0xD83CDF3BU, 0x0U, 2); - new (toFill++) EmojiData(1116, 216, 0xD83CDF3CU, 0x0U, 2); - new (toFill++) EmojiData(504, 468, 0xD83CDF3DU, 0x0U, 2); - new (toFill++) EmojiData(828, 216, 0xD83CDF3EU, 0x0U, 2); - new (toFill++) EmojiData(792, 216, 0xD83CDF3FU, 0x0U, 2); - new (toFill++) EmojiData(540, 216, 0xD83CDF40U, 0x0U, 2); - new (toFill++) EmojiData(684, 216, 0xD83CDF41U, 0x0U, 2); - new (toFill++) EmojiData(756, 216, 0xD83CDF42U, 0x0U, 2); - new (toFill++) EmojiData(720, 216, 0xD83CDF43U, 0x0U, 2); - new (toFill++) EmojiData(864, 216, 0xD83CDF44U, 0x0U, 2); - new (toFill++) EmojiData(468, 468, 0xD83CDF45U, 0x0U, 2); - new (toFill++) EmojiData(432, 468, 0xD83CDF46U, 0x0U, 2); - new (toFill++) EmojiData(108, 468, 0xD83CDF47U, 0x0U, 2); - new (toFill++) EmojiData(252, 468, 0xD83CDF48U, 0x0U, 2); - new (toFill++) EmojiData(144, 468, 0xD83CDF49U, 0x0U, 2); - new (toFill++) EmojiData(0, 468, 0xD83CDF4AU, 0x0U, 2); - new (toFill++) EmojiData(36, 468, 0xD83CDF4BU, 0x0U, 2); - new (toFill++) EmojiData(288, 468, 0xD83CDF4CU, 0x0U, 2); - new (toFill++) EmojiData(360, 468, 0xD83CDF4DU, 0x0U, 2); - new (toFill++) EmojiData(1368, 432, 0xD83CDF4EU, 0x0U, 2); - new (toFill++) EmojiData(1404, 432, 0xD83CDF4FU, 0x0U, 2); - new (toFill++) EmojiData(324, 468, 0xD83CDF50U, 0x0U, 2); - new (toFill++) EmojiData(216, 468, 0xD83CDF51U, 0x0U, 2); - new (toFill++) EmojiData(72, 468, 0xD83CDF52U, 0x0U, 2); - new (toFill++) EmojiData(180, 468, 0xD83CDF53U, 0x0U, 2); - new (toFill++) EmojiData(252, 432, 0xD83CDF54U, 0x0U, 2); - new (toFill++) EmojiData(216, 432, 0xD83CDF55U, 0x0U, 2); - new (toFill++) EmojiData(360, 432, 0xD83CDF56U, 0x0U, 2); - new (toFill++) EmojiData(324, 432, 0xD83CDF57U, 0x0U, 2); - new (toFill++) EmojiData(648, 432, 0xD83CDF58U, 0x0U, 2); - new (toFill++) EmojiData(612, 432, 0xD83CDF59U, 0x0U, 2); - new (toFill++) EmojiData(684, 432, 0xD83CDF5AU, 0x0U, 2); - new (toFill++) EmojiData(432, 432, 0xD83CDF5BU, 0x0U, 2); - new (toFill++) EmojiData(720, 432, 0xD83CDF5CU, 0x0U, 2); - new (toFill++) EmojiData(396, 432, 0xD83CDF5DU, 0x0U, 2); - new (toFill++) EmojiData(900, 432, 0xD83CDF5EU, 0x0U, 2); - new (toFill++) EmojiData(288, 432, 0xD83CDF5FU, 0x0U, 2); - new (toFill++) EmojiData(396, 468, 0xD83CDF60U, 0x0U, 2); - new (toFill++) EmojiData(828, 432, 0xD83CDF61U, 0x0U, 2); - new (toFill++) EmojiData(792, 432, 0xD83CDF62U, 0x0U, 2); - new (toFill++) EmojiData(540, 432, 0xD83CDF63U, 0x0U, 2); - new (toFill++) EmojiData(468, 432, 0xD83CDF64U, 0x0U, 2); - new (toFill++) EmojiData(576, 432, 0xD83CDF65U, 0x0U, 2); - new (toFill++) EmojiData(1008, 432, 0xD83CDF66U, 0x0U, 2); - new (toFill++) EmojiData(1080, 432, 0xD83CDF67U, 0x0U, 2); - new (toFill++) EmojiData(1044, 432, 0xD83CDF68U, 0x0U, 2); - new (toFill++) EmojiData(936, 432, 0xD83CDF69U, 0x0U, 2); - new (toFill++) EmojiData(1188, 432, 0xD83CDF6AU, 0x0U, 2); - new (toFill++) EmojiData(1224, 432, 0xD83CDF6BU, 0x0U, 2); - new (toFill++) EmojiData(1260, 432, 0xD83CDF6CU, 0x0U, 2); - new (toFill++) EmojiData(1296, 432, 0xD83CDF6DU, 0x0U, 2); - new (toFill++) EmojiData(972, 432, 0xD83CDF6EU, 0x0U, 2); - new (toFill++) EmojiData(1332, 432, 0xD83CDF6FU, 0x0U, 2); - new (toFill++) EmojiData(1152, 432, 0xD83CDF70U, 0x0U, 2); - new (toFill++) EmojiData(504, 432, 0xD83CDF71U, 0x0U, 2); - new (toFill++) EmojiData(756, 432, 0xD83CDF72U, 0x0U, 2); - new (toFill++) EmojiData(864, 432, 0xD83CDF73U, 0x0U, 2); - new (toFill++) EmojiData(180, 432, 0xD83CDF74U, 0x0U, 2); - new (toFill++) EmojiData(1332, 396, 0xD83CDF75U, 0x0U, 2); - new (toFill++) EmojiData(1368, 396, 0xD83CDF76U, 0x0U, 2); - new (toFill++) EmojiData(144, 432, 0xD83CDF77U, 0x0U, 2); - new (toFill++) EmojiData(72, 432, 0xD83CDF78U, 0x0U, 2); - new (toFill++) EmojiData(108, 432, 0xD83CDF79U, 0x0U, 2); - new (toFill++) EmojiData(0, 432, 0xD83CDF7AU, 0x0U, 2); - new (toFill++) EmojiData(36, 432, 0xD83CDF7BU, 0x0U, 2); - new (toFill++) EmojiData(1404, 396, 0xD83CDF7CU, 0x0U, 2); - new (toFill++) EmojiData(180, 144, 0xD83CDF80U, 0x0U, 2); - new (toFill++) EmojiData(1404, 252, 0xD83CDF81U, 0x0U, 2); - new (toFill++) EmojiData(1116, 432, 0xD83CDF82U, 0x0U, 2); - new (toFill++) EmojiData(1260, 252, 0xD83CDF83U, 0x0U, 2); - new (toFill++) EmojiData(1368, 252, 0xD83CDF84U, 0x0U, 2); - new (toFill++) EmojiData(1332, 252, 0xD83CDF85U, 0x0U, 2); - new (toFill++) EmojiData(1116, 252, 0xD83CDF86U, 0x0U, 2); - new (toFill++) EmojiData(1152, 252, 0xD83CDF87U, 0x0U, 2); - new (toFill++) EmojiData(108, 288, 0xD83CDF88U, 0x0U, 2); - new (toFill++) EmojiData(36, 288, 0xD83CDF89U, 0x0U, 2); - new (toFill++) EmojiData(72, 288, 0xD83CDF8AU, 0x0U, 2); - new (toFill++) EmojiData(0, 288, 0xD83CDF8BU, 0x0U, 2); - new (toFill++) EmojiData(144, 288, 0xD83CDF8CU, 0x0U, 2); - new (toFill++) EmojiData(900, 252, 0xD83CDF8DU, 0x0U, 2); - new (toFill++) EmojiData(972, 252, 0xD83CDF8EU, 0x0U, 2); - new (toFill++) EmojiData(1080, 252, 0xD83CDF8FU, 0x0U, 2); - new (toFill++) EmojiData(1188, 252, 0xD83CDF90U, 0x0U, 2); - new (toFill++) EmojiData(1224, 252, 0xD83CDF91U, 0x0U, 2); - new (toFill++) EmojiData(1008, 252, 0xD83CDF92U, 0x0U, 2); - new (toFill++) EmojiData(1044, 252, 0xD83CDF93U, 0x0U, 2); - new (toFill++) EmojiData(108, 504, 0xD83CDFA0U, 0x0U, 2); - new (toFill++) EmojiData(144, 504, 0xD83CDFA1U, 0x0U, 2); - new (toFill++) EmojiData(216, 504, 0xD83CDFA2U, 0x0U, 2); - new (toFill++) EmojiData(1260, 396, 0xD83CDFA3U, 0x0U, 2); - new (toFill++) EmojiData(0, 396, 0xD83CDFA4U, 0x0U, 2); - new (toFill++) EmojiData(216, 288, 0xD83CDFA5U, 0x0U, 2); - new (toFill++) EmojiData(252, 612, 0xD83CDFA6U, 0x0U, 2); - new (toFill++) EmojiData(36, 396, 0xD83CDFA7U, 0x0U, 2); - new (toFill++) EmojiData(1368, 360, 0xD83CDFA8U, 0x0U, 2); - new (toFill++) EmojiData(864, 108, 0xD83CDFA9U, 0x0U, 2); - new (toFill++) EmojiData(792, 540, 0xD83CDFAAU, 0x0U, 2); - new (toFill++) EmojiData(396, 540, 0xD83CDFABU, 0x0U, 2); - new (toFill++) EmojiData(1404, 360, 0xD83CDFACU, 0x0U, 2); - new (toFill++) EmojiData(828, 540, 0xD83CDFADU, 0x0U, 2); - new (toFill++) EmojiData(396, 396, 0xD83CDFAEU, 0x0U, 2); - new (toFill++) EmojiData(576, 396, 0xD83CDFAFU, 0x0U, 2); - new (toFill++) EmojiData(684, 540, 0xD83CDFB0U, 0x0U, 2); - new (toFill++) EmojiData(792, 396, 0xD83CDFB1U, 0x0U, 2); - new (toFill++) EmojiData(540, 396, 0xD83CDFB2U, 0x0U, 2); - new (toFill++) EmojiData(864, 396, 0xD83CDFB3U, 0x0U, 2); - new (toFill++) EmojiData(468, 396, 0xD83CDFB4U, 0x0U, 2); - new (toFill++) EmojiData(108, 396, 0xD83CDFB5U, 0x0U, 2); - new (toFill++) EmojiData(144, 396, 0xD83CDFB6U, 0x0U, 2); - new (toFill++) EmojiData(288, 396, 0xD83CDFB7U, 0x0U, 2); - new (toFill++) EmojiData(324, 396, 0xD83CDFB8U, 0x0U, 2); - new (toFill++) EmojiData(180, 396, 0xD83CDFB9U, 0x0U, 2); - new (toFill++) EmojiData(252, 396, 0xD83CDFBAU, 0x0U, 2); - new (toFill++) EmojiData(216, 396, 0xD83CDFBBU, 0x0U, 2); - new (toFill++) EmojiData(72, 396, 0xD83CDFBCU, 0x0U, 2); - new (toFill++) EmojiData(1296, 108, 0xD83CDFBDU, 0x0U, 2); - new (toFill++) EmojiData(756, 396, 0xD83CDFBEU, 0x0U, 2); - new (toFill++) EmojiData(1116, 396, 0xD83CDFBFU, 0x0U, 2); - new (toFill++) EmojiData(648, 396, 0xD83CDFC0U, 0x0U, 2); - new (toFill++) EmojiData(1008, 396, 0xD83CDFC1U, 0x0U, 2); - new (toFill++) EmojiData(1152, 396, 0xD83CDFC2U, 0x0U, 2); - new (toFill++) EmojiData(144, 108, 0xD83CDFC3U, 0x0U, 2); - new (toFill++) EmojiData(1224, 396, 0xD83CDFC4U, 0x0U, 2); - new (toFill++) EmojiData(1080, 396, 0xD83CDFC6U, 0x0U, 2); - new (toFill++) EmojiData(1044, 396, 0xD83CDFC7U, 0x0U, 2); - new (toFill++) EmojiData(612, 396, 0xD83CDFC8U, 0x0U, 2); - new (toFill++) EmojiData(828, 396, 0xD83CDFC9U, 0x0U, 2); - new (toFill++) EmojiData(1188, 396, 0xD83CDFCAU, 0x0U, 2); - new (toFill++) EmojiData(540, 468, 0xD83CDFE0U, 0x0U, 2); - new (toFill++) EmojiData(576, 468, 0xD83CDFE1U, 0x0U, 2); - new (toFill++) EmojiData(648, 468, 0xD83CDFE2U, 0x0U, 2); - new (toFill++) EmojiData(684, 468, 0xD83CDFE3U, 0x0U, 2); - new (toFill++) EmojiData(1008, 468, 0xD83CDFE4U, 0x0U, 2); - new (toFill++) EmojiData(720, 468, 0xD83CDFE5U, 0x0U, 2); - new (toFill++) EmojiData(756, 468, 0xD83CDFE6U, 0x0U, 2); - new (toFill++) EmojiData(72, 684, 0xD83CDFE7U, 0x0U, 2); - new (toFill++) EmojiData(864, 468, 0xD83CDFE8U, 0x0U, 2); - new (toFill++) EmojiData(828, 468, 0xD83CDFE9U, 0x0U, 2); - new (toFill++) EmojiData(792, 468, 0xD83CDFEAU, 0x0U, 2); - new (toFill++) EmojiData(612, 468, 0xD83CDFEBU, 0x0U, 2); - new (toFill++) EmojiData(972, 468, 0xD83CDFECU, 0x0U, 2); - new (toFill++) EmojiData(1224, 468, 0xD83CDFEDU, 0x0U, 2); - new (toFill++) EmojiData(648, 540, 0xD83CDFEEU, 0x0U, 2); - new (toFill++) EmojiData(1116, 468, 0xD83CDFEFU, 0x0U, 2); - new (toFill++) EmojiData(1152, 468, 0xD83CDFF0U, 0x0U, 2); - new (toFill++) EmojiData(1116, 180, 0xD83DDC00U, 0x0U, 2); - new (toFill++) EmojiData(36, 216, 0xD83DDC01U, 0x0U, 2); - new (toFill++) EmojiData(72, 216, 0xD83DDC02U, 0x0U, 2); - new (toFill++) EmojiData(1152, 180, 0xD83DDC03U, 0x0U, 2); - new (toFill++) EmojiData(1044, 180, 0xD83DDC04U, 0x0U, 2); - new (toFill++) EmojiData(1188, 180, 0xD83DDC05U, 0x0U, 2); - new (toFill++) EmojiData(288, 216, 0xD83DDC06U, 0x0U, 2); - new (toFill++) EmojiData(1224, 180, 0xD83DDC07U, 0x0U, 2); - new (toFill++) EmojiData(324, 216, 0xD83DDC08U, 0x0U, 2); - new (toFill++) EmojiData(1260, 180, 0xD83DDC09U, 0x0U, 2); - new (toFill++) EmojiData(180, 216, 0xD83DDC0AU, 0x0U, 2); - new (toFill++) EmojiData(1008, 180, 0xD83DDC0BU, 0x0U, 2); - new (toFill++) EmojiData(756, 180, 0xD83DDC0CU, 0x0U, 2); - new (toFill++) EmojiData(540, 180, 0xD83DDC0DU, 0x0U, 2); - new (toFill++) EmojiData(1296, 180, 0xD83DDC0EU, 0x0U, 2); - new (toFill++) EmojiData(1080, 180, 0xD83DDC0FU, 0x0U, 2); - new (toFill++) EmojiData(1332, 180, 0xD83DDC10U, 0x0U, 2); - new (toFill++) EmojiData(216, 180, 0xD83DDC11U, 0x0U, 2); - new (toFill++) EmojiData(144, 180, 0xD83DDC12U, 0x0U, 2); - new (toFill++) EmojiData(1368, 180, 0xD83DDC13U, 0x0U, 2); - new (toFill++) EmojiData(504, 180, 0xD83DDC14U, 0x0U, 2); - new (toFill++) EmojiData(1404, 180, 0xD83DDC15U, 0x0U, 2); - new (toFill++) EmojiData(0, 216, 0xD83DDC16U, 0x0U, 2); - new (toFill++) EmojiData(72, 180, 0xD83DDC17U, 0x0U, 2); - new (toFill++) EmojiData(252, 180, 0xD83DDC18U, 0x0U, 2); - new (toFill++) EmojiData(792, 180, 0xD83DDC19U, 0x0U, 2); - new (toFill++) EmojiData(828, 180, 0xD83DDC1AU, 0x0U, 2); - new (toFill++) EmojiData(612, 180, 0xD83DDC1BU, 0x0U, 2); - new (toFill++) EmojiData(684, 180, 0xD83DDC1CU, 0x0U, 2); - new (toFill++) EmojiData(648, 180, 0xD83DDC1DU, 0x0U, 2); - new (toFill++) EmojiData(720, 180, 0xD83DDC1EU, 0x0U, 2); - new (toFill++) EmojiData(900, 180, 0xD83DDC1FU, 0x0U, 2); - new (toFill++) EmojiData(864, 180, 0xD83DDC20U, 0x0U, 2); - new (toFill++) EmojiData(144, 216, 0xD83DDC21U, 0x0U, 2); - new (toFill++) EmojiData(576, 180, 0xD83DDC22U, 0x0U, 2); - new (toFill++) EmojiData(468, 180, 0xD83DDC23U, 0x0U, 2); - new (toFill++) EmojiData(396, 180, 0xD83DDC24U, 0x0U, 2); - new (toFill++) EmojiData(432, 180, 0xD83DDC25U, 0x0U, 2); - new (toFill++) EmojiData(360, 180, 0xD83DDC26U, 0x0U, 2); - new (toFill++) EmojiData(324, 180, 0xD83DDC27U, 0x0U, 2); - new (toFill++) EmojiData(1332, 144, 0xD83DDC28U, 0x0U, 2); - new (toFill++) EmojiData(360, 216, 0xD83DDC29U, 0x0U, 2); - new (toFill++) EmojiData(252, 216, 0xD83DDC2AU, 0x0U, 2); - new (toFill++) EmojiData(216, 216, 0xD83DDC2BU, 0x0U, 2); - new (toFill++) EmojiData(936, 180, 0xD83DDC2CU, 0x0U, 2); - new (toFill++) EmojiData(1152, 144, 0xD83DDC2DU, 0x0U, 2); - new (toFill++) EmojiData(36, 180, 0xD83DDC2EU, 0x0U, 2); - new (toFill++) EmojiData(1296, 144, 0xD83DDC2FU, 0x0U, 2); - new (toFill++) EmojiData(1224, 144, 0xD83DDC30U, 0x0U, 2); - new (toFill++) EmojiData(1116, 144, 0xD83DDC31U, 0x0U, 2); - new (toFill++) EmojiData(108, 216, 0xD83DDC32U, 0x0U, 2); - new (toFill++) EmojiData(972, 180, 0xD83DDC33U, 0x0U, 2); - new (toFill++) EmojiData(180, 180, 0xD83DDC34U, 0x0U, 2); - new (toFill++) EmojiData(108, 180, 0xD83DDC35U, 0x0U, 2); - new (toFill++) EmojiData(1044, 144, 0xD83DDC36U, 0x0U, 2); - new (toFill++) EmojiData(1404, 144, 0xD83DDC37U, 0x0U, 2); - new (toFill++) EmojiData(1260, 144, 0xD83DDC38U, 0x0U, 2); - new (toFill++) EmojiData(1188, 144, 0xD83DDC39U, 0x0U, 2); - new (toFill++) EmojiData(1080, 144, 0xD83DDC3AU, 0x0U, 2); - new (toFill++) EmojiData(1368, 144, 0xD83DDC3BU, 0x0U, 2); - new (toFill++) EmojiData(288, 180, 0xD83DDC3CU, 0x0U, 2); - new (toFill++) EmojiData(0, 180, 0xD83DDC3DU, 0x0U, 2); - new (toFill++) EmojiData(396, 216, 0xD83DDC3EU, 0x0U, 2); - new (toFill++) EmojiData(756, 72, 0xD83DDC40U, 0x0U, 2); - new (toFill++) EmojiData(720, 72, 0xD83DDC42U, 0x0U, 2); - new (toFill++) EmojiData(792, 72, 0xD83DDC43U, 0x0U, 2); - new (toFill++) EmojiData(864, 72, 0xD83DDC44U, 0x0U, 2); - new (toFill++) EmojiData(828, 72, 0xD83DDC45U, 0x0U, 2); - new (toFill++) EmojiData(1224, 72, 0xD83DDC46U, 0x0U, 2); - new (toFill++) EmojiData(1260, 72, 0xD83DDC47U, 0x0U, 2); - new (toFill++) EmojiData(1332, 72, 0xD83DDC48U, 0x0U, 2); - new (toFill++) EmojiData(1296, 72, 0xD83DDC49U, 0x0U, 2); - new (toFill++) EmojiData(1008, 72, 0xD83DDC4AU, 0x0U, 2); - new (toFill++) EmojiData(1116, 72, 0xD83DDC4BU, 0x0U, 2); - new (toFill++) EmojiData(972, 72, 0xD83DDC4CU, 0x0U, 2); - new (toFill++) EmojiData(900, 72, 0xD83DDC4DU, 0x0U, 2); - new (toFill++) EmojiData(936, 72, 0xD83DDC4EU, 0x0U, 2); - new (toFill++) EmojiData(36, 108, 0xD83DDC4FU, 0x0U, 2); - new (toFill++) EmojiData(1188, 72, 0xD83DDC50U, 0x0U, 2); - new (toFill++) EmojiData(900, 108, 0xD83DDC51U, 0x0U, 2); - new (toFill++) EmojiData(936, 108, 0xD83DDC52U, 0x0U, 2); - new (toFill++) EmojiData(144, 144, 0xD83DDC53U, 0x0U, 2); - new (toFill++) EmojiData(1188, 108, 0xD83DDC54U, 0x0U, 2); - new (toFill++) EmojiData(1152, 108, 0xD83DDC55U, 0x0U, 2); - new (toFill++) EmojiData(1332, 108, 0xD83DDC56U, 0x0U, 2); - new (toFill++) EmojiData(1260, 108, 0xD83DDC57U, 0x0U, 2); - new (toFill++) EmojiData(1368, 108, 0xD83DDC58U, 0x0U, 2); - new (toFill++) EmojiData(1404, 108, 0xD83DDC59U, 0x0U, 2); - new (toFill++) EmojiData(1224, 108, 0xD83DDC5AU, 0x0U, 2); - new (toFill++) EmojiData(108, 144, 0xD83DDC5BU, 0x0U, 2); - new (toFill++) EmojiData(36, 144, 0xD83DDC5CU, 0x0U, 2); - new (toFill++) EmojiData(72, 144, 0xD83DDC5DU, 0x0U, 2); - new (toFill++) EmojiData(1008, 108, 0xD83DDC5EU, 0x0U, 2); - new (toFill++) EmojiData(972, 108, 0xD83DDC5FU, 0x0U, 2); - new (toFill++) EmojiData(1080, 108, 0xD83DDC60U, 0x0U, 2); - new (toFill++) EmojiData(1044, 108, 0xD83DDC61U, 0x0U, 2); - new (toFill++) EmojiData(1116, 108, 0xD83DDC62U, 0x0U, 2); - new (toFill++) EmojiData(972, 144, 0xD83DDC63U, 0x0U, 2); - new (toFill++) EmojiData(864, 144, 0xD83DDC64U, 0x0U, 2); - new (toFill++) EmojiData(900, 144, 0xD83DDC65U, 0x0U, 2); - new (toFill++) EmojiData(864, 36, 0xD83DDC66U, 0x0U, 2); - new (toFill++) EmojiData(900, 36, 0xD83DDC67U, 0x0U, 2); - new (toFill++) EmojiData(936, 36, 0xD83DDC68U, 0x0U, 2); - new (toFill++) EmojiData(972, 36, 0xD83DDC69U, 0x0U, 2); - new (toFill++) EmojiData(252, 108, 0xD83DDC6AU, 0x0U, 2); - new (toFill++) EmojiData(216, 108, 0xD83DDC6BU, 0x0U, 2); - new (toFill++) EmojiData(288, 108, 0xD83DDC6CU, 0x0U, 2); - new (toFill++) EmojiData(324, 108, 0xD83DDC6DU, 0x0U, 2); - new (toFill++) EmojiData(720, 36, 0xD83DDC6EU, 0x0U, 2); - new (toFill++) EmojiData(432, 108, 0xD83DDC6FU, 0x0U, 2); - new (toFill++) EmojiData(720, 108, 0xD83DDC70U, 0x0U, 2); - new (toFill++) EmojiData(1080, 36, 0xD83DDC71U, 0x0U, 2); - new (toFill++) EmojiData(648, 36, 0xD83DDC72U, 0x0U, 2); - new (toFill++) EmojiData(684, 36, 0xD83DDC73U, 0x0U, 2); - new (toFill++) EmojiData(1008, 36, 0xD83DDC74U, 0x0U, 2); - new (toFill++) EmojiData(1044, 36, 0xD83DDC75U, 0x0U, 2); - new (toFill++) EmojiData(828, 36, 0xD83DDC76U, 0x0U, 2); - new (toFill++) EmojiData(756, 36, 0xD83DDC77U, 0x0U, 2); - new (toFill++) EmojiData(1152, 36, 0xD83DDC78U, 0x0U, 2); - new (toFill++) EmojiData(72, 72, 0xD83DDC79U, 0x0U, 2); - new (toFill++) EmojiData(108, 72, 0xD83DDC7AU, 0x0U, 2); - new (toFill++) EmojiData(1296, 252, 0xD83DDC7BU, 0x0U, 2); - new (toFill++) EmojiData(1116, 36, 0xD83DDC7CU, 0x0U, 2); - new (toFill++) EmojiData(288, 72, 0xD83DDC7DU, 0x0U, 2); - new (toFill++) EmojiData(360, 396, 0xD83DDC7EU, 0x0U, 2); - new (toFill++) EmojiData(288, 36, 0xD83DDC7FU, 0x0U, 2); - new (toFill++) EmojiData(252, 72, 0xD83DDC80U, 0x0U, 2); - new (toFill++) EmojiData(540, 108, 0xD83DDC81U, 0x0U, 2); - new (toFill++) EmojiData(792, 36, 0xD83DDC82U, 0x0U, 2); - new (toFill++) EmojiData(180, 108, 0xD83DDC83U, 0x0U, 2); - new (toFill++) EmojiData(252, 144, 0xD83DDC84U, 0x0U, 2); - new (toFill++) EmojiData(684, 108, 0xD83DDC85U, 0x0U, 2); - new (toFill++) EmojiData(612, 108, 0xD83DDC86U, 0x0U, 2); - new (toFill++) EmojiData(648, 108, 0xD83DDC87U, 0x0U, 2); - new (toFill++) EmojiData(324, 540, 0xD83DDC88U, 0x0U, 2); - new (toFill++) EmojiData(756, 324, 0xD83DDC89U, 0x0U, 2); - new (toFill++) EmojiData(720, 324, 0xD83DDC8AU, 0x0U, 2); - new (toFill++) EmojiData(756, 144, 0xD83DDC8BU, 0x0U, 2); - new (toFill++) EmojiData(720, 144, 0xD83DDC8CU, 0x0U, 2); - new (toFill++) EmojiData(792, 144, 0xD83DDC8DU, 0x0U, 2); - new (toFill++) EmojiData(828, 144, 0xD83DDC8EU, 0x0U, 2); - new (toFill++) EmojiData(360, 108, 0xD83DDC8FU, 0x0U, 2); - new (toFill++) EmojiData(432, 216, 0xD83DDC90U, 0x0U, 2); - new (toFill++) EmojiData(396, 108, 0xD83DDC91U, 0x0U, 2); - new (toFill++) EmojiData(900, 468, 0xD83DDC92U, 0x0U, 2); - new (toFill++) EmojiData(540, 144, 0xD83DDC93U, 0x0U, 2); - new (toFill++) EmojiData(468, 144, 0xD83DDC94U, 0x0U, 2); - new (toFill++) EmojiData(576, 144, 0xD83DDC95U, 0x0U, 2); - new (toFill++) EmojiData(612, 144, 0xD83DDC96U, 0x0U, 2); - new (toFill++) EmojiData(504, 144, 0xD83DDC97U, 0x0U, 2); - new (toFill++) EmojiData(684, 144, 0xD83DDC98U, 0x0U, 2); - new (toFill++) EmojiData(324, 144, 0xD83DDC99U, 0x0U, 2); - new (toFill++) EmojiData(396, 144, 0xD83DDC9AU, 0x0U, 2); - new (toFill++) EmojiData(288, 144, 0xD83DDC9BU, 0x0U, 2); - new (toFill++) EmojiData(360, 144, 0xD83DDC9CU, 0x0U, 2); - new (toFill++) EmojiData(936, 252, 0xD83DDC9DU, 0x0U, 2); - new (toFill++) EmojiData(648, 144, 0xD83DDC9EU, 0x0U, 2); - new (toFill++) EmojiData(612, 648, 0xD83DDC9FU, 0x0U, 2); - new (toFill++) EmojiData(900, 648, 0xD83DDCA0U, 0x0U, 2); - new (toFill++) EmojiData(36, 324, 0xD83DDCA1U, 0x0U, 2); - new (toFill++) EmojiData(540, 72, 0xD83DDCA2U, 0x0U, 2); - new (toFill++) EmojiData(612, 324, 0xD83DDCA3U, 0x0U, 2); - new (toFill++) EmojiData(648, 72, 0xD83DDCA4U, 0x0U, 2); - new (toFill++) EmojiData(504, 72, 0xD83DDCA5U, 0x0U, 2); - new (toFill++) EmojiData(576, 72, 0xD83DDCA6U, 0x0U, 2); - new (toFill++) EmojiData(612, 72, 0xD83DDCA7U, 0x0U, 2); - new (toFill++) EmojiData(684, 72, 0xD83DDCA8U, 0x0U, 2); - new (toFill++) EmojiData(324, 72, 0xD83DDCA9U, 0x0U, 2); - new (toFill++) EmojiData(72, 108, 0xD83DDCAAU, 0x0U, 2); - new (toFill++) EmojiData(468, 72, 0xD83DDCABU, 0x0U, 2); - new (toFill++) EmojiData(936, 144, 0xD83DDCACU, 0x0U, 2); - new (toFill++) EmojiData(1008, 144, 0xD83DDCADU, 0x0U, 2); - new (toFill++) EmojiData(540, 720, 0xD83DDCAEU, 0x0U, 2); - new (toFill++) EmojiData(576, 720, 0xD83DDCAFU, 0x0U, 2); - new (toFill++) EmojiData(792, 324, 0xD83DDCB0U, 0x0U, 2); - new (toFill++) EmojiData(180, 684, 0xD83DDCB1U, 0x0U, 2); - new (toFill++) EmojiData(144, 684, 0xD83DDCB2U, 0x0U, 2); - new (toFill++) EmojiData(972, 324, 0xD83DDCB3U, 0x0U, 2); - new (toFill++) EmojiData(828, 324, 0xD83DDCB4U, 0x0U, 2); - new (toFill++) EmojiData(864, 324, 0xD83DDCB5U, 0x0U, 2); - new (toFill++) EmojiData(936, 324, 0xD83DDCB6U, 0x0U, 2); - new (toFill++) EmojiData(900, 324, 0xD83DDCB7U, 0x0U, 2); - new (toFill++) EmojiData(1008, 324, 0xD83DDCB8U, 0x0U, 2); - new (toFill++) EmojiData(108, 684, 0xD83DDCB9U, 0x0U, 2); - new (toFill++) EmojiData(504, 504, 0xD83DDCBAU, 0x0U, 2); - new (toFill++) EmojiData(504, 288, 0xD83DDCBBU, 0x0U, 2); - new (toFill++) EmojiData(0, 144, 0xD83DDCBCU, 0x0U, 2); - new (toFill++) EmojiData(432, 288, 0xD83DDCBDU, 0x0U, 2); - new (toFill++) EmojiData(468, 288, 0xD83DDCBEU, 0x0U, 2); - new (toFill++) EmojiData(360, 288, 0xD83DDCBFU, 0x0U, 2); - new (toFill++) EmojiData(396, 288, 0xD83DDCC0U, 0x0U, 2); - new (toFill++) EmojiData(540, 360, 0xD83DDCC1U, 0x0U, 2); - new (toFill++) EmojiData(576, 360, 0xD83DDCC2U, 0x0U, 2); - new (toFill++) EmojiData(180, 360, 0xD83DDCC3U, 0x0U, 2); - new (toFill++) EmojiData(144, 360, 0xD83DDCC4U, 0x0U, 2); - new (toFill++) EmojiData(432, 360, 0xD83DDCC5U, 0x0U, 2); - new (toFill++) EmojiData(468, 360, 0xD83DDCC6U, 0x0U, 2); - new (toFill++) EmojiData(504, 360, 0xD83DDCC7U, 0x0U, 2); - new (toFill++) EmojiData(288, 360, 0xD83DDCC8U, 0x0U, 2); - new (toFill++) EmojiData(324, 360, 0xD83DDCC9U, 0x0U, 2); - new (toFill++) EmojiData(252, 360, 0xD83DDCCAU, 0x0U, 2); - new (toFill++) EmojiData(396, 360, 0xD83DDCCBU, 0x0U, 2); - new (toFill++) EmojiData(648, 360, 0xD83DDCCCU, 0x0U, 2); - new (toFill++) EmojiData(864, 540, 0xD83DDCCDU, 0x0U, 2); - new (toFill++) EmojiData(684, 360, 0xD83DDCCEU, 0x0U, 2); - new (toFill++) EmojiData(792, 360, 0xD83DDCCFU, 0x0U, 2); - new (toFill++) EmojiData(828, 360, 0xD83DDCD0U, 0x0U, 2); - new (toFill++) EmojiData(216, 360, 0xD83DDCD1U, 0x0U, 2); - new (toFill++) EmojiData(1080, 360, 0xD83DDCD2U, 0x0U, 2); - new (toFill++) EmojiData(1008, 360, 0xD83DDCD3U, 0x0U, 2); - new (toFill++) EmojiData(1044, 360, 0xD83DDCD4U, 0x0U, 2); - new (toFill++) EmojiData(864, 360, 0xD83DDCD5U, 0x0U, 2); - new (toFill++) EmojiData(1152, 360, 0xD83DDCD6U, 0x0U, 2); - new (toFill++) EmojiData(900, 360, 0xD83DDCD7U, 0x0U, 2); - new (toFill++) EmojiData(936, 360, 0xD83DDCD8U, 0x0U, 2); - new (toFill++) EmojiData(972, 360, 0xD83DDCD9U, 0x0U, 2); - new (toFill++) EmojiData(1116, 360, 0xD83DDCDAU, 0x0U, 2); - new (toFill++) EmojiData(1224, 360, 0xD83DDCDBU, 0x0U, 2); - new (toFill++) EmojiData(360, 360, 0xD83DDCDCU, 0x0U, 2); - new (toFill++) EmojiData(108, 360, 0xD83DDCDDU, 0x0U, 2); - new (toFill++) EmojiData(612, 288, 0xD83DDCDEU, 0x0U, 2); - new (toFill++) EmojiData(648, 288, 0xD83DDCDFU, 0x0U, 2); - new (toFill++) EmojiData(684, 288, 0xD83DDCE0U, 0x0U, 2); - new (toFill++) EmojiData(720, 288, 0xD83DDCE1U, 0x0U, 2); - new (toFill++) EmojiData(1044, 288, 0xD83DDCE2U, 0x0U, 2); - new (toFill++) EmojiData(1080, 288, 0xD83DDCE3U, 0x0U, 2); - new (toFill++) EmojiData(1152, 324, 0xD83DDCE4U, 0x0U, 2); - new (toFill++) EmojiData(1116, 324, 0xD83DDCE5U, 0x0U, 2); - new (toFill++) EmojiData(72, 360, 0xD83DDCE6U, 0x0U, 2); - new (toFill++) EmojiData(1080, 324, 0xD83DDCE7U, 0x0U, 2); - new (toFill++) EmojiData(1260, 324, 0xD83DDCE8U, 0x0U, 2); - new (toFill++) EmojiData(1224, 324, 0xD83DDCE9U, 0x0U, 2); - new (toFill++) EmojiData(1368, 324, 0xD83DDCEAU, 0x0U, 2); - new (toFill++) EmojiData(1332, 324, 0xD83DDCEBU, 0x0U, 2); - new (toFill++) EmojiData(1404, 324, 0xD83DDCECU, 0x0U, 2); - new (toFill++) EmojiData(0, 360, 0xD83DDCEDU, 0x0U, 2); - new (toFill++) EmojiData(36, 360, 0xD83DDCEEU, 0x0U, 2); - new (toFill++) EmojiData(1296, 324, 0xD83DDCEFU, 0x0U, 2); - new (toFill++) EmojiData(1332, 360, 0xD83DDCF0U, 0x0U, 2); - new (toFill++) EmojiData(540, 288, 0xD83DDCF1U, 0x0U, 2); - new (toFill++) EmojiData(1044, 324, 0xD83DDCF2U, 0x0U, 2); - new (toFill++) EmojiData(684, 648, 0xD83DDCF3U, 0x0U, 2); - new (toFill++) EmojiData(720, 648, 0xD83DDCF4U, 0x0U, 2); - new (toFill++) EmojiData(180, 648, 0xD83DDCF5U, 0x0U, 2); - new (toFill++) EmojiData(216, 612, 0xD83DDCF6U, 0x0U, 2); - new (toFill++) EmojiData(252, 288, 0xD83DDCF7U, 0x0U, 2); - new (toFill++) EmojiData(288, 288, 0xD83DDCF9U, 0x0U, 2); - new (toFill++) EmojiData(756, 288, 0xD83DDCFAU, 0x0U, 2); - new (toFill++) EmojiData(792, 288, 0xD83DDCFBU, 0x0U, 2); - new (toFill++) EmojiData(324, 288, 0xD83DDCFCU, 0x0U, 2); - new (toFill++) EmojiData(1368, 576, 0xD83DDD00U, 0x0U, 2); - new (toFill++) EmojiData(1404, 576, 0xD83DDD01U, 0x0U, 2); - new (toFill++) EmojiData(0, 612, 0xD83DDD02U, 0x0U, 2); - new (toFill++) EmojiData(792, 684, 0xD83DDD03U, 0x0U, 2); - new (toFill++) EmojiData(828, 576, 0xD83DDD04U, 0x0U, 2); - new (toFill++) EmojiData(144, 324, 0xD83DDD05U, 0x0U, 2); - new (toFill++) EmojiData(108, 324, 0xD83DDD06U, 0x0U, 2); - new (toFill++) EmojiData(936, 288, 0xD83DDD07U, 0x0U, 2); - new (toFill++) EmojiData(900, 288, 0xD83DDD08U, 0x0U, 2); - new (toFill++) EmojiData(864, 288, 0xD83DDD09U, 0x0U, 2); - new (toFill++) EmojiData(828, 288, 0xD83DDD0AU, 0x0U, 2); - new (toFill++) EmojiData(216, 324, 0xD83DDD0BU, 0x0U, 2); - new (toFill++) EmojiData(180, 324, 0xD83DDD0CU, 0x0U, 2); - new (toFill++) EmojiData(252, 324, 0xD83DDD0DU, 0x0U, 2); - new (toFill++) EmojiData(0, 324, 0xD83DDD0EU, 0x0U, 2); - new (toFill++) EmojiData(1332, 288, 0xD83DDD0FU, 0x0U, 2); - new (toFill++) EmojiData(1368, 288, 0xD83DDD10U, 0x0U, 2); - new (toFill++) EmojiData(1404, 288, 0xD83DDD11U, 0x0U, 2); - new (toFill++) EmojiData(1296, 288, 0xD83DDD12U, 0x0U, 2); - new (toFill++) EmojiData(1260, 288, 0xD83DDD13U, 0x0U, 2); - new (toFill++) EmojiData(972, 288, 0xD83DDD14U, 0x0U, 2); - new (toFill++) EmojiData(1008, 288, 0xD83DDD15U, 0x0U, 2); - new (toFill++) EmojiData(1188, 360, 0xD83DDD16U, 0x0U, 2); - new (toFill++) EmojiData(720, 720, 0xD83DDD17U, 0x0U, 2); - new (toFill++) EmojiData(684, 720, 0xD83DDD18U, 0x0U, 2); - new (toFill++) EmojiData(684, 684, 0xD83DDD19U, 0x0U, 2); - new (toFill++) EmojiData(648, 684, 0xD83DDD1AU, 0x0U, 2); - new (toFill++) EmojiData(720, 684, 0xD83DDD1BU, 0x0U, 2); - new (toFill++) EmojiData(756, 684, 0xD83DDD1CU, 0x0U, 2); - new (toFill++) EmojiData(612, 684, 0xD83DDD1DU, 0x0U, 2); - new (toFill++) EmojiData(144, 648, 0xD83DDD1EU, 0x0U, 2); - new (toFill++) EmojiData(216, 576, 0xD83DDD1FU, 0x0U, 2); - new (toFill++) EmojiData(504, 576, 0xD83DDD20U, 0x0U, 2); - new (toFill++) EmojiData(540, 576, 0xD83DDD21U, 0x0U, 2); - new (toFill++) EmojiData(252, 576, 0xD83DDD22U, 0x0U, 2); - new (toFill++) EmojiData(324, 576, 0xD83DDD23U, 0x0U, 2); - new (toFill++) EmojiData(576, 576, 0xD83DDD24U, 0x0U, 2); - new (toFill++) EmojiData(360, 72, 0xD83DDD25U, 0x0U, 2); - new (toFill++) EmojiData(72, 324, 0xD83DDD26U, 0x0U, 2); - new (toFill++) EmojiData(432, 324, 0xD83DDD27U, 0x0U, 2); - new (toFill++) EmojiData(504, 324, 0xD83DDD28U, 0x0U, 2); - new (toFill++) EmojiData(468, 324, 0xD83DDD29U, 0x0U, 2); - new (toFill++) EmojiData(684, 324, 0xD83DDD2AU, 0x0U, 2); - new (toFill++) EmojiData(648, 324, 0xD83DDD2BU, 0x0U, 2); - new (toFill++) EmojiData(1260, 360, 0xD83DDD2CU, 0x0U, 2); - new (toFill++) EmojiData(1296, 360, 0xD83DDD2DU, 0x0U, 2); - new (toFill++) EmojiData(180, 288, 0xD83DDD2EU, 0x0U, 2); - new (toFill++) EmojiData(36, 684, 0xD83DDD2FU, 0x0U, 2); - new (toFill++) EmojiData(576, 540, 0xD83DDD30U, 0x0U, 2); - new (toFill++) EmojiData(864, 720, 0xD83DDD31U, 0x0U, 2); - new (toFill++) EmojiData(1152, 720, 0xD83DDD32U, 0x0U, 2); - new (toFill++) EmojiData(1188, 720, 0xD83DDD33U, 0x0U, 2); - new (toFill++) EmojiData(1296, 720, 0xD83DDD34U, 0x0U, 2); - new (toFill++) EmojiData(1332, 720, 0xD83DDD35U, 0x0U, 2); - new (toFill++) EmojiData(36, 756, 0xD83DDD36U, 0x0U, 2); - new (toFill++) EmojiData(72, 756, 0xD83DDD37U, 0x0U, 2); - new (toFill++) EmojiData(108, 756, 0xD83DDD38U, 0x0U, 2); - new (toFill++) EmojiData(144, 756, 0xD83DDD39U, 0x0U, 2); - new (toFill++) EmojiData(1116, 720, 0xD83DDD3AU, 0x0U, 2); - new (toFill++) EmojiData(1368, 720, 0xD83DDD3BU, 0x0U, 2); - new (toFill++) EmojiData(936, 576, 0xD83DDD3CU, 0x0U, 2); - new (toFill++) EmojiData(972, 576, 0xD83DDD3DU, 0x0U, 2); - new (toFill++) EmojiData(900, 684, 0xD83DDD50U, 0x0U, 2); - new (toFill++) EmojiData(972, 684, 0xD83DDD51U, 0x0U, 2); - new (toFill++) EmojiData(1044, 684, 0xD83DDD52U, 0x0U, 2); - new (toFill++) EmojiData(1116, 684, 0xD83DDD53U, 0x0U, 2); - new (toFill++) EmojiData(1188, 684, 0xD83DDD54U, 0x0U, 2); - new (toFill++) EmojiData(1260, 684, 0xD83DDD55U, 0x0U, 2); - new (toFill++) EmojiData(1296, 684, 0xD83DDD56U, 0x0U, 2); - new (toFill++) EmojiData(1332, 684, 0xD83DDD57U, 0x0U, 2); - new (toFill++) EmojiData(1368, 684, 0xD83DDD58U, 0x0U, 2); - new (toFill++) EmojiData(1404, 684, 0xD83DDD59U, 0x0U, 2); - new (toFill++) EmojiData(0, 720, 0xD83DDD5AU, 0x0U, 2); - new (toFill++) EmojiData(828, 684, 0xD83DDD5BU, 0x0U, 2); - new (toFill++) EmojiData(936, 684, 0xD83DDD5CU, 0x0U, 2); - new (toFill++) EmojiData(1008, 684, 0xD83DDD5DU, 0x0U, 2); - new (toFill++) EmojiData(1080, 684, 0xD83DDD5EU, 0x0U, 2); - new (toFill++) EmojiData(1152, 684, 0xD83DDD5FU, 0x0U, 2); - new (toFill++) EmojiData(1224, 684, 0xD83DDD60U, 0x0U, 2); - new (toFill++) EmojiData(36, 720, 0xD83DDD61U, 0x0U, 2); - new (toFill++) EmojiData(72, 720, 0xD83DDD62U, 0x0U, 2); - new (toFill++) EmojiData(108, 720, 0xD83DDD63U, 0x0U, 2); - new (toFill++) EmojiData(144, 720, 0xD83DDD64U, 0x0U, 2); - new (toFill++) EmojiData(180, 720, 0xD83DDD65U, 0x0U, 2); - new (toFill++) EmojiData(216, 720, 0xD83DDD66U, 0x0U, 2); - new (toFill++) EmojiData(864, 684, 0xD83DDD67U, 0x0U, 2); - new (toFill++) EmojiData(1332, 468, 0xD83DDDFBU, 0x0U, 2); - new (toFill++) EmojiData(1260, 468, 0xD83DDDFCU, 0x0U, 2); - new (toFill++) EmojiData(36, 504, 0xD83DDDFDU, 0x0U, 2); - new (toFill++) EmojiData(1296, 468, 0xD83DDDFEU, 0x0U, 2); - new (toFill++) EmojiData(756, 540, 0xD83DDDFFU, 0x0U, 2); - new (toFill++) EmojiData(72, 0, 0xD83DDE00U, 0x0U, 2); - new (toFill++) EmojiData(540, 0, 0xD83DDE01U, 0x0U, 2); - new (toFill++) EmojiData(792, 0, 0xD83DDE02U, 0x0U, 2); - new (toFill++) EmojiData(36, 0, 0xD83DDE03U, 0x0U, 2); - new (toFill++) EmojiData(0, 0, 0xD83DDE04U, 0x0U, 2); - new (toFill++) EmojiData(972, 0, 0xD83DDE05U, 0x0U, 2); - new (toFill++) EmojiData(1332, 0, 0xD83DDE06U, 0x0U, 2); - new (toFill++) EmojiData(540, 36, 0xD83DDE07U, 0x0U, 2); - new (toFill++) EmojiData(252, 36, 0xD83DDE08U, 0x0U, 2); - new (toFill++) EmojiData(180, 0, 0xD83DDE09U, 0x0U, 2); - new (toFill++) EmojiData(108, 0, 0xD83DDE0AU, 0x0U, 2); - new (toFill++) EmojiData(1368, 0, 0xD83DDE0BU, 0x0U, 2); - new (toFill++) EmojiData(612, 0, 0xD83DDE0CU, 0x0U, 2); - new (toFill++) EmojiData(216, 0, 0xD83DDE0DU, 0x0U, 2); - new (toFill++) EmojiData(0, 36, 0xD83DDE0EU, 0x0U, 2); - new (toFill++) EmojiData(576, 36, 0xD83DDE0FU, 0x0U, 2); - new (toFill++) EmojiData(396, 36, 0xD83DDE10U, 0x0U, 2); - new (toFill++) EmojiData(612, 36, 0xD83DDE11U, 0x0U, 2); - new (toFill++) EmojiData(648, 0, 0xD83DDE12U, 0x0U, 2); - new (toFill++) EmojiData(1008, 0, 0xD83DDE13U, 0x0U, 2); - new (toFill++) EmojiData(576, 0, 0xD83DDE14U, 0x0U, 2); - new (toFill++) EmojiData(432, 36, 0xD83DDE15U, 0x0U, 2); - new (toFill++) EmojiData(1296, 0, 0xD83DDE16U, 0x0U, 2); - new (toFill++) EmojiData(324, 0, 0xD83DDE17U, 0x0U, 2); - new (toFill++) EmojiData(252, 0, 0xD83DDE18U, 0x0U, 2); - new (toFill++) EmojiData(360, 0, 0xD83DDE19U, 0x0U, 2); - new (toFill++) EmojiData(288, 0, 0xD83DDE1AU, 0x0U, 2); - new (toFill++) EmojiData(468, 0, 0xD83DDE1BU, 0x0U, 2); - new (toFill++) EmojiData(396, 0, 0xD83DDE1CU, 0x0U, 2); - new (toFill++) EmojiData(432, 0, 0xD83DDE1DU, 0x0U, 2); - new (toFill++) EmojiData(684, 0, 0xD83DDE1EU, 0x0U, 2); - new (toFill++) EmojiData(144, 36, 0xD83DDE1FU, 0x0U, 2); - new (toFill++) EmojiData(1188, 0, 0xD83DDE20U, 0x0U, 2); - new (toFill++) EmojiData(1224, 0, 0xD83DDE21U, 0x0U, 2); - new (toFill++) EmojiData(756, 0, 0xD83DDE22U, 0x0U, 2); - new (toFill++) EmojiData(720, 0, 0xD83DDE23U, 0x0U, 2); - new (toFill++) EmojiData(1260, 0, 0xD83DDE24U, 0x0U, 2); - new (toFill++) EmojiData(900, 0, 0xD83DDE25U, 0x0U, 2); - new (toFill++) EmojiData(180, 36, 0xD83DDE26U, 0x0U, 2); - new (toFill++) EmojiData(216, 36, 0xD83DDE27U, 0x0U, 2); - new (toFill++) EmojiData(1116, 0, 0xD83DDE28U, 0x0U, 2); - new (toFill++) EmojiData(1044, 0, 0xD83DDE29U, 0x0U, 2); - new (toFill++) EmojiData(864, 0, 0xD83DDE2AU, 0x0U, 2); - new (toFill++) EmojiData(1080, 0, 0xD83DDE2BU, 0x0U, 2); - new (toFill++) EmojiData(360, 36, 0xD83DDE2CU, 0x0U, 2); - new (toFill++) EmojiData(828, 0, 0xD83DDE2DU, 0x0U, 2); - new (toFill++) EmojiData(324, 36, 0xD83DDE2EU, 0x0U, 2); - new (toFill++) EmojiData(468, 36, 0xD83DDE2FU, 0x0U, 2); - new (toFill++) EmojiData(936, 0, 0xD83DDE30U, 0x0U, 2); - new (toFill++) EmojiData(1152, 0, 0xD83DDE31U, 0x0U, 2); - new (toFill++) EmojiData(108, 36, 0xD83DDE32U, 0x0U, 2); - new (toFill++) EmojiData(504, 0, 0xD83DDE33U, 0x0U, 2); - new (toFill++) EmojiData(36, 36, 0xD83DDE34U, 0x0U, 2); - new (toFill++) EmojiData(72, 36, 0xD83DDE35U, 0x0U, 2); - new (toFill++) EmojiData(504, 36, 0xD83DDE36U, 0x0U, 2); - new (toFill++) EmojiData(1404, 0, 0xD83DDE37U, 0x0U, 2); - new (toFill++) EmojiData(1224, 36, 0xD83DDE38U, 0x0U, 2); - new (toFill++) EmojiData(0, 72, 0xD83DDE39U, 0x0U, 2); - new (toFill++) EmojiData(1188, 36, 0xD83DDE3AU, 0x0U, 2); - new (toFill++) EmojiData(1260, 36, 0xD83DDE3BU, 0x0U, 2); - new (toFill++) EmojiData(1332, 36, 0xD83DDE3CU, 0x0U, 2); - new (toFill++) EmojiData(1296, 36, 0xD83DDE3DU, 0x0U, 2); - new (toFill++) EmojiData(36, 72, 0xD83DDE3EU, 0x0U, 2); - new (toFill++) EmojiData(1404, 36, 0xD83DDE3FU, 0x0U, 2); - new (toFill++) EmojiData(1368, 36, 0xD83DDE40U, 0x0U, 2); - new (toFill++) EmojiData(504, 108, 0xD83DDE45U, 0x0U, 2); - new (toFill++) EmojiData(468, 108, 0xD83DDE46U, 0x0U, 2); - new (toFill++) EmojiData(828, 108, 0xD83DDE47U, 0x0U, 2); - new (toFill++) EmojiData(144, 72, 0xD83DDE48U, 0x0U, 2); - new (toFill++) EmojiData(180, 72, 0xD83DDE49U, 0x0U, 2); - new (toFill++) EmojiData(216, 72, 0xD83DDE4AU, 0x0U, 2); - new (toFill++) EmojiData(576, 108, 0xD83DDE4BU, 0x0U, 2); - new (toFill++) EmojiData(1368, 72, 0xD83DDE4CU, 0x0U, 2); - new (toFill++) EmojiData(792, 108, 0xD83DDE4DU, 0x0U, 2); - new (toFill++) EmojiData(756, 108, 0xD83DDE4EU, 0x0U, 2); - new (toFill++) EmojiData(1404, 72, 0xD83DDE4FU, 0x0U, 2); - new (toFill++) EmojiData(432, 504, 0xD83DDE80U, 0x0U, 2); - new (toFill++) EmojiData(540, 504, 0xD83DDE81U, 0x0U, 2); - new (toFill++) EmojiData(576, 504, 0xD83DDE82U, 0x0U, 2); - new (toFill++) EmojiData(972, 504, 0xD83DDE83U, 0x0U, 2); - new (toFill++) EmojiData(756, 504, 0xD83DDE84U, 0x0U, 2); - new (toFill++) EmojiData(792, 504, 0xD83DDE85U, 0x0U, 2); - new (toFill++) EmojiData(720, 504, 0xD83DDE86U, 0x0U, 2); - new (toFill++) EmojiData(864, 504, 0xD83DDE87U, 0x0U, 2); - new (toFill++) EmojiData(828, 504, 0xD83DDE88U, 0x0U, 2); - new (toFill++) EmojiData(648, 504, 0xD83DDE89U, 0x0U, 2); - new (toFill++) EmojiData(612, 504, 0xD83DDE8AU, 0x0U, 2); - new (toFill++) EmojiData(936, 504, 0xD83DDE8BU, 0x0U, 2); - new (toFill++) EmojiData(1044, 504, 0xD83DDE8CU, 0x0U, 2); - new (toFill++) EmojiData(1080, 504, 0xD83DDE8DU, 0x0U, 2); - new (toFill++) EmojiData(1008, 504, 0xD83DDE8EU, 0x0U, 2); - new (toFill++) EmojiData(360, 540, 0xD83DDE8FU, 0x0U, 2); - new (toFill++) EmojiData(108, 540, 0xD83DDE90U, 0x0U, 2); - new (toFill++) EmojiData(72, 540, 0xD83DDE91U, 0x0U, 2); - new (toFill++) EmojiData(36, 540, 0xD83DDE92U, 0x0U, 2); - new (toFill++) EmojiData(1404, 504, 0xD83DDE93U, 0x0U, 2); - new (toFill++) EmojiData(0, 540, 0xD83DDE94U, 0x0U, 2); - new (toFill++) EmojiData(1224, 504, 0xD83DDE95U, 0x0U, 2); - new (toFill++) EmojiData(1260, 504, 0xD83DDE96U, 0x0U, 2); - new (toFill++) EmojiData(1188, 504, 0xD83DDE97U, 0x0U, 2); - new (toFill++) EmojiData(1152, 504, 0xD83DDE98U, 0x0U, 2); - new (toFill++) EmojiData(1116, 504, 0xD83DDE99U, 0x0U, 2); - new (toFill++) EmojiData(1332, 504, 0xD83DDE9AU, 0x0U, 2); - new (toFill++) EmojiData(1296, 504, 0xD83DDE9BU, 0x0U, 2); - new (toFill++) EmojiData(288, 540, 0xD83DDE9CU, 0x0U, 2); - new (toFill++) EmojiData(900, 504, 0xD83DDE9DU, 0x0U, 2); - new (toFill++) EmojiData(684, 504, 0xD83DDE9EU, 0x0U, 2); - new (toFill++) EmojiData(216, 540, 0xD83DDE9FU, 0x0U, 2); - new (toFill++) EmojiData(252, 540, 0xD83DDEA0U, 0x0U, 2); - new (toFill++) EmojiData(180, 540, 0xD83DDEA1U, 0x0U, 2); - new (toFill++) EmojiData(252, 504, 0xD83DDEA2U, 0x0U, 2); - new (toFill++) EmojiData(360, 504, 0xD83DDEA3U, 0x0U, 2); - new (toFill++) EmojiData(324, 504, 0xD83DDEA4U, 0x0U, 2); - new (toFill++) EmojiData(468, 540, 0xD83DDEA5U, 0x0U, 2); - new (toFill++) EmojiData(432, 540, 0xD83DDEA6U, 0x0U, 2); - new (toFill++) EmojiData(540, 540, 0xD83DDEA7U, 0x0U, 2); - new (toFill++) EmojiData(1368, 504, 0xD83DDEA8U, 0x0U, 2); - new (toFill++) EmojiData(900, 540, 0xD83DDEA9U, 0x0U, 2); - new (toFill++) EmojiData(540, 324, 0xD83DDEAAU, 0x0U, 2); - new (toFill++) EmojiData(108, 648, 0xD83DDEABU, 0x0U, 2); - new (toFill++) EmojiData(576, 324, 0xD83DDEACU, 0x0U, 2); - new (toFill++) EmojiData(1008, 612, 0xD83DDEADU, 0x0U, 2); - new (toFill++) EmojiData(900, 612, 0xD83DDEAEU, 0x0U, 2); - new (toFill++) EmojiData(216, 648, 0xD83DDEAFU, 0x0U, 2); - new (toFill++) EmojiData(864, 612, 0xD83DDEB0U, 0x0U, 2); - new (toFill++) EmojiData(252, 648, 0xD83DDEB1U, 0x0U, 2); - new (toFill++) EmojiData(144, 540, 0xD83DDEB2U, 0x0U, 2); - new (toFill++) EmojiData(288, 648, 0xD83DDEB3U, 0x0U, 2); - new (toFill++) EmojiData(972, 396, 0xD83DDEB4U, 0x0U, 2); - new (toFill++) EmojiData(936, 396, 0xD83DDEB5U, 0x0U, 2); - new (toFill++) EmojiData(108, 108, 0xD83DDEB6U, 0x0U, 2); - new (toFill++) EmojiData(324, 648, 0xD83DDEB7U, 0x0U, 2); - new (toFill++) EmojiData(360, 648, 0xD83DDEB8U, 0x0U, 2); - new (toFill++) EmojiData(720, 612, 0xD83DDEB9U, 0x0U, 2); - new (toFill++) EmojiData(756, 612, 0xD83DDEBAU, 0x0U, 2); - new (toFill++) EmojiData(684, 612, 0xD83DDEBBU, 0x0U, 2); - new (toFill++) EmojiData(792, 612, 0xD83DDEBCU, 0x0U, 2); - new (toFill++) EmojiData(396, 324, 0xD83DDEBDU, 0x0U, 2); - new (toFill++) EmojiData(828, 612, 0xD83DDEBEU, 0x0U, 2); - new (toFill++) EmojiData(360, 324, 0xD83DDEBFU, 0x0U, 2); - new (toFill++) EmojiData(324, 324, 0xD83DDEC0U, 0x0U, 2); - new (toFill++) EmojiData(288, 324, 0xD83DDEC1U, 0x0U, 2); - new (toFill++) EmojiData(1188, 612, 0xD83DDEC2U, 0x0U, 2); - new (toFill++) EmojiData(1296, 612, 0xD83DDEC3U, 0x0U, 2); - new (toFill++) EmojiData(1224, 612, 0xD83DDEC4U, 0x0U, 2); - new (toFill++) EmojiData(1260, 612, 0xD83DDEC5U, 0x0U, 2); -} - -void initEmoji() { +int EmojiSizes[] = { 18, 22, 27, 36, 45 }, EIndex = -1, ESize = 0; +const char *EmojiNames[] = { ":/gui/art/emoji.webp", ":/gui/art/emoji_125x.webp", ":/gui/art/emoji_150x.webp", ":/gui/art/emoji_200x.webp", ":/gui/art/emoji_250x.webp" }, *EName = 0; +void emojiInit() { DBIScale emojiForScale = cRetina() ? dbisTwo : cScale(); switch (emojiForScale) { - case dbisOne: initEmojiOne(); break; - case dbisOneAndQuarter: initEmojiOneAndQuarter(); break; - case dbisOneAndHalf: initEmojiOneAndHalf(); break; - case dbisTwo: initEmojiTwo(); break; + case dbisOne: EIndex = 0; break; + case dbisOneAndQuarter: EIndex = 1; break; + case dbisOneAndHalf: EIndex = 2; break; + case dbisTwo: EIndex = 3; break; }; + ESize = EmojiSizes[EIndex]; + EName = EmojiNames[EIndex]; + + EmojiData *toFill = emojis = (EmojiData*)emojisData; + + new (toFill++) EmojiData(18, 27, 0xA9U, 0, 1, 0, 0); + new (toFill++) EmojiData(19, 27, 0xAEU, 0, 1, 0, 0); + new (toFill++) EmojiData(29, 27, 0x203CU, 0, 1, 0xFE0F, 0); + new (toFill++) EmojiData(30, 27, 0x2049U, 0, 1, 0xFE0F, 0); + new (toFill++) EmojiData(17, 27, 0x2122U, 0, 1, 0, 0); + new (toFill++) EmojiData(6, 27, 0x2139U, 0, 1, 0xFE0F, 0); + new (toFill++) EmojiData(21, 26, 0x2194U, 0, 1, 0xFE0F, 0); + new (toFill++) EmojiData(20, 26, 0x2195U, 0, 1, 0xFE0F, 0); + new (toFill++) EmojiData(19, 26, 0x2196U, 0, 1, 0xFE0F, 0); + new (toFill++) EmojiData(16, 26, 0x2197U, 0, 1, 0xFE0F, 0); + new (toFill++) EmojiData(17, 26, 0x2198U, 0, 1, 0xFE0F, 0); + new (toFill++) EmojiData(18, 26, 0x2199U, 0, 1, 0xFE0F, 0); + new (toFill++) EmojiData(24, 26, 0x21A9U, 0, 1, 0xFE0F, 0); + new (toFill++) EmojiData(23, 26, 0x21AAU, 0, 1, 0xFE0F, 0); + new (toFill++) EmojiData(35, 20, 0x231AU, 0, 1, 0xFE0F, 0); + new (toFill++) EmojiData(1, 21, 0x231BU, 0, 1, 0xFE0F, 0); + new (toFill++) EmojiData(8, 26, 0x23E9U, 0, 1, 0, 0); + new (toFill++) EmojiData(9, 26, 0x23EAU, 0, 1, 0, 0); + new (toFill++) EmojiData(10, 26, 0x23EBU, 0, 1, 0, 0); + new (toFill++) EmojiData(11, 26, 0x23ECU, 0, 1, 0, 0); + new (toFill++) EmojiData(39, 20, 0x23F0U, 0, 1, 0, 0); + new (toFill++) EmojiData(0, 21, 0x23F3U, 0, 1, 0, 0); + new (toFill++) EmojiData(0, 28, 0x24C2U, 0, 1, 0xFE0F, 0); + new (toFill++) EmojiData(26, 28, 0x25AAU, 0, 1, 0xFE0F, 0); + new (toFill++) EmojiData(27, 28, 0x25ABU, 0, 1, 0xFE0F, 0); + new (toFill++) EmojiData(4, 26, 0x25B6U, 0, 1, 0xFE0F, 0); + new (toFill++) EmojiData(5, 26, 0x25C0U, 0, 1, 0xFE0F, 0); + new (toFill++) EmojiData(31, 28, 0x25FBU, 0, 1, 0xFE0F, 0); + new (toFill++) EmojiData(30, 28, 0x25FCU, 0, 1, 0xFE0F, 0); + new (toFill++) EmojiData(33, 28, 0x25FDU, 0, 1, 0xFE0F, 0); + new (toFill++) EmojiData(32, 28, 0x25FEU, 0, 1, 0xFE0F, 0); + new (toFill++) EmojiData(37, 11, 0x2600U, 0, 1, 0xFE0F, 0); + new (toFill++) EmojiData(39, 11, 0x2601U, 0, 1, 0xFE0F, 0); + new (toFill++) EmojiData(9, 21, 0x260EU, 0, 1, 0xFE0F, 0); + new (toFill++) EmojiData(14, 28, 0x2611U, 0, 1, 0xFE0F, 0); + new (toFill++) EmojiData(2, 12, 0x2614U, 0, 1, 0xFE0F, 0); + new (toFill++) EmojiData(3, 14, 0x2615U, 0, 1, 0xFE0F, 0); + new (toFill++) EmojiData(30, 7, 0x261DU, 0, 1, 0xFE0F, 0xFFFF0355U); + new (toFill++) EmojiData(12, 0, 0x263AU, 0, 1, 0xFE0F, 0); + new (toFill++) EmojiData(24, 25, 0x2648U, 0, 1, 0xFE0F, 0); + new (toFill++) EmojiData(25, 25, 0x2649U, 0, 1, 0xFE0F, 0); + new (toFill++) EmojiData(26, 25, 0x264AU, 0, 1, 0xFE0F, 0); + new (toFill++) EmojiData(27, 25, 0x264BU, 0, 1, 0xFE0F, 0); + new (toFill++) EmojiData(28, 25, 0x264CU, 0, 1, 0xFE0F, 0); + new (toFill++) EmojiData(29, 25, 0x264DU, 0, 1, 0xFE0F, 0); + new (toFill++) EmojiData(30, 25, 0x264EU, 0, 1, 0xFE0F, 0); + new (toFill++) EmojiData(31, 25, 0x264FU, 0, 1, 0xFE0F, 0); + new (toFill++) EmojiData(32, 25, 0x2650U, 0, 1, 0xFE0F, 0); + new (toFill++) EmojiData(33, 25, 0x2651U, 0, 1, 0xFE0F, 0); + new (toFill++) EmojiData(34, 25, 0x2652U, 0, 1, 0xFE0F, 0); + new (toFill++) EmojiData(35, 25, 0x2653U, 0, 1, 0xFE0F, 0); + new (toFill++) EmojiData(10, 28, 0x2660U, 0, 1, 0xFE0F, 0); + new (toFill++) EmojiData(11, 28, 0x2663U, 0, 1, 0xFE0F, 0); + new (toFill++) EmojiData(12, 28, 0x2665U, 0, 1, 0xFE0F, 0); + new (toFill++) EmojiData(13, 28, 0x2666U, 0, 1, 0xFE0F, 0); + new (toFill++) EmojiData(6, 28, 0x2668U, 0, 1, 0xFE0F, 0); + new (toFill++) EmojiData(7, 28, 0x267BU, 0, 1, 0xFE0F, 0); + new (toFill++) EmojiData(0, 26, 0x267FU, 0, 1, 0xFE0F, 0); + new (toFill++) EmojiData(32, 18, 0x2693U, 0, 1, 0xFE0F, 0); + new (toFill++) EmojiData(5, 28, 0x26A0U, 0, 1, 0xFE0F, 0); + new (toFill++) EmojiData(34, 11, 0x26A1U, 0, 1, 0xFE0F, 0); + new (toFill++) EmojiData(15, 28, 0x26AAU, 0, 1, 0xFE0F, 0); + new (toFill++) EmojiData(16, 28, 0x26ABU, 0, 1, 0xFE0F, 0); + new (toFill++) EmojiData(35, 16, 0x26BDU, 0, 1, 0xFE0F, 0); + new (toFill++) EmojiData(38, 16, 0x26BEU, 0, 1, 0xFE0F, 0); + new (toFill++) EmojiData(14, 16, 0x26C4U, 0, 1, 0xFE0F, 0); + new (toFill++) EmojiData(38, 11, 0x26C5U, 0, 1, 0xFE0F, 0); + new (toFill++) EmojiData(1, 28, 0x26CEU, 0, 1, 0, 0); + new (toFill++) EmojiData(13, 24, 0x26D4U, 0, 1, 0xFE0F, 0); + new (toFill++) EmojiData(30, 19, 0x26EAU, 0, 1, 0xFE0F, 0); + new (toFill++) EmojiData(11, 19, 0x26F2U, 0, 1, 0xFE0F, 0); + new (toFill++) EmojiData(1, 17, 0x26F3U, 0, 1, 0xFE0F, 0); + new (toFill++) EmojiData(35, 18, 0x26F5U, 0, 1, 0xFE0F, 0); + new (toFill++) EmojiData(33, 16, 0x26FAU, 0, 1, 0xFE0F, 0); + new (toFill++) EmojiData(24, 18, 0x26FDU, 0, 1, 0xFE0F, 0); + new (toFill++) EmojiData(24, 23, 0x2702U, 0, 1, 0xFE0F, 0); + new (toFill++) EmojiData(3, 25, 0x2705U, 0, 1, 0, 0); + new (toFill++) EmojiData(30, 18, 0x2708U, 0, 1, 0xFE0F, 0); + new (toFill++) EmojiData(26, 22, 0x2709U, 0, 1, 0xFE0F, 0); + new (toFill++) EmojiData(38, 8, 0x270AU, 0, 1, 0, 0xFFFF035AU); + new (toFill++) EmojiData(4, 9, 0x270BU, 0, 1, 0, 0xFFFF035FU); + new (toFill++) EmojiData(26, 8, 0x270CU, 0, 1, 0xFE0F, 0xFFFF0364U); + new (toFill++) EmojiData(32, 23, 0x270FU, 0, 1, 0xFE0F, 0); + new (toFill++) EmojiData(31, 23, 0x2712U, 0, 1, 0xFE0F, 0); + new (toFill++) EmojiData(15, 27, 0x2714U, 0, 1, 0xFE0F, 0); + new (toFill++) EmojiData(14, 27, 0x2716U, 0, 1, 0xFE0F, 0); + new (toFill++) EmojiData(25, 14, 0x2728U, 0, 1, 0, 0); + new (toFill++) EmojiData(1, 25, 0x2733U, 0, 1, 0xFE0F, 0); + new (toFill++) EmojiData(4, 25, 0x2734U, 0, 1, 0xFE0F, 0); + new (toFill++) EmojiData(4, 12, 0x2744U, 0, 1, 0xFE0F, 0); + new (toFill++) EmojiData(0, 25, 0x2747U, 0, 1, 0xFE0F, 0); + new (toFill++) EmojiData(31, 27, 0x274CU, 0, 1, 0, 0); + new (toFill++) EmojiData(2, 25, 0x274EU, 0, 1, 0, 0); + new (toFill++) EmojiData(26, 27, 0x2753U, 0, 1, 0, 0); + new (toFill++) EmojiData(28, 27, 0x2754U, 0, 1, 0, 0); + new (toFill++) EmojiData(27, 27, 0x2755U, 0, 1, 0, 0); + new (toFill++) EmojiData(25, 27, 0x2757U, 0, 1, 0xFE0F, 0); + new (toFill++) EmojiData(35, 14, 0x2764U, 0, 1, 0xFE0F, 0); + new (toFill++) EmojiData(10, 27, 0x2795U, 0, 1, 0, 0); + new (toFill++) EmojiData(11, 27, 0x2796U, 0, 1, 0, 0); + new (toFill++) EmojiData(13, 27, 0x2797U, 0, 1, 0, 0); + new (toFill++) EmojiData(12, 26, 0x27A1U, 0, 1, 0xFE0F, 0); + new (toFill++) EmojiData(22, 27, 0x27B0U, 0, 1, 0, 0); + new (toFill++) EmojiData(23, 27, 0x27BFU, 0, 1, 0, 0); + new (toFill++) EmojiData(25, 26, 0x2934U, 0, 1, 0xFE0F, 0); + new (toFill++) EmojiData(26, 26, 0x2935U, 0, 1, 0xFE0F, 0); + new (toFill++) EmojiData(13, 26, 0x2B05U, 0, 1, 0xFE0F, 0); + new (toFill++) EmojiData(14, 26, 0x2B06U, 0, 1, 0xFE0F, 0); + new (toFill++) EmojiData(15, 26, 0x2B07U, 0, 1, 0xFE0F, 0); + new (toFill++) EmojiData(28, 28, 0x2B1BU, 0, 1, 0xFE0F, 0); + new (toFill++) EmojiData(29, 28, 0x2B1CU, 0, 1, 0xFE0F, 0); + new (toFill++) EmojiData(6, 12, 0x2B50U, 0, 1, 0xFE0F, 0); + new (toFill++) EmojiData(32, 27, 0x2B55U, 0, 1, 0xFE0F, 0); + new (toFill++) EmojiData(12, 27, 0x3030U, 0, 1, 0, 0); + new (toFill++) EmojiData(24, 27, 0x303DU, 0, 1, 0xFE0F, 0); + new (toFill++) EmojiData(25, 24, 0x3297U, 0, 1, 0xFE0F, 0); + new (toFill++) EmojiData(24, 24, 0x3299U, 0, 1, 0xFE0F, 0); + new (toFill++) EmojiData(30, 26, 0x2320E3U, 0, 2, 0, 0); + new (toFill++) EmojiData(31, 26, 0x3020E3U, 0, 2, 0, 0); + new (toFill++) EmojiData(32, 26, 0x3120E3U, 0, 2, 0, 0); + new (toFill++) EmojiData(33, 26, 0x3220E3U, 0, 2, 0, 0); + new (toFill++) EmojiData(34, 26, 0x3320E3U, 0, 2, 0, 0); + new (toFill++) EmojiData(35, 26, 0x3420E3U, 0, 2, 0, 0); + new (toFill++) EmojiData(36, 26, 0x3520E3U, 0, 2, 0, 0); + new (toFill++) EmojiData(37, 26, 0x3620E3U, 0, 2, 0, 0); + new (toFill++) EmojiData(38, 26, 0x3720E3U, 0, 2, 0, 0); + new (toFill++) EmojiData(39, 26, 0x3820E3U, 0, 2, 0, 0); + new (toFill++) EmojiData(0, 27, 0x3920E3U, 0, 2, 0, 0); + new (toFill++) EmojiData(29, 17, 0xD83CDC04U, 0, 2, 0xFE0F, 0); + new (toFill++) EmojiData(28, 17, 0xD83CDCCFU, 0, 2, 0, 0); + new (toFill++) EmojiData(8, 25, 0xD83CDD70U, 0, 2, 0, 0); + new (toFill++) EmojiData(9, 25, 0xD83CDD71U, 0, 2, 0, 0); + new (toFill++) EmojiData(12, 25, 0xD83CDD7EU, 0, 2, 0, 0); + new (toFill++) EmojiData(15, 25, 0xD83CDD7FU, 0, 2, 0xFE0F, 0); + new (toFill++) EmojiData(10, 25, 0xD83CDD8EU, 0, 2, 0, 0); + new (toFill++) EmojiData(11, 25, 0xD83CDD91U, 0, 2, 0, 0); + new (toFill++) EmojiData(17, 25, 0xD83CDD92U, 0, 2, 0, 0); + new (toFill++) EmojiData(18, 25, 0xD83CDD93U, 0, 2, 0, 0); + new (toFill++) EmojiData(14, 25, 0xD83CDD94U, 0, 2, 0, 0); + new (toFill++) EmojiData(19, 25, 0xD83CDD95U, 0, 2, 0, 0); + new (toFill++) EmojiData(20, 25, 0xD83CDD96U, 0, 2, 0, 0); + new (toFill++) EmojiData(21, 25, 0xD83CDD97U, 0, 2, 0, 0); + new (toFill++) EmojiData(13, 25, 0xD83CDD98U, 0, 2, 0, 0); + new (toFill++) EmojiData(22, 25, 0xD83CDD99U, 0, 2, 0, 0); + new (toFill++) EmojiData(7, 25, 0xD83CDD9AU, 0, 2, 0, 0); + new (toFill++) EmojiData(37, 24, 0xD83CDE01U, 0, 2, 0, 0); + new (toFill++) EmojiData(36, 24, 0xD83CDE02U, 0, 2, 0, 0); + new (toFill++) EmojiData(30, 24, 0xD83CDE1AU, 0, 2, 0xFE0F, 0); + new (toFill++) EmojiData(38, 24, 0xD83CDE2FU, 0, 2, 0xFE0F, 0); + new (toFill++) EmojiData(28, 24, 0xD83CDE32U, 0, 2, 0, 0); + new (toFill++) EmojiData(35, 24, 0xD83CDE33U, 0, 2, 0, 0); + new (toFill++) EmojiData(26, 24, 0xD83CDE34U, 0, 2, 0, 0); + new (toFill++) EmojiData(27, 24, 0xD83CDE35U, 0, 2, 0, 0); + new (toFill++) EmojiData(29, 24, 0xD83CDE36U, 0, 2, 0, 0); + new (toFill++) EmojiData(33, 24, 0xD83CDE37U, 0, 2, 0, 0); + new (toFill++) EmojiData(31, 24, 0xD83CDE38U, 0, 2, 0, 0); + new (toFill++) EmojiData(34, 24, 0xD83CDE39U, 0, 2, 0, 0); + new (toFill++) EmojiData(32, 24, 0xD83CDE3AU, 0, 2, 0, 0); + new (toFill++) EmojiData(22, 24, 0xD83CDE50U, 0, 2, 0, 0); + new (toFill++) EmojiData(21, 24, 0xD83CDE51U, 0, 2, 0, 0); + new (toFill++) EmojiData(39, 27, 0xD83CDF00U, 0, 2, 0, 0); + new (toFill++) EmojiData(9, 19, 0xD83CDF01U, 0, 2, 0, 0); + new (toFill++) EmojiData(25, 21, 0xD83CDF02U, 0, 2, 0, 0); + new (toFill++) EmojiData(16, 19, 0xD83CDF03U, 0, 2, 0, 0); + new (toFill++) EmojiData(8, 12, 0xD83CDF04U, 0, 2, 0, 0); + new (toFill++) EmojiData(9, 12, 0xD83CDF05U, 0, 2, 0, 0); + new (toFill++) EmojiData(15, 19, 0xD83CDF06U, 0, 2, 0, 0); + new (toFill++) EmojiData(14, 19, 0xD83CDF07U, 0, 2, 0, 0); + new (toFill++) EmojiData(10, 12, 0xD83CDF08U, 0, 2, 0, 0); + new (toFill++) EmojiData(17, 19, 0xD83CDF09U, 0, 2, 0, 0); + new (toFill++) EmojiData(11, 12, 0xD83CDF0AU, 0, 2, 0, 0); + new (toFill++) EmojiData(12, 12, 0xD83CDF0BU, 0, 2, 0, 0); + new (toFill++) EmojiData(13, 12, 0xD83CDF0CU, 0, 2, 0, 0); + new (toFill++) EmojiData(17, 12, 0xD83CDF0DU, 0, 2, 0, 0); + new (toFill++) EmojiData(18, 12, 0xD83CDF0EU, 0, 2, 0, 0); + new (toFill++) EmojiData(19, 12, 0xD83CDF0FU, 0, 2, 0, 0); + new (toFill++) EmojiData(16, 12, 0xD83CDF10U, 0, 2, 0, 0); + new (toFill++) EmojiData(20, 12, 0xD83CDF11U, 0, 2, 0, 0); + new (toFill++) EmojiData(21, 12, 0xD83CDF12U, 0, 2, 0, 0); + new (toFill++) EmojiData(22, 12, 0xD83CDF13U, 0, 2, 0, 0); + new (toFill++) EmojiData(23, 12, 0xD83CDF14U, 0, 2, 0, 0); + new (toFill++) EmojiData(24, 12, 0xD83CDF15U, 0, 2, 0, 0); + new (toFill++) EmojiData(25, 12, 0xD83CDF16U, 0, 2, 0, 0); + new (toFill++) EmojiData(26, 12, 0xD83CDF17U, 0, 2, 0, 0); + new (toFill++) EmojiData(27, 12, 0xD83CDF18U, 0, 2, 0, 0); + new (toFill++) EmojiData(36, 11, 0xD83CDF19U, 0, 2, 0, 0); + new (toFill++) EmojiData(28, 12, 0xD83CDF1AU, 0, 2, 0, 0); + new (toFill++) EmojiData(30, 12, 0xD83CDF1BU, 0, 2, 0, 0); + new (toFill++) EmojiData(31, 12, 0xD83CDF1CU, 0, 2, 0, 0); + new (toFill++) EmojiData(29, 12, 0xD83CDF1DU, 0, 2, 0, 0); + new (toFill++) EmojiData(32, 12, 0xD83CDF1EU, 0, 2, 0, 0); + new (toFill++) EmojiData(5, 12, 0xD83CDF1FU, 0, 2, 0, 0); + new (toFill++) EmojiData(7, 12, 0xD83CDF20U, 0, 2, 0, 0); + new (toFill++) EmojiData(7, 10, 0xD83CDF30U, 0, 2, 0, 0); + new (toFill++) EmojiData(28, 9, 0xD83CDF31U, 0, 2, 0, 0); + new (toFill++) EmojiData(29, 9, 0xD83CDF32U, 0, 2, 0, 0); + new (toFill++) EmojiData(30, 9, 0xD83CDF33U, 0, 2, 0, 0); + new (toFill++) EmojiData(31, 9, 0xD83CDF34U, 0, 2, 0, 0); + new (toFill++) EmojiData(32, 9, 0xD83CDF35U, 0, 2, 0, 0); + new (toFill++) EmojiData(33, 9, 0xD83CDF37U, 0, 2, 0, 0); + new (toFill++) EmojiData(34, 9, 0xD83CDF38U, 0, 2, 0, 0); + new (toFill++) EmojiData(35, 9, 0xD83CDF39U, 0, 2, 0, 0); + new (toFill++) EmojiData(36, 9, 0xD83CDF3AU, 0, 2, 0, 0); + new (toFill++) EmojiData(37, 9, 0xD83CDF3BU, 0, 2, 0, 0); + new (toFill++) EmojiData(38, 9, 0xD83CDF3CU, 0, 2, 0, 0); + new (toFill++) EmojiData(35, 12, 0xD83CDF3DU, 0, 2, 0, 0); + new (toFill++) EmojiData(0, 10, 0xD83CDF3EU, 0, 2, 0, 0); + new (toFill++) EmojiData(1, 10, 0xD83CDF3FU, 0, 2, 0, 0); + new (toFill++) EmojiData(2, 10, 0xD83CDF40U, 0, 2, 0, 0); + new (toFill++) EmojiData(3, 10, 0xD83CDF41U, 0, 2, 0, 0); + new (toFill++) EmojiData(4, 10, 0xD83CDF42U, 0, 2, 0, 0); + new (toFill++) EmojiData(5, 10, 0xD83CDF43U, 0, 2, 0, 0); + new (toFill++) EmojiData(6, 10, 0xD83CDF44U, 0, 2, 0, 0); + new (toFill++) EmojiData(33, 12, 0xD83CDF45U, 0, 2, 0, 0); + new (toFill++) EmojiData(34, 12, 0xD83CDF46U, 0, 2, 0, 0); + new (toFill++) EmojiData(37, 12, 0xD83CDF47U, 0, 2, 0, 0); + new (toFill++) EmojiData(38, 12, 0xD83CDF48U, 0, 2, 0, 0); + new (toFill++) EmojiData(39, 12, 0xD83CDF49U, 0, 2, 0, 0); + new (toFill++) EmojiData(0, 13, 0xD83CDF4AU, 0, 2, 0, 0); + new (toFill++) EmojiData(1, 13, 0xD83CDF4BU, 0, 2, 0, 0); + new (toFill++) EmojiData(2, 13, 0xD83CDF4CU, 0, 2, 0, 0); + new (toFill++) EmojiData(3, 13, 0xD83CDF4DU, 0, 2, 0, 0); + new (toFill++) EmojiData(4, 13, 0xD83CDF4EU, 0, 2, 0, 0); + new (toFill++) EmojiData(5, 13, 0xD83CDF4FU, 0, 2, 0, 0); + new (toFill++) EmojiData(6, 13, 0xD83CDF50U, 0, 2, 0, 0); + new (toFill++) EmojiData(7, 13, 0xD83CDF51U, 0, 2, 0, 0); + new (toFill++) EmojiData(8, 13, 0xD83CDF52U, 0, 2, 0, 0); + new (toFill++) EmojiData(9, 13, 0xD83CDF53U, 0, 2, 0, 0); + new (toFill++) EmojiData(10, 13, 0xD83CDF54U, 0, 2, 0, 0); + new (toFill++) EmojiData(11, 13, 0xD83CDF55U, 0, 2, 0, 0); + new (toFill++) EmojiData(12, 13, 0xD83CDF56U, 0, 2, 0, 0); + new (toFill++) EmojiData(13, 13, 0xD83CDF57U, 0, 2, 0, 0); + new (toFill++) EmojiData(14, 13, 0xD83CDF58U, 0, 2, 0, 0); + new (toFill++) EmojiData(15, 13, 0xD83CDF59U, 0, 2, 0, 0); + new (toFill++) EmojiData(16, 13, 0xD83CDF5AU, 0, 2, 0, 0); + new (toFill++) EmojiData(17, 13, 0xD83CDF5BU, 0, 2, 0, 0); + new (toFill++) EmojiData(18, 13, 0xD83CDF5CU, 0, 2, 0, 0); + new (toFill++) EmojiData(19, 13, 0xD83CDF5DU, 0, 2, 0, 0); + new (toFill++) EmojiData(20, 13, 0xD83CDF5EU, 0, 2, 0, 0); + new (toFill++) EmojiData(21, 13, 0xD83CDF5FU, 0, 2, 0, 0); + new (toFill++) EmojiData(36, 12, 0xD83CDF60U, 0, 2, 0, 0); + new (toFill++) EmojiData(22, 13, 0xD83CDF61U, 0, 2, 0, 0); + new (toFill++) EmojiData(23, 13, 0xD83CDF62U, 0, 2, 0, 0); + new (toFill++) EmojiData(24, 13, 0xD83CDF63U, 0, 2, 0, 0); + new (toFill++) EmojiData(25, 13, 0xD83CDF64U, 0, 2, 0, 0); + new (toFill++) EmojiData(26, 13, 0xD83CDF65U, 0, 2, 0, 0); + new (toFill++) EmojiData(27, 13, 0xD83CDF66U, 0, 2, 0, 0); + new (toFill++) EmojiData(28, 13, 0xD83CDF67U, 0, 2, 0, 0); + new (toFill++) EmojiData(29, 13, 0xD83CDF68U, 0, 2, 0, 0); + new (toFill++) EmojiData(30, 13, 0xD83CDF69U, 0, 2, 0, 0); + new (toFill++) EmojiData(31, 13, 0xD83CDF6AU, 0, 2, 0, 0); + new (toFill++) EmojiData(32, 13, 0xD83CDF6BU, 0, 2, 0, 0); + new (toFill++) EmojiData(33, 13, 0xD83CDF6CU, 0, 2, 0, 0); + new (toFill++) EmojiData(34, 13, 0xD83CDF6DU, 0, 2, 0, 0); + new (toFill++) EmojiData(35, 13, 0xD83CDF6EU, 0, 2, 0, 0); + new (toFill++) EmojiData(36, 13, 0xD83CDF6FU, 0, 2, 0, 0); + new (toFill++) EmojiData(37, 13, 0xD83CDF70U, 0, 2, 0, 0); + new (toFill++) EmojiData(38, 13, 0xD83CDF71U, 0, 2, 0, 0); + new (toFill++) EmojiData(39, 13, 0xD83CDF72U, 0, 2, 0, 0); + new (toFill++) EmojiData(0, 14, 0xD83CDF73U, 0, 2, 0, 0); + new (toFill++) EmojiData(1, 14, 0xD83CDF74U, 0, 2, 0, 0); + new (toFill++) EmojiData(2, 14, 0xD83CDF75U, 0, 2, 0, 0); + new (toFill++) EmojiData(4, 14, 0xD83CDF76U, 0, 2, 0, 0); + new (toFill++) EmojiData(5, 14, 0xD83CDF77U, 0, 2, 0, 0); + new (toFill++) EmojiData(6, 14, 0xD83CDF78U, 0, 2, 0, 0); + new (toFill++) EmojiData(7, 14, 0xD83CDF79U, 0, 2, 0, 0); + new (toFill++) EmojiData(8, 14, 0xD83CDF7AU, 0, 2, 0, 0); + new (toFill++) EmojiData(9, 14, 0xD83CDF7BU, 0, 2, 0, 0); + new (toFill++) EmojiData(10, 14, 0xD83CDF7CU, 0, 2, 0, 0); + new (toFill++) EmojiData(11, 14, 0xD83CDF80U, 0, 2, 0, 0); + new (toFill++) EmojiData(12, 14, 0xD83CDF81U, 0, 2, 0, 0); + new (toFill++) EmojiData(13, 14, 0xD83CDF82U, 0, 2, 0, 0); + new (toFill++) EmojiData(14, 14, 0xD83CDF83U, 0, 2, 0, 0); + new (toFill++) EmojiData(15, 14, 0xD83CDF84U, 0, 2, 0, 0); + new (toFill++) EmojiData(25, 4, 0xD83CDF85U, 0, 2, 0, 0xFFFF0393U); + new (toFill++) EmojiData(19, 14, 0xD83CDF86U, 0, 2, 0, 0); + new (toFill++) EmojiData(20, 14, 0xD83CDF87U, 0, 2, 0, 0); + new (toFill++) EmojiData(23, 14, 0xD83CDF88U, 0, 2, 0, 0); + new (toFill++) EmojiData(21, 14, 0xD83CDF89U, 0, 2, 0, 0); + new (toFill++) EmojiData(22, 14, 0xD83CDF8AU, 0, 2, 0, 0); + new (toFill++) EmojiData(16, 14, 0xD83CDF8BU, 0, 2, 0, 0); + new (toFill++) EmojiData(32, 14, 0xD83CDF8CU, 0, 2, 0, 0); + new (toFill++) EmojiData(17, 14, 0xD83CDF8DU, 0, 2, 0, 0); + new (toFill++) EmojiData(29, 14, 0xD83CDF8EU, 0, 2, 0, 0); + new (toFill++) EmojiData(30, 14, 0xD83CDF8FU, 0, 2, 0, 0); + new (toFill++) EmojiData(31, 14, 0xD83CDF90U, 0, 2, 0, 0); + new (toFill++) EmojiData(18, 14, 0xD83CDF91U, 0, 2, 0, 0); + new (toFill++) EmojiData(30, 21, 0xD83CDF92U, 0, 2, 0, 0); + new (toFill++) EmojiData(27, 14, 0xD83CDF93U, 0, 2, 0, 0); + new (toFill++) EmojiData(30, 17, 0xD83CDFA0U, 0, 2, 0, 0); + new (toFill++) EmojiData(31, 17, 0xD83CDFA1U, 0, 2, 0, 0); + new (toFill++) EmojiData(32, 17, 0xD83CDFA2U, 0, 2, 0, 0); + new (toFill++) EmojiData(34, 16, 0xD83CDFA3U, 0, 2, 0, 0); + new (toFill++) EmojiData(14, 17, 0xD83CDFA4U, 0, 2, 0, 0); + new (toFill++) EmojiData(4, 21, 0xD83CDFA5U, 0, 2, 0, 0); + new (toFill++) EmojiData(8, 27, 0xD83CDFA6U, 0, 2, 0, 0); + new (toFill++) EmojiData(13, 17, 0xD83CDFA7U, 0, 2, 0, 0); + new (toFill++) EmojiData(20, 17, 0xD83CDFA8U, 0, 2, 0, 0); + new (toFill++) EmojiData(17, 17, 0xD83CDFA9U, 0, 2, 0, 0); + new (toFill++) EmojiData(18, 17, 0xD83CDFAAU, 0, 2, 0, 0); + new (toFill++) EmojiData(16, 17, 0xD83CDFABU, 0, 2, 0, 0); + new (toFill++) EmojiData(19, 17, 0xD83CDFACU, 0, 2, 0, 0); + new (toFill++) EmojiData(15, 17, 0xD83CDFADU, 0, 2, 0, 0); + new (toFill++) EmojiData(26, 17, 0xD83CDFAEU, 0, 2, 0, 0); + new (toFill++) EmojiData(21, 17, 0xD83CDFAFU, 0, 2, 0, 0); + new (toFill++) EmojiData(24, 17, 0xD83CDFB0U, 0, 2, 0, 0); + new (toFill++) EmojiData(22, 17, 0xD83CDFB1U, 0, 2, 0, 0); + new (toFill++) EmojiData(25, 17, 0xD83CDFB2U, 0, 2, 0, 0); + new (toFill++) EmojiData(23, 17, 0xD83CDFB3U, 0, 2, 0, 0); + new (toFill++) EmojiData(27, 17, 0xD83CDFB4U, 0, 2, 0, 0); + new (toFill++) EmojiData(10, 17, 0xD83CDFB5U, 0, 2, 0, 0); + new (toFill++) EmojiData(11, 17, 0xD83CDFB6U, 0, 2, 0, 0); + new (toFill++) EmojiData(8, 17, 0xD83CDFB7U, 0, 2, 0, 0); + new (toFill++) EmojiData(6, 17, 0xD83CDFB8U, 0, 2, 0, 0); + new (toFill++) EmojiData(5, 17, 0xD83CDFB9U, 0, 2, 0, 0); + new (toFill++) EmojiData(9, 17, 0xD83CDFBAU, 0, 2, 0, 0); + new (toFill++) EmojiData(7, 17, 0xD83CDFBBU, 0, 2, 0, 0); + new (toFill++) EmojiData(12, 17, 0xD83CDFBCU, 0, 2, 0, 0); + new (toFill++) EmojiData(3, 17, 0xD83CDFBDU, 0, 2, 0, 0); + new (toFill++) EmojiData(39, 16, 0xD83CDFBEU, 0, 2, 0, 0); + new (toFill++) EmojiData(13, 16, 0xD83CDFBFU, 0, 2, 0, 0); + new (toFill++) EmojiData(36, 16, 0xD83CDFC0U, 0, 2, 0, 0); + new (toFill++) EmojiData(4, 17, 0xD83CDFC1U, 0, 2, 0, 0); + new (toFill++) EmojiData(12, 16, 0xD83CDFC2U, 0, 2, 0, 0); + new (toFill++) EmojiData(10, 15, 0xD83CDFC3U, 0, 2, 0, 0xFFFF0398U); + new (toFill++) EmojiData(0, 16, 0xD83CDFC4U, 0, 2, 0, 0xFFFF039DU); + new (toFill++) EmojiData(2, 17, 0xD83CDFC6U, 0, 2, 0, 0); + new (toFill++) EmojiData(27, 16, 0xD83CDFC7U, 0, 2, 0, 0xFFFF03A2U); + new (toFill++) EmojiData(37, 16, 0xD83CDFC8U, 0, 2, 0, 0); + new (toFill++) EmojiData(0, 17, 0xD83CDFC9U, 0, 2, 0, 0); + new (toFill++) EmojiData(34, 15, 0xD83CDFCAU, 0, 2, 0, 0xFFFF03A7U); + new (toFill++) EmojiData(18, 19, 0xD83CDFE0U, 0, 2, 0, 0); + new (toFill++) EmojiData(19, 19, 0xD83CDFE1U, 0, 2, 0, 0); + new (toFill++) EmojiData(20, 19, 0xD83CDFE2U, 0, 2, 0, 0); + new (toFill++) EmojiData(23, 19, 0xD83CDFE3U, 0, 2, 0, 0); + new (toFill++) EmojiData(24, 19, 0xD83CDFE4U, 0, 2, 0, 0); + new (toFill++) EmojiData(25, 19, 0xD83CDFE5U, 0, 2, 0, 0); + new (toFill++) EmojiData(26, 19, 0xD83CDFE6U, 0, 2, 0, 0); + new (toFill++) EmojiData(23, 25, 0xD83CDFE7U, 0, 2, 0, 0); + new (toFill++) EmojiData(27, 19, 0xD83CDFE8U, 0, 2, 0, 0); + new (toFill++) EmojiData(28, 19, 0xD83CDFE9U, 0, 2, 0, 0); + new (toFill++) EmojiData(31, 19, 0xD83CDFEAU, 0, 2, 0, 0); + new (toFill++) EmojiData(32, 19, 0xD83CDFEBU, 0, 2, 0, 0); + new (toFill++) EmojiData(21, 19, 0xD83CDFECU, 0, 2, 0, 0); + new (toFill++) EmojiData(22, 19, 0xD83CDFEDU, 0, 2, 0, 0); + new (toFill++) EmojiData(33, 14, 0xD83CDFEEU, 0, 2, 0, 0); + new (toFill++) EmojiData(13, 19, 0xD83CDFEFU, 0, 2, 0, 0); + new (toFill++) EmojiData(12, 19, 0xD83CDFF0U, 0, 2, 0, 0); + new (toFill++) EmojiData(8, 10, 0xD83DDC00U, 0, 2, 0, 0); + new (toFill++) EmojiData(9, 10, 0xD83DDC01U, 0, 2, 0, 0); + new (toFill++) EmojiData(12, 10, 0xD83DDC02U, 0, 2, 0, 0); + new (toFill++) EmojiData(13, 10, 0xD83DDC03U, 0, 2, 0, 0); + new (toFill++) EmojiData(14, 10, 0xD83DDC04U, 0, 2, 0, 0); + new (toFill++) EmojiData(16, 10, 0xD83DDC05U, 0, 2, 0, 0); + new (toFill++) EmojiData(17, 10, 0xD83DDC06U, 0, 2, 0, 0); + new (toFill++) EmojiData(19, 10, 0xD83DDC07U, 0, 2, 0, 0); + new (toFill++) EmojiData(21, 10, 0xD83DDC08U, 0, 2, 0, 0); + new (toFill++) EmojiData(14, 11, 0xD83DDC09U, 0, 2, 0, 0); + new (toFill++) EmojiData(16, 11, 0xD83DDC0AU, 0, 2, 0, 0); + new (toFill++) EmojiData(20, 11, 0xD83DDC0BU, 0, 2, 0, 0); + new (toFill++) EmojiData(28, 11, 0xD83DDC0CU, 0, 2, 0, 0); + new (toFill++) EmojiData(17, 11, 0xD83DDC0DU, 0, 2, 0, 0); + new (toFill++) EmojiData(23, 10, 0xD83DDC0EU, 0, 2, 0, 0); + new (toFill++) EmojiData(25, 10, 0xD83DDC0FU, 0, 2, 0, 0); + new (toFill++) EmojiData(27, 10, 0xD83DDC10U, 0, 2, 0, 0); + new (toFill++) EmojiData(26, 10, 0xD83DDC11U, 0, 2, 0, 0); + new (toFill++) EmojiData(13, 11, 0xD83DDC12U, 0, 2, 0, 0); + new (toFill++) EmojiData(28, 10, 0xD83DDC13U, 0, 2, 0, 0); + new (toFill++) EmojiData(29, 10, 0xD83DDC14U, 0, 2, 0, 0); + new (toFill++) EmojiData(2, 11, 0xD83DDC15U, 0, 2, 0, 0); + new (toFill++) EmojiData(39, 10, 0xD83DDC16U, 0, 2, 0, 0); + new (toFill++) EmojiData(38, 10, 0xD83DDC17U, 0, 2, 0, 0); + new (toFill++) EmojiData(35, 10, 0xD83DDC18U, 0, 2, 0, 0); + new (toFill++) EmojiData(23, 11, 0xD83DDC19U, 0, 2, 0, 0); + new (toFill++) EmojiData(27, 11, 0xD83DDC1AU, 0, 2, 0, 0); + new (toFill++) EmojiData(29, 11, 0xD83DDC1BU, 0, 2, 0, 0); + new (toFill++) EmojiData(30, 11, 0xD83DDC1CU, 0, 2, 0, 0); + new (toFill++) EmojiData(31, 11, 0xD83DDC1DU, 0, 2, 0, 0); + new (toFill++) EmojiData(32, 11, 0xD83DDC1EU, 0, 2, 0, 0); + new (toFill++) EmojiData(24, 11, 0xD83DDC1FU, 0, 2, 0, 0); + new (toFill++) EmojiData(25, 11, 0xD83DDC20U, 0, 2, 0, 0); + new (toFill++) EmojiData(26, 11, 0xD83DDC21U, 0, 2, 0, 0); + new (toFill++) EmojiData(18, 11, 0xD83DDC22U, 0, 2, 0, 0); + new (toFill++) EmojiData(31, 10, 0xD83DDC23U, 0, 2, 0, 0); + new (toFill++) EmojiData(30, 10, 0xD83DDC24U, 0, 2, 0, 0); + new (toFill++) EmojiData(32, 10, 0xD83DDC25U, 0, 2, 0, 0); + new (toFill++) EmojiData(33, 10, 0xD83DDC26U, 0, 2, 0, 0); + new (toFill++) EmojiData(34, 10, 0xD83DDC27U, 0, 2, 0, 0); + new (toFill++) EmojiData(7, 11, 0xD83DDC28U, 0, 2, 0, 0); + new (toFill++) EmojiData(3, 11, 0xD83DDC29U, 0, 2, 0, 0); + new (toFill++) EmojiData(36, 10, 0xD83DDC2AU, 0, 2, 0, 0); + new (toFill++) EmojiData(37, 10, 0xD83DDC2BU, 0, 2, 0, 0); + new (toFill++) EmojiData(22, 11, 0xD83DDC2CU, 0, 2, 0, 0); + new (toFill++) EmojiData(10, 10, 0xD83DDC2DU, 0, 2, 0, 0); + new (toFill++) EmojiData(15, 10, 0xD83DDC2EU, 0, 2, 0, 0); + new (toFill++) EmojiData(18, 10, 0xD83DDC2FU, 0, 2, 0, 0); + new (toFill++) EmojiData(20, 10, 0xD83DDC30U, 0, 2, 0, 0); + new (toFill++) EmojiData(22, 10, 0xD83DDC31U, 0, 2, 0, 0); + new (toFill++) EmojiData(15, 11, 0xD83DDC32U, 0, 2, 0, 0); + new (toFill++) EmojiData(21, 11, 0xD83DDC33U, 0, 2, 0, 0); + new (toFill++) EmojiData(24, 10, 0xD83DDC34U, 0, 2, 0, 0); + new (toFill++) EmojiData(9, 11, 0xD83DDC35U, 0, 2, 0, 0); + new (toFill++) EmojiData(4, 11, 0xD83DDC36U, 0, 2, 0, 0); + new (toFill++) EmojiData(0, 11, 0xD83DDC37U, 0, 2, 0, 0); + new (toFill++) EmojiData(19, 11, 0xD83DDC38U, 0, 2, 0, 0); + new (toFill++) EmojiData(11, 10, 0xD83DDC39U, 0, 2, 0, 0); + new (toFill++) EmojiData(5, 11, 0xD83DDC3AU, 0, 2, 0, 0); + new (toFill++) EmojiData(6, 11, 0xD83DDC3BU, 0, 2, 0, 0); + new (toFill++) EmojiData(8, 11, 0xD83DDC3CU, 0, 2, 0, 0); + new (toFill++) EmojiData(1, 11, 0xD83DDC3DU, 0, 2, 0, 0); + new (toFill++) EmojiData(33, 11, 0xD83DDC3EU, 0, 2, 0, 0); + new (toFill++) EmojiData(36, 6, 0xD83DDC40U, 0, 2, 0, 0); + new (toFill++) EmojiData(30, 6, 0xD83DDC42U, 0, 2, 0, 0xFFFF03ACU); + new (toFill++) EmojiData(37, 6, 0xD83DDC43U, 0, 2, 0, 0xFFFF03B1U); + new (toFill++) EmojiData(3, 7, 0xD83DDC44U, 0, 2, 0, 0); + new (toFill++) EmojiData(5, 7, 0xD83DDC45U, 0, 2, 0, 0); + new (toFill++) EmojiData(36, 7, 0xD83DDC46U, 0, 2, 0, 0xFFFF03B6U); + new (toFill++) EmojiData(2, 8, 0xD83DDC47U, 0, 2, 0, 0xFFFF03BBU); + new (toFill++) EmojiData(8, 8, 0xD83DDC48U, 0, 2, 0, 0xFFFF03C0U); + new (toFill++) EmojiData(14, 8, 0xD83DDC49U, 0, 2, 0, 0xFFFF03C5U); + new (toFill++) EmojiData(32, 8, 0xD83DDC4AU, 0, 2, 0, 0xFFFF03CAU); + new (toFill++) EmojiData(12, 7, 0xD83DDC4BU, 0, 2, 0, 0xFFFF03CFU); + new (toFill++) EmojiData(20, 8, 0xD83DDC4CU, 0, 2, 0, 0xFFFF03D4U); + new (toFill++) EmojiData(18, 7, 0xD83DDC4DU, 0, 2, 0, 0xFFFF03D9U); + new (toFill++) EmojiData(24, 7, 0xD83DDC4EU, 0, 2, 0, 0xFFFF03DEU); + new (toFill++) EmojiData(24, 6, 0xD83DDC4FU, 0, 2, 0, 0xFFFF03E3U); + new (toFill++) EmojiData(16, 9, 0xD83DDC50U, 0, 2, 0, 0xFFFF03E8U); + new (toFill++) EmojiData(28, 14, 0xD83DDC51U, 0, 2, 0, 0); + new (toFill++) EmojiData(33, 21, 0xD83DDC52U, 0, 2, 0, 0); + new (toFill++) EmojiData(32, 21, 0xD83DDC53U, 0, 2, 0, 0); + new (toFill++) EmojiData(4, 22, 0xD83DDC54U, 0, 2, 0, 0); + new (toFill++) EmojiData(3, 22, 0xD83DDC55U, 0, 2, 0, 0); + new (toFill++) EmojiData(5, 22, 0xD83DDC56U, 0, 2, 0, 0); + new (toFill++) EmojiData(0, 22, 0xD83DDC57U, 0, 2, 0, 0); + new (toFill++) EmojiData(1, 22, 0xD83DDC58U, 0, 2, 0, 0); + new (toFill++) EmojiData(39, 21, 0xD83DDC59U, 0, 2, 0, 0); + new (toFill++) EmojiData(2, 22, 0xD83DDC5AU, 0, 2, 0, 0); + new (toFill++) EmojiData(27, 21, 0xD83DDC5BU, 0, 2, 0, 0); + new (toFill++) EmojiData(28, 21, 0xD83DDC5CU, 0, 2, 0, 0); + new (toFill++) EmojiData(26, 21, 0xD83DDC5DU, 0, 2, 0, 0); + new (toFill++) EmojiData(37, 21, 0xD83DDC5EU, 0, 2, 0, 0); + new (toFill++) EmojiData(38, 21, 0xD83DDC5FU, 0, 2, 0, 0); + new (toFill++) EmojiData(35, 21, 0xD83DDC60U, 0, 2, 0, 0); + new (toFill++) EmojiData(34, 21, 0xD83DDC61U, 0, 2, 0, 0); + new (toFill++) EmojiData(36, 21, 0xD83DDC62U, 0, 2, 0, 0); + new (toFill++) EmojiData(27, 1, 0xD83DDC63U, 0, 2, 0, 0); + new (toFill++) EmojiData(28, 1, 0xD83DDC64U, 0, 2, 0, 0); + new (toFill++) EmojiData(29, 1, 0xD83DDC65U, 0, 2, 0, 0); + new (toFill++) EmojiData(36, 1, 0xD83DDC66U, 0, 2, 0, 0xFFFF03EDU); + new (toFill++) EmojiData(2, 2, 0xD83DDC67U, 0, 2, 0, 0xFFFF03F2U); + new (toFill++) EmojiData(8, 2, 0xD83DDC68U, 0, 2, 0, 0xFFFF03F7U); + new (toFill++) EmojiData(14, 2, 0xD83DDC69U, 0, 2, 0, 0xFFFF03FCU); + new (toFill++) EmojiData(20, 2, 0xD83DDC6AU, 0, 2, 0, 0); + new (toFill++) EmojiData(35, 2, 0xD83DDC6BU, 0, 2, 0, 0); + new (toFill++) EmojiData(36, 2, 0xD83DDC6CU, 0, 2, 0, 0); + new (toFill++) EmojiData(37, 2, 0xD83DDC6DU, 0, 2, 0, 0); + new (toFill++) EmojiData(35, 3, 0xD83DDC6EU, 0, 2, 0, 0xFFFF0401U); + new (toFill++) EmojiData(38, 2, 0xD83DDC6FU, 0, 2, 0, 0); + new (toFill++) EmojiData(39, 2, 0xD83DDC70U, 0, 2, 0, 0xFFFF0406U); + new (toFill++) EmojiData(5, 3, 0xD83DDC71U, 0, 2, 0, 0xFFFF040BU); + new (toFill++) EmojiData(11, 3, 0xD83DDC72U, 0, 2, 0, 0xFFFF0410U); + new (toFill++) EmojiData(17, 3, 0xD83DDC73U, 0, 2, 0, 0xFFFF0415U); + new (toFill++) EmojiData(23, 3, 0xD83DDC74U, 0, 2, 0, 0xFFFF041AU); + new (toFill++) EmojiData(29, 3, 0xD83DDC75U, 0, 2, 0, 0xFFFF041FU); + new (toFill++) EmojiData(30, 1, 0xD83DDC76U, 0, 2, 0, 0xFFFF0424U); + new (toFill++) EmojiData(1, 4, 0xD83DDC77U, 0, 2, 0, 0xFFFF0429U); + new (toFill++) EmojiData(7, 4, 0xD83DDC78U, 0, 2, 0, 0xFFFF042EU); + new (toFill++) EmojiData(32, 4, 0xD83DDC79U, 0, 2, 0, 0); + new (toFill++) EmojiData(33, 4, 0xD83DDC7AU, 0, 2, 0, 0); + new (toFill++) EmojiData(31, 4, 0xD83DDC7BU, 0, 2, 0, 0); + new (toFill++) EmojiData(19, 4, 0xD83DDC7CU, 0, 2, 0, 0xFFFF0433U); + new (toFill++) EmojiData(36, 4, 0xD83DDC7DU, 0, 2, 0, 0); + new (toFill++) EmojiData(37, 4, 0xD83DDC7EU, 0, 2, 0, 0); + new (toFill++) EmojiData(9, 0, 0xD83DDC7FU, 0, 2, 0, 0); + new (toFill++) EmojiData(35, 4, 0xD83DDC80U, 0, 2, 0, 0); + new (toFill++) EmojiData(4, 5, 0xD83DDC81U, 0, 2, 0, 0xFFFF0438U); + new (toFill++) EmojiData(13, 4, 0xD83DDC82U, 0, 2, 0, 0xFFFF043DU); + new (toFill++) EmojiData(22, 15, 0xD83DDC83U, 0, 2, 0, 0xFFFF0442U); + new (toFill++) EmojiData(31, 21, 0xD83DDC84U, 0, 2, 0, 0); + new (toFill++) EmojiData(6, 7, 0xD83DDC85U, 0, 2, 0, 0xFFFF0447U); + new (toFill++) EmojiData(0, 6, 0xD83DDC86U, 0, 2, 0, 0xFFFF044CU); + new (toFill++) EmojiData(6, 6, 0xD83DDC87U, 0, 2, 0, 0xFFFF0451U); + new (toFill++) EmojiData(10, 22, 0xD83DDC88U, 0, 2, 0, 0); + new (toFill++) EmojiData(11, 22, 0xD83DDC89U, 0, 2, 0, 0); + new (toFill++) EmojiData(12, 22, 0xD83DDC8AU, 0, 2, 0, 0); + new (toFill++) EmojiData(4, 7, 0xD83DDC8BU, 0, 2, 0, 0); + new (toFill++) EmojiData(37, 14, 0xD83DDC8CU, 0, 2, 0, 0); + new (toFill++) EmojiData(34, 14, 0xD83DDC8DU, 0, 2, 0, 0); + new (toFill++) EmojiData(24, 21, 0xD83DDC8EU, 0, 2, 0, 0); + new (toFill++) EmojiData(15, 6, 0xD83DDC8FU, 0, 2, 0, 0); + new (toFill++) EmojiData(39, 9, 0xD83DDC90U, 0, 2, 0, 0); + new (toFill++) EmojiData(12, 6, 0xD83DDC91U, 0, 2, 0, 0); + new (toFill++) EmojiData(29, 19, 0xD83DDC92U, 0, 2, 0, 0); + new (toFill++) EmojiData(0, 15, 0xD83DDC93U, 0, 2, 0, 0); + new (toFill++) EmojiData(36, 14, 0xD83DDC94U, 0, 2, 0, 0); + new (toFill++) EmojiData(38, 14, 0xD83DDC95U, 0, 2, 0, 0); + new (toFill++) EmojiData(2, 15, 0xD83DDC96U, 0, 2, 0, 0); + new (toFill++) EmojiData(1, 15, 0xD83DDC97U, 0, 2, 0, 0); + new (toFill++) EmojiData(3, 15, 0xD83DDC98U, 0, 2, 0, 0); + new (toFill++) EmojiData(9, 15, 0xD83DDC99U, 0, 2, 0, 0); + new (toFill++) EmojiData(8, 15, 0xD83DDC9AU, 0, 2, 0, 0); + new (toFill++) EmojiData(7, 15, 0xD83DDC9BU, 0, 2, 0, 0); + new (toFill++) EmojiData(6, 15, 0xD83DDC9CU, 0, 2, 0, 0); + new (toFill++) EmojiData(4, 15, 0xD83DDC9DU, 0, 2, 0, 0); + new (toFill++) EmojiData(39, 14, 0xD83DDC9EU, 0, 2, 0, 0); + new (toFill++) EmojiData(5, 15, 0xD83DDC9FU, 0, 2, 0, 0); + new (toFill++) EmojiData(9, 28, 0xD83DDCA0U, 0, 2, 0, 0); + new (toFill++) EmojiData(18, 21, 0xD83DDCA1U, 0, 2, 0, 0); + new (toFill++) EmojiData(8, 28, 0xD83DDCA2U, 0, 2, 0, 0); + new (toFill++) EmojiData(20, 22, 0xD83DDCA3U, 0, 2, 0, 0); + new (toFill++) EmojiData(4, 24, 0xD83DDCA4U, 0, 2, 0, 0); + new (toFill++) EmojiData(26, 14, 0xD83DDCA5U, 0, 2, 0, 0); + new (toFill++) EmojiData(1, 12, 0xD83DDCA6U, 0, 2, 0, 0); + new (toFill++) EmojiData(0, 12, 0xD83DDCA7U, 0, 2, 0, 0); + new (toFill++) EmojiData(3, 12, 0xD83DDCA8U, 0, 2, 0, 0); + new (toFill++) EmojiData(34, 4, 0xD83DDCA9U, 0, 2, 0, 0); + new (toFill++) EmojiData(10, 9, 0xD83DDCAAU, 0, 2, 0, 0xFFFF0456U); + new (toFill++) EmojiData(24, 14, 0xD83DDCABU, 0, 2, 0, 0); + new (toFill++) EmojiData(8, 24, 0xD83DDCACU, 0, 2, 0, 0); + new (toFill++) EmojiData(7, 24, 0xD83DDCADU, 0, 2, 0, 0); + new (toFill++) EmojiData(23, 24, 0xD83DDCAEU, 0, 2, 0, 0); + new (toFill++) EmojiData(33, 27, 0xD83DDCAFU, 0, 2, 0, 0); + new (toFill++) EmojiData(23, 21, 0xD83DDCB0U, 0, 2, 0, 0); + new (toFill++) EmojiData(20, 27, 0xD83DDCB1U, 0, 2, 0, 0); + new (toFill++) EmojiData(21, 27, 0xD83DDCB2U, 0, 2, 0, 0); + new (toFill++) EmojiData(21, 21, 0xD83DDCB3U, 0, 2, 0, 0); + new (toFill++) EmojiData(3, 19, 0xD83DDCB4U, 0, 2, 0, 0); + new (toFill++) EmojiData(6, 19, 0xD83DDCB5U, 0, 2, 0, 0); + new (toFill++) EmojiData(4, 19, 0xD83DDCB6U, 0, 2, 0, 0); + new (toFill++) EmojiData(5, 19, 0xD83DDCB7U, 0, 2, 0, 0); + new (toFill++) EmojiData(22, 21, 0xD83DDCB8U, 0, 2, 0, 0); + new (toFill++) EmojiData(39, 24, 0xD83DDCB9U, 0, 2, 0, 0); + new (toFill++) EmojiData(31, 18, 0xD83DDCBAU, 0, 2, 0, 0); + new (toFill++) EmojiData(38, 20, 0xD83DDCBBU, 0, 2, 0, 0); + new (toFill++) EmojiData(29, 21, 0xD83DDCBCU, 0, 2, 0, 0); + new (toFill++) EmojiData(11, 21, 0xD83DDCBDU, 0, 2, 0, 0); + new (toFill++) EmojiData(12, 21, 0xD83DDCBEU, 0, 2, 0, 0); + new (toFill++) EmojiData(13, 21, 0xD83DDCBFU, 0, 2, 0, 0); + new (toFill++) EmojiData(14, 21, 0xD83DDCC0U, 0, 2, 0, 0); + new (toFill++) EmojiData(29, 23, 0xD83DDCC1U, 0, 2, 0, 0); + new (toFill++) EmojiData(30, 23, 0xD83DDCC2U, 0, 2, 0, 0); + new (toFill++) EmojiData(0, 23, 0xD83DDCC3U, 0, 2, 0, 0); + new (toFill++) EmojiData(39, 22, 0xD83DDCC4U, 0, 2, 0, 0); + new (toFill++) EmojiData(5, 23, 0xD83DDCC5U, 0, 2, 0, 0); + new (toFill++) EmojiData(6, 23, 0xD83DDCC6U, 0, 2, 0, 0); + new (toFill++) EmojiData(20, 23, 0xD83DDCC7U, 0, 2, 0, 0); + new (toFill++) EmojiData(2, 23, 0xD83DDCC8U, 0, 2, 0, 0); + new (toFill++) EmojiData(3, 23, 0xD83DDCC9U, 0, 2, 0, 0); + new (toFill++) EmojiData(4, 23, 0xD83DDCCAU, 0, 2, 0, 0); + new (toFill++) EmojiData(10, 23, 0xD83DDCCBU, 0, 2, 0, 0); + new (toFill++) EmojiData(23, 23, 0xD83DDCCCU, 0, 2, 0, 0); + new (toFill++) EmojiData(26, 23, 0xD83DDCCDU, 0, 2, 0, 0); + new (toFill++) EmojiData(22, 23, 0xD83DDCCEU, 0, 2, 0, 0); + new (toFill++) EmojiData(27, 23, 0xD83DDCCFU, 0, 2, 0, 0); + new (toFill++) EmojiData(25, 23, 0xD83DDCD0U, 0, 2, 0, 0); + new (toFill++) EmojiData(1, 23, 0xD83DDCD1U, 0, 2, 0, 0); + new (toFill++) EmojiData(14, 23, 0xD83DDCD2U, 0, 2, 0, 0); + new (toFill++) EmojiData(12, 23, 0xD83DDCD3U, 0, 2, 0, 0); + new (toFill++) EmojiData(13, 23, 0xD83DDCD4U, 0, 2, 0, 0); + new (toFill++) EmojiData(15, 23, 0xD83DDCD5U, 0, 2, 0, 0); + new (toFill++) EmojiData(11, 23, 0xD83DDCD6U, 0, 2, 0, 0); + new (toFill++) EmojiData(16, 23, 0xD83DDCD7U, 0, 2, 0, 0); + new (toFill++) EmojiData(17, 23, 0xD83DDCD8U, 0, 2, 0, 0); + new (toFill++) EmojiData(18, 23, 0xD83DDCD9U, 0, 2, 0, 0); + new (toFill++) EmojiData(19, 23, 0xD83DDCDAU, 0, 2, 0, 0); + new (toFill++) EmojiData(14, 24, 0xD83DDCDBU, 0, 2, 0, 0); + new (toFill++) EmojiData(9, 23, 0xD83DDCDCU, 0, 2, 0, 0); + new (toFill++) EmojiData(33, 23, 0xD83DDCDDU, 0, 2, 0, 0); + new (toFill++) EmojiData(8, 21, 0xD83DDCDEU, 0, 2, 0, 0); + new (toFill++) EmojiData(7, 21, 0xD83DDCDFU, 0, 2, 0, 0); + new (toFill++) EmojiData(10, 21, 0xD83DDCE0U, 0, 2, 0, 0); + new (toFill++) EmojiData(20, 21, 0xD83DDCE1U, 0, 2, 0, 0); + new (toFill++) EmojiData(39, 23, 0xD83DDCE2U, 0, 2, 0, 0); + new (toFill++) EmojiData(38, 23, 0xD83DDCE3U, 0, 2, 0, 0); + new (toFill++) EmojiData(31, 22, 0xD83DDCE4U, 0, 2, 0, 0); + new (toFill++) EmojiData(30, 22, 0xD83DDCE5U, 0, 2, 0, 0); + new (toFill++) EmojiData(32, 22, 0xD83DDCE6U, 0, 2, 0, 0); + new (toFill++) EmojiData(29, 22, 0xD83DDCE7U, 0, 2, 0, 0); + new (toFill++) EmojiData(28, 22, 0xD83DDCE8U, 0, 2, 0, 0); + new (toFill++) EmojiData(27, 22, 0xD83DDCE9U, 0, 2, 0, 0); + new (toFill++) EmojiData(35, 22, 0xD83DDCEAU, 0, 2, 0, 0); + new (toFill++) EmojiData(36, 22, 0xD83DDCEBU, 0, 2, 0, 0); + new (toFill++) EmojiData(37, 22, 0xD83DDCECU, 0, 2, 0, 0); + new (toFill++) EmojiData(38, 22, 0xD83DDCEDU, 0, 2, 0, 0); + new (toFill++) EmojiData(34, 22, 0xD83DDCEEU, 0, 2, 0, 0); + new (toFill++) EmojiData(33, 22, 0xD83DDCEFU, 0, 2, 0, 0); + new (toFill++) EmojiData(24, 22, 0xD83DDCF0U, 0, 2, 0, 0); + new (toFill++) EmojiData(36, 20, 0xD83DDCF1U, 0, 2, 0, 0); + new (toFill++) EmojiData(37, 20, 0xD83DDCF2U, 0, 2, 0, 0); + new (toFill++) EmojiData(5, 25, 0xD83DDCF3U, 0, 2, 0, 0); + new (toFill++) EmojiData(6, 25, 0xD83DDCF4U, 0, 2, 0, 0); + new (toFill++) EmojiData(19, 24, 0xD83DDCF5U, 0, 2, 0, 0); + new (toFill++) EmojiData(7, 27, 0xD83DDCF6U, 0, 2, 0, 0); + new (toFill++) EmojiData(2, 21, 0xD83DDCF7U, 0, 2, 0, 0); + new (toFill++) EmojiData(3, 21, 0xD83DDCF9U, 0, 2, 0, 0); + new (toFill++) EmojiData(5, 21, 0xD83DDCFAU, 0, 2, 0, 0); + new (toFill++) EmojiData(6, 21, 0xD83DDCFBU, 0, 2, 0, 0); + new (toFill++) EmojiData(15, 21, 0xD83DDCFCU, 0, 2, 0, 0); + new (toFill++) EmojiData(27, 26, 0xD83DDD00U, 0, 2, 0, 0); + new (toFill++) EmojiData(28, 26, 0xD83DDD01U, 0, 2, 0, 0); + new (toFill++) EmojiData(29, 26, 0xD83DDD02U, 0, 2, 0, 0); + new (toFill++) EmojiData(16, 27, 0xD83DDD03U, 0, 2, 0, 0); + new (toFill++) EmojiData(22, 26, 0xD83DDD04U, 0, 2, 0, 0); + new (toFill++) EmojiData(7, 23, 0xD83DDD05U, 0, 2, 0, 0); + new (toFill++) EmojiData(8, 23, 0xD83DDD06U, 0, 2, 0, 0); + new (toFill++) EmojiData(3, 24, 0xD83DDD07U, 0, 2, 0, 0); + new (toFill++) EmojiData(0, 24, 0xD83DDD08U, 0, 2, 0, 0); + new (toFill++) EmojiData(1, 24, 0xD83DDD09U, 0, 2, 0, 0); + new (toFill++) EmojiData(2, 24, 0xD83DDD0AU, 0, 2, 0, 0); + new (toFill++) EmojiData(16, 21, 0xD83DDD0BU, 0, 2, 0, 0); + new (toFill++) EmojiData(17, 21, 0xD83DDD0CU, 0, 2, 0, 0); + new (toFill++) EmojiData(10, 24, 0xD83DDD0DU, 0, 2, 0, 0); + new (toFill++) EmojiData(11, 24, 0xD83DDD0EU, 0, 2, 0, 0); + new (toFill++) EmojiData(34, 23, 0xD83DDD0FU, 0, 2, 0, 0); + new (toFill++) EmojiData(35, 23, 0xD83DDD10U, 0, 2, 0, 0); + new (toFill++) EmojiData(25, 22, 0xD83DDD11U, 0, 2, 0, 0); + new (toFill++) EmojiData(36, 23, 0xD83DDD12U, 0, 2, 0, 0); + new (toFill++) EmojiData(37, 23, 0xD83DDD13U, 0, 2, 0, 0); + new (toFill++) EmojiData(5, 24, 0xD83DDD14U, 0, 2, 0, 0); + new (toFill++) EmojiData(6, 24, 0xD83DDD15U, 0, 2, 0, 0); + new (toFill++) EmojiData(23, 22, 0xD83DDD16U, 0, 2, 0, 0); + new (toFill++) EmojiData(21, 23, 0xD83DDD17U, 0, 2, 0, 0); + new (toFill++) EmojiData(17, 28, 0xD83DDD18U, 0, 2, 0, 0); + new (toFill++) EmojiData(35, 27, 0xD83DDD19U, 0, 2, 0, 0); + new (toFill++) EmojiData(34, 27, 0xD83DDD1AU, 0, 2, 0, 0); + new (toFill++) EmojiData(36, 27, 0xD83DDD1BU, 0, 2, 0, 0); + new (toFill++) EmojiData(38, 27, 0xD83DDD1CU, 0, 2, 0, 0); + new (toFill++) EmojiData(37, 27, 0xD83DDD1DU, 0, 2, 0, 0); + new (toFill++) EmojiData(20, 24, 0xD83DDD1EU, 0, 2, 0, 0); + new (toFill++) EmojiData(1, 27, 0xD83DDD1FU, 0, 2, 0, 0); + new (toFill++) EmojiData(5, 27, 0xD83DDD20U, 0, 2, 0, 0); + new (toFill++) EmojiData(4, 27, 0xD83DDD21U, 0, 2, 0, 0); + new (toFill++) EmojiData(2, 27, 0xD83DDD22U, 0, 2, 0, 0); + new (toFill++) EmojiData(9, 27, 0xD83DDD23U, 0, 2, 0, 0); + new (toFill++) EmojiData(3, 27, 0xD83DDD24U, 0, 2, 0, 0); + new (toFill++) EmojiData(35, 11, 0xD83DDD25U, 0, 2, 0, 0); + new (toFill++) EmojiData(19, 21, 0xD83DDD26U, 0, 2, 0, 0); + new (toFill++) EmojiData(16, 22, 0xD83DDD27U, 0, 2, 0, 0); + new (toFill++) EmojiData(19, 22, 0xD83DDD28U, 0, 2, 0, 0); + new (toFill++) EmojiData(18, 22, 0xD83DDD29U, 0, 2, 0, 0); + new (toFill++) EmojiData(17, 22, 0xD83DDD2AU, 0, 2, 0, 0); + new (toFill++) EmojiData(22, 22, 0xD83DDD2BU, 0, 2, 0, 0); + new (toFill++) EmojiData(13, 22, 0xD83DDD2CU, 0, 2, 0, 0); + new (toFill++) EmojiData(14, 22, 0xD83DDD2DU, 0, 2, 0, 0); + new (toFill++) EmojiData(15, 22, 0xD83DDD2EU, 0, 2, 0, 0); + new (toFill++) EmojiData(2, 28, 0xD83DDD2FU, 0, 2, 0, 0); + new (toFill++) EmojiData(3, 28, 0xD83DDD30U, 0, 2, 0, 0); + new (toFill++) EmojiData(4, 28, 0xD83DDD31U, 0, 2, 0, 0); + new (toFill++) EmojiData(34, 28, 0xD83DDD32U, 0, 2, 0, 0); + new (toFill++) EmojiData(35, 28, 0xD83DDD33U, 0, 2, 0, 0); + new (toFill++) EmojiData(18, 28, 0xD83DDD34U, 0, 2, 0, 0); + new (toFill++) EmojiData(19, 28, 0xD83DDD35U, 0, 2, 0, 0); + new (toFill++) EmojiData(24, 28, 0xD83DDD36U, 0, 2, 0, 0); + new (toFill++) EmojiData(25, 28, 0xD83DDD37U, 0, 2, 0, 0); + new (toFill++) EmojiData(22, 28, 0xD83DDD38U, 0, 2, 0, 0); + new (toFill++) EmojiData(23, 28, 0xD83DDD39U, 0, 2, 0, 0); + new (toFill++) EmojiData(20, 28, 0xD83DDD3AU, 0, 2, 0, 0); + new (toFill++) EmojiData(21, 28, 0xD83DDD3BU, 0, 2, 0, 0); + new (toFill++) EmojiData(6, 26, 0xD83DDD3CU, 0, 2, 0, 0); + new (toFill++) EmojiData(7, 26, 0xD83DDD3DU, 0, 2, 0, 0); + new (toFill++) EmojiData(36, 28, 0xD83DDD50U, 0, 2, 0, 0); + new (toFill++) EmojiData(37, 28, 0xD83DDD51U, 0, 2, 0, 0); + new (toFill++) EmojiData(38, 28, 0xD83DDD52U, 0, 2, 0, 0); + new (toFill++) EmojiData(39, 28, 0xD83DDD53U, 0, 2, 0, 0); + new (toFill++) EmojiData(0, 29, 0xD83DDD54U, 0, 2, 0, 0); + new (toFill++) EmojiData(1, 29, 0xD83DDD55U, 0, 2, 0, 0); + new (toFill++) EmojiData(2, 29, 0xD83DDD56U, 0, 2, 0, 0); + new (toFill++) EmojiData(3, 29, 0xD83DDD57U, 0, 2, 0, 0); + new (toFill++) EmojiData(4, 29, 0xD83DDD58U, 0, 2, 0, 0); + new (toFill++) EmojiData(5, 29, 0xD83DDD59U, 0, 2, 0, 0); + new (toFill++) EmojiData(6, 29, 0xD83DDD5AU, 0, 2, 0, 0); + new (toFill++) EmojiData(7, 29, 0xD83DDD5BU, 0, 2, 0, 0); + new (toFill++) EmojiData(8, 29, 0xD83DDD5CU, 0, 2, 0, 0); + new (toFill++) EmojiData(9, 29, 0xD83DDD5DU, 0, 2, 0, 0); + new (toFill++) EmojiData(10, 29, 0xD83DDD5EU, 0, 2, 0, 0); + new (toFill++) EmojiData(11, 29, 0xD83DDD5FU, 0, 2, 0, 0); + new (toFill++) EmojiData(12, 29, 0xD83DDD60U, 0, 2, 0, 0); + new (toFill++) EmojiData(13, 29, 0xD83DDD61U, 0, 2, 0, 0); + new (toFill++) EmojiData(14, 29, 0xD83DDD62U, 0, 2, 0, 0); + new (toFill++) EmojiData(15, 29, 0xD83DDD63U, 0, 2, 0, 0); + new (toFill++) EmojiData(16, 29, 0xD83DDD64U, 0, 2, 0, 0); + new (toFill++) EmojiData(17, 29, 0xD83DDD65U, 0, 2, 0, 0); + new (toFill++) EmojiData(18, 29, 0xD83DDD66U, 0, 2, 0, 0); + new (toFill++) EmojiData(19, 29, 0xD83DDD67U, 0, 2, 0, 0); + new (toFill++) EmojiData(14, 12, 0xD83DDDFBU, 0, 2, 0, 0); + new (toFill++) EmojiData(10, 19, 0xD83DDDFCU, 0, 2, 0, 0); + new (toFill++) EmojiData(7, 19, 0xD83DDDFDU, 0, 2, 0, 0); + new (toFill++) EmojiData(15, 12, 0xD83DDDFEU, 0, 2, 0, 0); + new (toFill++) EmojiData(8, 19, 0xD83DDDFFU, 0, 2, 0, 0); + new (toFill++) EmojiData(0, 0, 0xD83DDE00U, 0, 2, 0, 0); + new (toFill++) EmojiData(1, 0, 0xD83DDE01U, 0, 2, 0, 0); + new (toFill++) EmojiData(2, 0, 0xD83DDE02U, 0, 2, 0, 0); + new (toFill++) EmojiData(3, 0, 0xD83DDE03U, 0, 2, 0, 0); + new (toFill++) EmojiData(4, 0, 0xD83DDE04U, 0, 2, 0, 0); + new (toFill++) EmojiData(5, 0, 0xD83DDE05U, 0, 2, 0, 0); + new (toFill++) EmojiData(6, 0, 0xD83DDE06U, 0, 2, 0, 0); + new (toFill++) EmojiData(7, 0, 0xD83DDE07U, 0, 2, 0, 0); + new (toFill++) EmojiData(8, 0, 0xD83DDE08U, 0, 2, 0, 0); + new (toFill++) EmojiData(10, 0, 0xD83DDE09U, 0, 2, 0, 0); + new (toFill++) EmojiData(11, 0, 0xD83DDE0AU, 0, 2, 0, 0); + new (toFill++) EmojiData(13, 0, 0xD83DDE0BU, 0, 2, 0, 0); + new (toFill++) EmojiData(14, 0, 0xD83DDE0CU, 0, 2, 0, 0); + new (toFill++) EmojiData(15, 0, 0xD83DDE0DU, 0, 2, 0, 0); + new (toFill++) EmojiData(16, 0, 0xD83DDE0EU, 0, 2, 0, 0); + new (toFill++) EmojiData(17, 0, 0xD83DDE0FU, 0, 2, 0, 0); + new (toFill++) EmojiData(18, 0, 0xD83DDE10U, 0, 2, 0, 0); + new (toFill++) EmojiData(19, 0, 0xD83DDE11U, 0, 2, 0, 0); + new (toFill++) EmojiData(20, 0, 0xD83DDE12U, 0, 2, 0, 0); + new (toFill++) EmojiData(21, 0, 0xD83DDE13U, 0, 2, 0, 0); + new (toFill++) EmojiData(22, 0, 0xD83DDE14U, 0, 2, 0, 0); + new (toFill++) EmojiData(23, 0, 0xD83DDE15U, 0, 2, 0, 0); + new (toFill++) EmojiData(24, 0, 0xD83DDE16U, 0, 2, 0, 0); + new (toFill++) EmojiData(25, 0, 0xD83DDE17U, 0, 2, 0, 0); + new (toFill++) EmojiData(26, 0, 0xD83DDE18U, 0, 2, 0, 0); + new (toFill++) EmojiData(27, 0, 0xD83DDE19U, 0, 2, 0, 0); + new (toFill++) EmojiData(28, 0, 0xD83DDE1AU, 0, 2, 0, 0); + new (toFill++) EmojiData(29, 0, 0xD83DDE1BU, 0, 2, 0, 0); + new (toFill++) EmojiData(30, 0, 0xD83DDE1CU, 0, 2, 0, 0); + new (toFill++) EmojiData(31, 0, 0xD83DDE1DU, 0, 2, 0, 0); + new (toFill++) EmojiData(32, 0, 0xD83DDE1EU, 0, 2, 0, 0); + new (toFill++) EmojiData(33, 0, 0xD83DDE1FU, 0, 2, 0, 0); + new (toFill++) EmojiData(34, 0, 0xD83DDE20U, 0, 2, 0, 0); + new (toFill++) EmojiData(35, 0, 0xD83DDE21U, 0, 2, 0, 0); + new (toFill++) EmojiData(36, 0, 0xD83DDE22U, 0, 2, 0, 0); + new (toFill++) EmojiData(37, 0, 0xD83DDE23U, 0, 2, 0, 0); + new (toFill++) EmojiData(38, 0, 0xD83DDE24U, 0, 2, 0, 0); + new (toFill++) EmojiData(39, 0, 0xD83DDE25U, 0, 2, 0, 0); + new (toFill++) EmojiData(0, 1, 0xD83DDE26U, 0, 2, 0, 0); + new (toFill++) EmojiData(1, 1, 0xD83DDE27U, 0, 2, 0, 0); + new (toFill++) EmojiData(2, 1, 0xD83DDE28U, 0, 2, 0, 0); + new (toFill++) EmojiData(3, 1, 0xD83DDE29U, 0, 2, 0, 0); + new (toFill++) EmojiData(4, 1, 0xD83DDE2AU, 0, 2, 0, 0); + new (toFill++) EmojiData(5, 1, 0xD83DDE2BU, 0, 2, 0, 0); + new (toFill++) EmojiData(6, 1, 0xD83DDE2CU, 0, 2, 0, 0); + new (toFill++) EmojiData(7, 1, 0xD83DDE2DU, 0, 2, 0, 0); + new (toFill++) EmojiData(8, 1, 0xD83DDE2EU, 0, 2, 0, 0); + new (toFill++) EmojiData(9, 1, 0xD83DDE2FU, 0, 2, 0, 0); + new (toFill++) EmojiData(10, 1, 0xD83DDE30U, 0, 2, 0, 0); + new (toFill++) EmojiData(11, 1, 0xD83DDE31U, 0, 2, 0, 0); + new (toFill++) EmojiData(12, 1, 0xD83DDE32U, 0, 2, 0, 0); + new (toFill++) EmojiData(13, 1, 0xD83DDE33U, 0, 2, 0, 0); + new (toFill++) EmojiData(14, 1, 0xD83DDE34U, 0, 2, 0, 0); + new (toFill++) EmojiData(15, 1, 0xD83DDE35U, 0, 2, 0, 0); + new (toFill++) EmojiData(16, 1, 0xD83DDE36U, 0, 2, 0, 0); + new (toFill++) EmojiData(17, 1, 0xD83DDE37U, 0, 2, 0, 0); + new (toFill++) EmojiData(18, 1, 0xD83DDE38U, 0, 2, 0, 0); + new (toFill++) EmojiData(19, 1, 0xD83DDE39U, 0, 2, 0, 0); + new (toFill++) EmojiData(20, 1, 0xD83DDE3AU, 0, 2, 0, 0); + new (toFill++) EmojiData(21, 1, 0xD83DDE3BU, 0, 2, 0, 0); + new (toFill++) EmojiData(22, 1, 0xD83DDE3CU, 0, 2, 0, 0); + new (toFill++) EmojiData(23, 1, 0xD83DDE3DU, 0, 2, 0, 0); + new (toFill++) EmojiData(24, 1, 0xD83DDE3EU, 0, 2, 0, 0); + new (toFill++) EmojiData(25, 1, 0xD83DDE3FU, 0, 2, 0, 0); + new (toFill++) EmojiData(26, 1, 0xD83DDE40U, 0, 2, 0, 0); + new (toFill++) EmojiData(10, 5, 0xD83DDE45U, 0, 2, 0, 0xFFFF045BU); + new (toFill++) EmojiData(16, 5, 0xD83DDE46U, 0, 2, 0, 0xFFFF0460U); + new (toFill++) EmojiData(38, 4, 0xD83DDE47U, 0, 2, 0, 0xFFFF0465U); + new (toFill++) EmojiData(10, 11, 0xD83DDE48U, 0, 2, 0, 0); + new (toFill++) EmojiData(11, 11, 0xD83DDE49U, 0, 2, 0, 0); + new (toFill++) EmojiData(12, 11, 0xD83DDE4AU, 0, 2, 0, 0); + new (toFill++) EmojiData(22, 5, 0xD83DDE4BU, 0, 2, 0, 0xFFFF046AU); + new (toFill++) EmojiData(18, 6, 0xD83DDE4CU, 0, 2, 0, 0xFFFF046FU); + new (toFill++) EmojiData(34, 5, 0xD83DDE4DU, 0, 2, 0, 0xFFFF0474U); + new (toFill++) EmojiData(28, 5, 0xD83DDE4EU, 0, 2, 0, 0xFFFF0479U); + new (toFill++) EmojiData(22, 9, 0xD83DDE4FU, 0, 2, 0, 0xFFFF047EU); + new (toFill++) EmojiData(28, 18, 0xD83DDE80U, 0, 2, 0, 0); + new (toFill++) EmojiData(29, 18, 0xD83DDE81U, 0, 2, 0, 0); + new (toFill++) EmojiData(35, 17, 0xD83DDE82U, 0, 2, 0, 0); + new (toFill++) EmojiData(33, 17, 0xD83DDE83U, 0, 2, 0, 0); + new (toFill++) EmojiData(38, 17, 0xD83DDE84U, 0, 2, 0, 0); + new (toFill++) EmojiData(39, 17, 0xD83DDE85U, 0, 2, 0, 0); + new (toFill++) EmojiData(0, 18, 0xD83DDE86U, 0, 2, 0, 0); + new (toFill++) EmojiData(1, 18, 0xD83DDE87U, 0, 2, 0, 0); + new (toFill++) EmojiData(2, 18, 0xD83DDE88U, 0, 2, 0, 0); + new (toFill++) EmojiData(3, 18, 0xD83DDE89U, 0, 2, 0, 0); + new (toFill++) EmojiData(4, 18, 0xD83DDE8AU, 0, 2, 0, 0); + new (toFill++) EmojiData(36, 17, 0xD83DDE8BU, 0, 2, 0, 0); + new (toFill++) EmojiData(5, 18, 0xD83DDE8CU, 0, 2, 0, 0); + new (toFill++) EmojiData(6, 18, 0xD83DDE8DU, 0, 2, 0, 0); + new (toFill++) EmojiData(7, 18, 0xD83DDE8EU, 0, 2, 0, 0); + new (toFill++) EmojiData(23, 18, 0xD83DDE8FU, 0, 2, 0, 0); + new (toFill++) EmojiData(8, 18, 0xD83DDE90U, 0, 2, 0, 0); + new (toFill++) EmojiData(9, 18, 0xD83DDE91U, 0, 2, 0, 0); + new (toFill++) EmojiData(10, 18, 0xD83DDE92U, 0, 2, 0, 0); + new (toFill++) EmojiData(11, 18, 0xD83DDE93U, 0, 2, 0, 0); + new (toFill++) EmojiData(12, 18, 0xD83DDE94U, 0, 2, 0, 0); + new (toFill++) EmojiData(14, 18, 0xD83DDE95U, 0, 2, 0, 0); + new (toFill++) EmojiData(15, 18, 0xD83DDE96U, 0, 2, 0, 0); + new (toFill++) EmojiData(16, 18, 0xD83DDE97U, 0, 2, 0, 0); + new (toFill++) EmojiData(17, 18, 0xD83DDE98U, 0, 2, 0, 0); + new (toFill++) EmojiData(18, 18, 0xD83DDE99U, 0, 2, 0, 0); + new (toFill++) EmojiData(19, 18, 0xD83DDE9AU, 0, 2, 0, 0); + new (toFill++) EmojiData(20, 18, 0xD83DDE9BU, 0, 2, 0, 0); + new (toFill++) EmojiData(21, 18, 0xD83DDE9CU, 0, 2, 0, 0); + new (toFill++) EmojiData(37, 17, 0xD83DDE9DU, 0, 2, 0, 0); + new (toFill++) EmojiData(34, 17, 0xD83DDE9EU, 0, 2, 0, 0); + new (toFill++) EmojiData(38, 18, 0xD83DDE9FU, 0, 2, 0, 0); + new (toFill++) EmojiData(37, 18, 0xD83DDEA0U, 0, 2, 0, 0); + new (toFill++) EmojiData(36, 18, 0xD83DDEA1U, 0, 2, 0, 0); + new (toFill++) EmojiData(33, 18, 0xD83DDEA2U, 0, 2, 0, 0); + new (toFill++) EmojiData(28, 15, 0xD83DDEA3U, 0, 2, 0, 0xFFFF0483U); + new (toFill++) EmojiData(34, 18, 0xD83DDEA4U, 0, 2, 0, 0); + new (toFill++) EmojiData(27, 18, 0xD83DDEA5U, 0, 2, 0, 0); + new (toFill++) EmojiData(26, 18, 0xD83DDEA6U, 0, 2, 0, 0); + new (toFill++) EmojiData(25, 18, 0xD83DDEA7U, 0, 2, 0, 0); + new (toFill++) EmojiData(13, 18, 0xD83DDEA8U, 0, 2, 0, 0); + new (toFill++) EmojiData(28, 23, 0xD83DDEA9U, 0, 2, 0, 0); + new (toFill++) EmojiData(6, 22, 0xD83DDEAAU, 0, 2, 0, 0); + new (toFill++) EmojiData(12, 24, 0xD83DDEABU, 0, 2, 0, 0); + new (toFill++) EmojiData(21, 22, 0xD83DDEACU, 0, 2, 0, 0); + new (toFill++) EmojiData(2, 26, 0xD83DDEADU, 0, 2, 0, 0); + new (toFill++) EmojiData(3, 26, 0xD83DDEAEU, 0, 2, 0, 0); + new (toFill++) EmojiData(16, 24, 0xD83DDEAFU, 0, 2, 0, 0); + new (toFill++) EmojiData(1, 26, 0xD83DDEB0U, 0, 2, 0, 0); + new (toFill++) EmojiData(18, 24, 0xD83DDEB1U, 0, 2, 0, 0); + new (toFill++) EmojiData(22, 18, 0xD83DDEB2U, 0, 2, 0, 0); + new (toFill++) EmojiData(17, 24, 0xD83DDEB3U, 0, 2, 0, 0); + new (toFill++) EmojiData(15, 16, 0xD83DDEB4U, 0, 2, 0, 0xFFFF0488U); + new (toFill++) EmojiData(21, 16, 0xD83DDEB5U, 0, 2, 0, 0xFFFF048DU); + new (toFill++) EmojiData(16, 15, 0xD83DDEB6U, 0, 2, 0, 0xFFFF0492U); + new (toFill++) EmojiData(15, 24, 0xD83DDEB7U, 0, 2, 0, 0); + new (toFill++) EmojiData(9, 24, 0xD83DDEB8U, 0, 2, 0, 0); + new (toFill++) EmojiData(37, 25, 0xD83DDEB9U, 0, 2, 0, 0); + new (toFill++) EmojiData(38, 25, 0xD83DDEBAU, 0, 2, 0, 0); + new (toFill++) EmojiData(36, 25, 0xD83DDEBBU, 0, 2, 0, 0); + new (toFill++) EmojiData(39, 25, 0xD83DDEBCU, 0, 2, 0, 0); + new (toFill++) EmojiData(9, 22, 0xD83DDEBDU, 0, 2, 0, 0); + new (toFill++) EmojiData(16, 25, 0xD83DDEBEU, 0, 2, 0, 0); + new (toFill++) EmojiData(7, 22, 0xD83DDEBFU, 0, 2, 0, 0); + new (toFill++) EmojiData(6, 16, 0xD83DDEC0U, 0, 2, 0, 0xFFFF0497U); + new (toFill++) EmojiData(8, 22, 0xD83DDEC1U, 0, 2, 0, 0); + new (toFill++) EmojiData(39, 18, 0xD83DDEC2U, 0, 2, 0, 0); + new (toFill++) EmojiData(0, 19, 0xD83DDEC3U, 0, 2, 0, 0); + new (toFill++) EmojiData(1, 19, 0xD83DDEC4U, 0, 2, 0, 0); + new (toFill++) EmojiData(2, 19, 0xD83DDEC5U, 0, 2, 0, 0); + new (toFill++) EmojiData(21, 2, 0xFFFF0000U, 0, 8, 0, 0); + new (toFill++) EmojiData(22, 2, 0xFFFF0001U, 0, 11, 0, 0); + new (toFill++) EmojiData(23, 2, 0xFFFF0002U, 0, 11, 0, 0); + new (toFill++) EmojiData(24, 2, 0xFFFF0003U, 0, 11, 0, 0); + new (toFill++) EmojiData(25, 2, 0xFFFF0004U, 0, 8, 0, 0); + new (toFill++) EmojiData(26, 2, 0xFFFF0005U, 0, 8, 0, 0); + new (toFill++) EmojiData(27, 2, 0xFFFF0006U, 0, 11, 0, 0); + new (toFill++) EmojiData(28, 2, 0xFFFF0007U, 0, 11, 0, 0); + new (toFill++) EmojiData(29, 2, 0xFFFF0008U, 0, 11, 0, 0); + new (toFill++) EmojiData(30, 2, 0xFFFF0009U, 0, 8, 0, 0); + new (toFill++) EmojiData(31, 2, 0xFFFF000AU, 0, 8, 0, 0); + new (toFill++) EmojiData(32, 2, 0xFFFF000BU, 0, 11, 0, 0); + new (toFill++) EmojiData(33, 2, 0xFFFF000CU, 0, 11, 0, 0); + new (toFill++) EmojiData(34, 2, 0xFFFF000DU, 0, 11, 0, 0); + new (toFill++) EmojiData(13, 6, 0xFFFF000EU, 0, 8, 0, 0); + new (toFill++) EmojiData(14, 6, 0xFFFF000FU, 0, 8, 0, 0); + new (toFill++) EmojiData(16, 6, 0xFFFF0010U, 0, 11, 0, 0); + new (toFill++) EmojiData(17, 6, 0xFFFF0011U, 0, 11, 0, 0); + new (toFill++) EmojiData(31, 7, 0x261DU, 0, 3, 0xFE0F, 0xD83CDFFBU); + new (toFill++) EmojiData(32, 7, 0x261DU, 0, 3, 0xFE0F, 0xD83CDFFCU); + new (toFill++) EmojiData(33, 7, 0x261DU, 0, 3, 0xFE0F, 0xD83CDFFDU); + new (toFill++) EmojiData(34, 7, 0x261DU, 0, 3, 0xFE0F, 0xD83CDFFEU); + new (toFill++) EmojiData(35, 7, 0x261DU, 0, 3, 0xFE0F, 0xD83CDFFFU); + new (toFill++) EmojiData(39, 8, 0x270AU, 0, 3, 0, 0xD83CDFFBU); + new (toFill++) EmojiData(0, 9, 0x270AU, 0, 3, 0, 0xD83CDFFCU); + new (toFill++) EmojiData(1, 9, 0x270AU, 0, 3, 0, 0xD83CDFFDU); + new (toFill++) EmojiData(2, 9, 0x270AU, 0, 3, 0, 0xD83CDFFEU); + new (toFill++) EmojiData(3, 9, 0x270AU, 0, 3, 0, 0xD83CDFFFU); + new (toFill++) EmojiData(5, 9, 0x270BU, 0, 3, 0, 0xD83CDFFBU); + new (toFill++) EmojiData(6, 9, 0x270BU, 0, 3, 0, 0xD83CDFFCU); + new (toFill++) EmojiData(7, 9, 0x270BU, 0, 3, 0, 0xD83CDFFDU); + new (toFill++) EmojiData(8, 9, 0x270BU, 0, 3, 0, 0xD83CDFFEU); + new (toFill++) EmojiData(9, 9, 0x270BU, 0, 3, 0, 0xD83CDFFFU); + new (toFill++) EmojiData(27, 8, 0x270CU, 0, 3, 0xFE0F, 0xD83CDFFBU); + new (toFill++) EmojiData(28, 8, 0x270CU, 0, 3, 0xFE0F, 0xD83CDFFCU); + new (toFill++) EmojiData(29, 8, 0x270CU, 0, 3, 0xFE0F, 0xD83CDFFDU); + new (toFill++) EmojiData(30, 8, 0x270CU, 0, 3, 0xFE0F, 0xD83CDFFEU); + new (toFill++) EmojiData(31, 8, 0x270CU, 0, 3, 0xFE0F, 0xD83CDFFFU); + new (toFill++) EmojiData(33, 20, 0xD83CDDE6U, 0xD83CDDEAU, 4, 0, 0); + new (toFill++) EmojiData(34, 19, 0xD83CDDE6U, 0xD83CDDF9U, 4, 0, 0); + new (toFill++) EmojiData(33, 19, 0xD83CDDE6U, 0xD83CDDFAU, 4, 0, 0); + new (toFill++) EmojiData(35, 19, 0xD83CDDE7U, 0xD83CDDEAU, 4, 0, 0); + new (toFill++) EmojiData(36, 19, 0xD83CDDE7U, 0xD83CDDF7U, 4, 0, 0); + new (toFill++) EmojiData(37, 19, 0xD83CDDE8U, 0xD83CDDE6U, 4, 0, 0); + new (toFill++) EmojiData(29, 20, 0xD83CDDE8U, 0xD83CDDEDU, 4, 0, 0); + new (toFill++) EmojiData(38, 19, 0xD83CDDE8U, 0xD83CDDF1U, 4, 0, 0); + new (toFill++) EmojiData(39, 19, 0xD83CDDE8U, 0xD83CDDF3U, 4, 0, 0); + new (toFill++) EmojiData(0, 20, 0xD83CDDE8U, 0xD83CDDF4U, 4, 0, 0); + new (toFill++) EmojiData(4, 20, 0xD83CDDE9U, 0xD83CDDEAU, 4, 0, 0); + new (toFill++) EmojiData(1, 20, 0xD83CDDE9U, 0xD83CDDF0U, 4, 0, 0); + new (toFill++) EmojiData(27, 20, 0xD83CDDEAU, 0xD83CDDF8U, 4, 0, 0); + new (toFill++) EmojiData(2, 20, 0xD83CDDEBU, 0xD83CDDEEU, 4, 0, 0); + new (toFill++) EmojiData(3, 20, 0xD83CDDEBU, 0xD83CDDF7U, 4, 0, 0); + new (toFill++) EmojiData(31, 20, 0xD83CDDECU, 0xD83CDDE7U, 4, 0, 0); + new (toFill++) EmojiData(5, 20, 0xD83CDDEDU, 0xD83CDDF0U, 4, 0, 0); + new (toFill++) EmojiData(7, 20, 0xD83CDDEEU, 0xD83CDDE9U, 4, 0, 0); + new (toFill++) EmojiData(8, 20, 0xD83CDDEEU, 0xD83CDDEAU, 4, 0, 0); + new (toFill++) EmojiData(9, 20, 0xD83CDDEEU, 0xD83CDDF1U, 4, 0, 0); + new (toFill++) EmojiData(6, 20, 0xD83CDDEEU, 0xD83CDDF3U, 4, 0, 0); + new (toFill++) EmojiData(10, 20, 0xD83CDDEEU, 0xD83CDDF9U, 4, 0, 0); + new (toFill++) EmojiData(11, 20, 0xD83CDDEFU, 0xD83CDDF5U, 4, 0, 0); + new (toFill++) EmojiData(12, 20, 0xD83CDDF0U, 0xD83CDDF7U, 4, 0, 0); + new (toFill++) EmojiData(13, 20, 0xD83CDDF2U, 0xD83CDDF4U, 4, 0, 0); + new (toFill++) EmojiData(15, 20, 0xD83CDDF2U, 0xD83CDDFDU, 4, 0, 0); + new (toFill++) EmojiData(14, 20, 0xD83CDDF2U, 0xD83CDDFEU, 4, 0, 0); + new (toFill++) EmojiData(16, 20, 0xD83CDDF3U, 0xD83CDDF1U, 4, 0, 0); + new (toFill++) EmojiData(18, 20, 0xD83CDDF3U, 0xD83CDDF4U, 4, 0, 0); + new (toFill++) EmojiData(17, 20, 0xD83CDDF3U, 0xD83CDDFFU, 4, 0, 0); + new (toFill++) EmojiData(19, 20, 0xD83CDDF5U, 0xD83CDDEDU, 4, 0, 0); + new (toFill++) EmojiData(20, 20, 0xD83CDDF5U, 0xD83CDDF1U, 4, 0, 0); + new (toFill++) EmojiData(22, 20, 0xD83CDDF5U, 0xD83CDDF7U, 4, 0, 0); + new (toFill++) EmojiData(21, 20, 0xD83CDDF5U, 0xD83CDDF9U, 4, 0, 0); + new (toFill++) EmojiData(23, 20, 0xD83CDDF7U, 0xD83CDDFAU, 4, 0, 0); + new (toFill++) EmojiData(24, 20, 0xD83CDDF8U, 0xD83CDDE6U, 4, 0, 0); + new (toFill++) EmojiData(28, 20, 0xD83CDDF8U, 0xD83CDDEAU, 4, 0, 0); + new (toFill++) EmojiData(25, 20, 0xD83CDDF8U, 0xD83CDDECU, 4, 0, 0); + new (toFill++) EmojiData(30, 20, 0xD83CDDF9U, 0xD83CDDF7U, 4, 0, 0); + new (toFill++) EmojiData(32, 20, 0xD83CDDFAU, 0xD83CDDF8U, 4, 0, 0); + new (toFill++) EmojiData(34, 20, 0xD83CDDFBU, 0xD83CDDF3U, 4, 0, 0); + new (toFill++) EmojiData(26, 20, 0xD83CDDFFU, 0xD83CDDE6U, 4, 0, 0); + new (toFill++) EmojiData(26, 4, 0xD83CDF85U, 0, 4, 0, 0xD83CDFFBU); + new (toFill++) EmojiData(27, 4, 0xD83CDF85U, 0, 4, 0, 0xD83CDFFCU); + new (toFill++) EmojiData(28, 4, 0xD83CDF85U, 0, 4, 0, 0xD83CDFFDU); + new (toFill++) EmojiData(29, 4, 0xD83CDF85U, 0, 4, 0, 0xD83CDFFEU); + new (toFill++) EmojiData(30, 4, 0xD83CDF85U, 0, 4, 0, 0xD83CDFFFU); + new (toFill++) EmojiData(11, 15, 0xD83CDFC3U, 0, 4, 0, 0xD83CDFFBU); + new (toFill++) EmojiData(12, 15, 0xD83CDFC3U, 0, 4, 0, 0xD83CDFFCU); + new (toFill++) EmojiData(13, 15, 0xD83CDFC3U, 0, 4, 0, 0xD83CDFFDU); + new (toFill++) EmojiData(14, 15, 0xD83CDFC3U, 0, 4, 0, 0xD83CDFFEU); + new (toFill++) EmojiData(15, 15, 0xD83CDFC3U, 0, 4, 0, 0xD83CDFFFU); + new (toFill++) EmojiData(1, 16, 0xD83CDFC4U, 0, 4, 0, 0xD83CDFFBU); + new (toFill++) EmojiData(2, 16, 0xD83CDFC4U, 0, 4, 0, 0xD83CDFFCU); + new (toFill++) EmojiData(3, 16, 0xD83CDFC4U, 0, 4, 0, 0xD83CDFFDU); + new (toFill++) EmojiData(4, 16, 0xD83CDFC4U, 0, 4, 0, 0xD83CDFFEU); + new (toFill++) EmojiData(5, 16, 0xD83CDFC4U, 0, 4, 0, 0xD83CDFFFU); + new (toFill++) EmojiData(28, 16, 0xD83CDFC7U, 0, 4, 0, 0xD83CDFFBU); + new (toFill++) EmojiData(29, 16, 0xD83CDFC7U, 0, 4, 0, 0xD83CDFFCU); + new (toFill++) EmojiData(30, 16, 0xD83CDFC7U, 0, 4, 0, 0xD83CDFFDU); + new (toFill++) EmojiData(31, 16, 0xD83CDFC7U, 0, 4, 0, 0xD83CDFFEU); + new (toFill++) EmojiData(32, 16, 0xD83CDFC7U, 0, 4, 0, 0xD83CDFFFU); + new (toFill++) EmojiData(35, 15, 0xD83CDFCAU, 0, 4, 0, 0xD83CDFFBU); + new (toFill++) EmojiData(36, 15, 0xD83CDFCAU, 0, 4, 0, 0xD83CDFFCU); + new (toFill++) EmojiData(37, 15, 0xD83CDFCAU, 0, 4, 0, 0xD83CDFFDU); + new (toFill++) EmojiData(38, 15, 0xD83CDFCAU, 0, 4, 0, 0xD83CDFFEU); + new (toFill++) EmojiData(39, 15, 0xD83CDFCAU, 0, 4, 0, 0xD83CDFFFU); + new (toFill++) EmojiData(31, 6, 0xD83DDC42U, 0, 4, 0, 0xD83CDFFBU); + new (toFill++) EmojiData(32, 6, 0xD83DDC42U, 0, 4, 0, 0xD83CDFFCU); + new (toFill++) EmojiData(33, 6, 0xD83DDC42U, 0, 4, 0, 0xD83CDFFDU); + new (toFill++) EmojiData(34, 6, 0xD83DDC42U, 0, 4, 0, 0xD83CDFFEU); + new (toFill++) EmojiData(35, 6, 0xD83DDC42U, 0, 4, 0, 0xD83CDFFFU); + new (toFill++) EmojiData(38, 6, 0xD83DDC43U, 0, 4, 0, 0xD83CDFFBU); + new (toFill++) EmojiData(39, 6, 0xD83DDC43U, 0, 4, 0, 0xD83CDFFCU); + new (toFill++) EmojiData(0, 7, 0xD83DDC43U, 0, 4, 0, 0xD83CDFFDU); + new (toFill++) EmojiData(1, 7, 0xD83DDC43U, 0, 4, 0, 0xD83CDFFEU); + new (toFill++) EmojiData(2, 7, 0xD83DDC43U, 0, 4, 0, 0xD83CDFFFU); + new (toFill++) EmojiData(37, 7, 0xD83DDC46U, 0, 4, 0, 0xD83CDFFBU); + new (toFill++) EmojiData(38, 7, 0xD83DDC46U, 0, 4, 0, 0xD83CDFFCU); + new (toFill++) EmojiData(39, 7, 0xD83DDC46U, 0, 4, 0, 0xD83CDFFDU); + new (toFill++) EmojiData(0, 8, 0xD83DDC46U, 0, 4, 0, 0xD83CDFFEU); + new (toFill++) EmojiData(1, 8, 0xD83DDC46U, 0, 4, 0, 0xD83CDFFFU); + new (toFill++) EmojiData(3, 8, 0xD83DDC47U, 0, 4, 0, 0xD83CDFFBU); + new (toFill++) EmojiData(4, 8, 0xD83DDC47U, 0, 4, 0, 0xD83CDFFCU); + new (toFill++) EmojiData(5, 8, 0xD83DDC47U, 0, 4, 0, 0xD83CDFFDU); + new (toFill++) EmojiData(6, 8, 0xD83DDC47U, 0, 4, 0, 0xD83CDFFEU); + new (toFill++) EmojiData(7, 8, 0xD83DDC47U, 0, 4, 0, 0xD83CDFFFU); + new (toFill++) EmojiData(9, 8, 0xD83DDC48U, 0, 4, 0, 0xD83CDFFBU); + new (toFill++) EmojiData(10, 8, 0xD83DDC48U, 0, 4, 0, 0xD83CDFFCU); + new (toFill++) EmojiData(11, 8, 0xD83DDC48U, 0, 4, 0, 0xD83CDFFDU); + new (toFill++) EmojiData(12, 8, 0xD83DDC48U, 0, 4, 0, 0xD83CDFFEU); + new (toFill++) EmojiData(13, 8, 0xD83DDC48U, 0, 4, 0, 0xD83CDFFFU); + new (toFill++) EmojiData(15, 8, 0xD83DDC49U, 0, 4, 0, 0xD83CDFFBU); + new (toFill++) EmojiData(16, 8, 0xD83DDC49U, 0, 4, 0, 0xD83CDFFCU); + new (toFill++) EmojiData(17, 8, 0xD83DDC49U, 0, 4, 0, 0xD83CDFFDU); + new (toFill++) EmojiData(18, 8, 0xD83DDC49U, 0, 4, 0, 0xD83CDFFEU); + new (toFill++) EmojiData(19, 8, 0xD83DDC49U, 0, 4, 0, 0xD83CDFFFU); + new (toFill++) EmojiData(33, 8, 0xD83DDC4AU, 0, 4, 0, 0xD83CDFFBU); + new (toFill++) EmojiData(34, 8, 0xD83DDC4AU, 0, 4, 0, 0xD83CDFFCU); + new (toFill++) EmojiData(35, 8, 0xD83DDC4AU, 0, 4, 0, 0xD83CDFFDU); + new (toFill++) EmojiData(36, 8, 0xD83DDC4AU, 0, 4, 0, 0xD83CDFFEU); + new (toFill++) EmojiData(37, 8, 0xD83DDC4AU, 0, 4, 0, 0xD83CDFFFU); + new (toFill++) EmojiData(13, 7, 0xD83DDC4BU, 0, 4, 0, 0xD83CDFFBU); + new (toFill++) EmojiData(14, 7, 0xD83DDC4BU, 0, 4, 0, 0xD83CDFFCU); + new (toFill++) EmojiData(15, 7, 0xD83DDC4BU, 0, 4, 0, 0xD83CDFFDU); + new (toFill++) EmojiData(16, 7, 0xD83DDC4BU, 0, 4, 0, 0xD83CDFFEU); + new (toFill++) EmojiData(17, 7, 0xD83DDC4BU, 0, 4, 0, 0xD83CDFFFU); + new (toFill++) EmojiData(21, 8, 0xD83DDC4CU, 0, 4, 0, 0xD83CDFFBU); + new (toFill++) EmojiData(22, 8, 0xD83DDC4CU, 0, 4, 0, 0xD83CDFFCU); + new (toFill++) EmojiData(23, 8, 0xD83DDC4CU, 0, 4, 0, 0xD83CDFFDU); + new (toFill++) EmojiData(24, 8, 0xD83DDC4CU, 0, 4, 0, 0xD83CDFFEU); + new (toFill++) EmojiData(25, 8, 0xD83DDC4CU, 0, 4, 0, 0xD83CDFFFU); + new (toFill++) EmojiData(19, 7, 0xD83DDC4DU, 0, 4, 0, 0xD83CDFFBU); + new (toFill++) EmojiData(20, 7, 0xD83DDC4DU, 0, 4, 0, 0xD83CDFFCU); + new (toFill++) EmojiData(21, 7, 0xD83DDC4DU, 0, 4, 0, 0xD83CDFFDU); + new (toFill++) EmojiData(22, 7, 0xD83DDC4DU, 0, 4, 0, 0xD83CDFFEU); + new (toFill++) EmojiData(23, 7, 0xD83DDC4DU, 0, 4, 0, 0xD83CDFFFU); + new (toFill++) EmojiData(25, 7, 0xD83DDC4EU, 0, 4, 0, 0xD83CDFFBU); + new (toFill++) EmojiData(26, 7, 0xD83DDC4EU, 0, 4, 0, 0xD83CDFFCU); + new (toFill++) EmojiData(27, 7, 0xD83DDC4EU, 0, 4, 0, 0xD83CDFFDU); + new (toFill++) EmojiData(28, 7, 0xD83DDC4EU, 0, 4, 0, 0xD83CDFFEU); + new (toFill++) EmojiData(29, 7, 0xD83DDC4EU, 0, 4, 0, 0xD83CDFFFU); + new (toFill++) EmojiData(25, 6, 0xD83DDC4FU, 0, 4, 0, 0xD83CDFFBU); + new (toFill++) EmojiData(26, 6, 0xD83DDC4FU, 0, 4, 0, 0xD83CDFFCU); + new (toFill++) EmojiData(27, 6, 0xD83DDC4FU, 0, 4, 0, 0xD83CDFFDU); + new (toFill++) EmojiData(28, 6, 0xD83DDC4FU, 0, 4, 0, 0xD83CDFFEU); + new (toFill++) EmojiData(29, 6, 0xD83DDC4FU, 0, 4, 0, 0xD83CDFFFU); + new (toFill++) EmojiData(17, 9, 0xD83DDC50U, 0, 4, 0, 0xD83CDFFBU); + new (toFill++) EmojiData(18, 9, 0xD83DDC50U, 0, 4, 0, 0xD83CDFFCU); + new (toFill++) EmojiData(19, 9, 0xD83DDC50U, 0, 4, 0, 0xD83CDFFDU); + new (toFill++) EmojiData(20, 9, 0xD83DDC50U, 0, 4, 0, 0xD83CDFFEU); + new (toFill++) EmojiData(21, 9, 0xD83DDC50U, 0, 4, 0, 0xD83CDFFFU); + new (toFill++) EmojiData(37, 1, 0xD83DDC66U, 0, 4, 0, 0xD83CDFFBU); + new (toFill++) EmojiData(38, 1, 0xD83DDC66U, 0, 4, 0, 0xD83CDFFCU); + new (toFill++) EmojiData(39, 1, 0xD83DDC66U, 0, 4, 0, 0xD83CDFFDU); + new (toFill++) EmojiData(0, 2, 0xD83DDC66U, 0, 4, 0, 0xD83CDFFEU); + new (toFill++) EmojiData(1, 2, 0xD83DDC66U, 0, 4, 0, 0xD83CDFFFU); + new (toFill++) EmojiData(3, 2, 0xD83DDC67U, 0, 4, 0, 0xD83CDFFBU); + new (toFill++) EmojiData(4, 2, 0xD83DDC67U, 0, 4, 0, 0xD83CDFFCU); + new (toFill++) EmojiData(5, 2, 0xD83DDC67U, 0, 4, 0, 0xD83CDFFDU); + new (toFill++) EmojiData(6, 2, 0xD83DDC67U, 0, 4, 0, 0xD83CDFFEU); + new (toFill++) EmojiData(7, 2, 0xD83DDC67U, 0, 4, 0, 0xD83CDFFFU); + new (toFill++) EmojiData(9, 2, 0xD83DDC68U, 0, 4, 0, 0xD83CDFFBU); + new (toFill++) EmojiData(10, 2, 0xD83DDC68U, 0, 4, 0, 0xD83CDFFCU); + new (toFill++) EmojiData(11, 2, 0xD83DDC68U, 0, 4, 0, 0xD83CDFFDU); + new (toFill++) EmojiData(12, 2, 0xD83DDC68U, 0, 4, 0, 0xD83CDFFEU); + new (toFill++) EmojiData(13, 2, 0xD83DDC68U, 0, 4, 0, 0xD83CDFFFU); + new (toFill++) EmojiData(15, 2, 0xD83DDC69U, 0, 4, 0, 0xD83CDFFBU); + new (toFill++) EmojiData(16, 2, 0xD83DDC69U, 0, 4, 0, 0xD83CDFFCU); + new (toFill++) EmojiData(17, 2, 0xD83DDC69U, 0, 4, 0, 0xD83CDFFDU); + new (toFill++) EmojiData(18, 2, 0xD83DDC69U, 0, 4, 0, 0xD83CDFFEU); + new (toFill++) EmojiData(19, 2, 0xD83DDC69U, 0, 4, 0, 0xD83CDFFFU); + new (toFill++) EmojiData(36, 3, 0xD83DDC6EU, 0, 4, 0, 0xD83CDFFBU); + new (toFill++) EmojiData(37, 3, 0xD83DDC6EU, 0, 4, 0, 0xD83CDFFCU); + new (toFill++) EmojiData(38, 3, 0xD83DDC6EU, 0, 4, 0, 0xD83CDFFDU); + new (toFill++) EmojiData(39, 3, 0xD83DDC6EU, 0, 4, 0, 0xD83CDFFEU); + new (toFill++) EmojiData(0, 4, 0xD83DDC6EU, 0, 4, 0, 0xD83CDFFFU); + new (toFill++) EmojiData(0, 3, 0xD83DDC70U, 0, 4, 0, 0xD83CDFFBU); + new (toFill++) EmojiData(1, 3, 0xD83DDC70U, 0, 4, 0, 0xD83CDFFCU); + new (toFill++) EmojiData(2, 3, 0xD83DDC70U, 0, 4, 0, 0xD83CDFFDU); + new (toFill++) EmojiData(3, 3, 0xD83DDC70U, 0, 4, 0, 0xD83CDFFEU); + new (toFill++) EmojiData(4, 3, 0xD83DDC70U, 0, 4, 0, 0xD83CDFFFU); + new (toFill++) EmojiData(6, 3, 0xD83DDC71U, 0, 4, 0, 0xD83CDFFBU); + new (toFill++) EmojiData(7, 3, 0xD83DDC71U, 0, 4, 0, 0xD83CDFFCU); + new (toFill++) EmojiData(8, 3, 0xD83DDC71U, 0, 4, 0, 0xD83CDFFDU); + new (toFill++) EmojiData(9, 3, 0xD83DDC71U, 0, 4, 0, 0xD83CDFFEU); + new (toFill++) EmojiData(10, 3, 0xD83DDC71U, 0, 4, 0, 0xD83CDFFFU); + new (toFill++) EmojiData(12, 3, 0xD83DDC72U, 0, 4, 0, 0xD83CDFFBU); + new (toFill++) EmojiData(13, 3, 0xD83DDC72U, 0, 4, 0, 0xD83CDFFCU); + new (toFill++) EmojiData(14, 3, 0xD83DDC72U, 0, 4, 0, 0xD83CDFFDU); + new (toFill++) EmojiData(15, 3, 0xD83DDC72U, 0, 4, 0, 0xD83CDFFEU); + new (toFill++) EmojiData(16, 3, 0xD83DDC72U, 0, 4, 0, 0xD83CDFFFU); + new (toFill++) EmojiData(18, 3, 0xD83DDC73U, 0, 4, 0, 0xD83CDFFBU); + new (toFill++) EmojiData(19, 3, 0xD83DDC73U, 0, 4, 0, 0xD83CDFFCU); + new (toFill++) EmojiData(20, 3, 0xD83DDC73U, 0, 4, 0, 0xD83CDFFDU); + new (toFill++) EmojiData(21, 3, 0xD83DDC73U, 0, 4, 0, 0xD83CDFFEU); + new (toFill++) EmojiData(22, 3, 0xD83DDC73U, 0, 4, 0, 0xD83CDFFFU); + new (toFill++) EmojiData(24, 3, 0xD83DDC74U, 0, 4, 0, 0xD83CDFFBU); + new (toFill++) EmojiData(25, 3, 0xD83DDC74U, 0, 4, 0, 0xD83CDFFCU); + new (toFill++) EmojiData(26, 3, 0xD83DDC74U, 0, 4, 0, 0xD83CDFFDU); + new (toFill++) EmojiData(27, 3, 0xD83DDC74U, 0, 4, 0, 0xD83CDFFEU); + new (toFill++) EmojiData(28, 3, 0xD83DDC74U, 0, 4, 0, 0xD83CDFFFU); + new (toFill++) EmojiData(30, 3, 0xD83DDC75U, 0, 4, 0, 0xD83CDFFBU); + new (toFill++) EmojiData(31, 3, 0xD83DDC75U, 0, 4, 0, 0xD83CDFFCU); + new (toFill++) EmojiData(32, 3, 0xD83DDC75U, 0, 4, 0, 0xD83CDFFDU); + new (toFill++) EmojiData(33, 3, 0xD83DDC75U, 0, 4, 0, 0xD83CDFFEU); + new (toFill++) EmojiData(34, 3, 0xD83DDC75U, 0, 4, 0, 0xD83CDFFFU); + new (toFill++) EmojiData(31, 1, 0xD83DDC76U, 0, 4, 0, 0xD83CDFFBU); + new (toFill++) EmojiData(32, 1, 0xD83DDC76U, 0, 4, 0, 0xD83CDFFCU); + new (toFill++) EmojiData(33, 1, 0xD83DDC76U, 0, 4, 0, 0xD83CDFFDU); + new (toFill++) EmojiData(34, 1, 0xD83DDC76U, 0, 4, 0, 0xD83CDFFEU); + new (toFill++) EmojiData(35, 1, 0xD83DDC76U, 0, 4, 0, 0xD83CDFFFU); + new (toFill++) EmojiData(2, 4, 0xD83DDC77U, 0, 4, 0, 0xD83CDFFBU); + new (toFill++) EmojiData(3, 4, 0xD83DDC77U, 0, 4, 0, 0xD83CDFFCU); + new (toFill++) EmojiData(4, 4, 0xD83DDC77U, 0, 4, 0, 0xD83CDFFDU); + new (toFill++) EmojiData(5, 4, 0xD83DDC77U, 0, 4, 0, 0xD83CDFFEU); + new (toFill++) EmojiData(6, 4, 0xD83DDC77U, 0, 4, 0, 0xD83CDFFFU); + new (toFill++) EmojiData(8, 4, 0xD83DDC78U, 0, 4, 0, 0xD83CDFFBU); + new (toFill++) EmojiData(9, 4, 0xD83DDC78U, 0, 4, 0, 0xD83CDFFCU); + new (toFill++) EmojiData(10, 4, 0xD83DDC78U, 0, 4, 0, 0xD83CDFFDU); + new (toFill++) EmojiData(11, 4, 0xD83DDC78U, 0, 4, 0, 0xD83CDFFEU); + new (toFill++) EmojiData(12, 4, 0xD83DDC78U, 0, 4, 0, 0xD83CDFFFU); + new (toFill++) EmojiData(20, 4, 0xD83DDC7CU, 0, 4, 0, 0xD83CDFFBU); + new (toFill++) EmojiData(21, 4, 0xD83DDC7CU, 0, 4, 0, 0xD83CDFFCU); + new (toFill++) EmojiData(22, 4, 0xD83DDC7CU, 0, 4, 0, 0xD83CDFFDU); + new (toFill++) EmojiData(23, 4, 0xD83DDC7CU, 0, 4, 0, 0xD83CDFFEU); + new (toFill++) EmojiData(24, 4, 0xD83DDC7CU, 0, 4, 0, 0xD83CDFFFU); + new (toFill++) EmojiData(5, 5, 0xD83DDC81U, 0, 4, 0, 0xD83CDFFBU); + new (toFill++) EmojiData(6, 5, 0xD83DDC81U, 0, 4, 0, 0xD83CDFFCU); + new (toFill++) EmojiData(7, 5, 0xD83DDC81U, 0, 4, 0, 0xD83CDFFDU); + new (toFill++) EmojiData(8, 5, 0xD83DDC81U, 0, 4, 0, 0xD83CDFFEU); + new (toFill++) EmojiData(9, 5, 0xD83DDC81U, 0, 4, 0, 0xD83CDFFFU); + new (toFill++) EmojiData(14, 4, 0xD83DDC82U, 0, 4, 0, 0xD83CDFFBU); + new (toFill++) EmojiData(15, 4, 0xD83DDC82U, 0, 4, 0, 0xD83CDFFCU); + new (toFill++) EmojiData(16, 4, 0xD83DDC82U, 0, 4, 0, 0xD83CDFFDU); + new (toFill++) EmojiData(17, 4, 0xD83DDC82U, 0, 4, 0, 0xD83CDFFEU); + new (toFill++) EmojiData(18, 4, 0xD83DDC82U, 0, 4, 0, 0xD83CDFFFU); + new (toFill++) EmojiData(23, 15, 0xD83DDC83U, 0, 4, 0, 0xD83CDFFBU); + new (toFill++) EmojiData(24, 15, 0xD83DDC83U, 0, 4, 0, 0xD83CDFFCU); + new (toFill++) EmojiData(25, 15, 0xD83DDC83U, 0, 4, 0, 0xD83CDFFDU); + new (toFill++) EmojiData(26, 15, 0xD83DDC83U, 0, 4, 0, 0xD83CDFFEU); + new (toFill++) EmojiData(27, 15, 0xD83DDC83U, 0, 4, 0, 0xD83CDFFFU); + new (toFill++) EmojiData(7, 7, 0xD83DDC85U, 0, 4, 0, 0xD83CDFFBU); + new (toFill++) EmojiData(8, 7, 0xD83DDC85U, 0, 4, 0, 0xD83CDFFCU); + new (toFill++) EmojiData(9, 7, 0xD83DDC85U, 0, 4, 0, 0xD83CDFFDU); + new (toFill++) EmojiData(10, 7, 0xD83DDC85U, 0, 4, 0, 0xD83CDFFEU); + new (toFill++) EmojiData(11, 7, 0xD83DDC85U, 0, 4, 0, 0xD83CDFFFU); + new (toFill++) EmojiData(1, 6, 0xD83DDC86U, 0, 4, 0, 0xD83CDFFBU); + new (toFill++) EmojiData(2, 6, 0xD83DDC86U, 0, 4, 0, 0xD83CDFFCU); + new (toFill++) EmojiData(3, 6, 0xD83DDC86U, 0, 4, 0, 0xD83CDFFDU); + new (toFill++) EmojiData(4, 6, 0xD83DDC86U, 0, 4, 0, 0xD83CDFFEU); + new (toFill++) EmojiData(5, 6, 0xD83DDC86U, 0, 4, 0, 0xD83CDFFFU); + new (toFill++) EmojiData(7, 6, 0xD83DDC87U, 0, 4, 0, 0xD83CDFFBU); + new (toFill++) EmojiData(8, 6, 0xD83DDC87U, 0, 4, 0, 0xD83CDFFCU); + new (toFill++) EmojiData(9, 6, 0xD83DDC87U, 0, 4, 0, 0xD83CDFFDU); + new (toFill++) EmojiData(10, 6, 0xD83DDC87U, 0, 4, 0, 0xD83CDFFEU); + new (toFill++) EmojiData(11, 6, 0xD83DDC87U, 0, 4, 0, 0xD83CDFFFU); + new (toFill++) EmojiData(11, 9, 0xD83DDCAAU, 0, 4, 0, 0xD83CDFFBU); + new (toFill++) EmojiData(12, 9, 0xD83DDCAAU, 0, 4, 0, 0xD83CDFFCU); + new (toFill++) EmojiData(13, 9, 0xD83DDCAAU, 0, 4, 0, 0xD83CDFFDU); + new (toFill++) EmojiData(14, 9, 0xD83DDCAAU, 0, 4, 0, 0xD83CDFFEU); + new (toFill++) EmojiData(15, 9, 0xD83DDCAAU, 0, 4, 0, 0xD83CDFFFU); + new (toFill++) EmojiData(11, 5, 0xD83DDE45U, 0, 4, 0, 0xD83CDFFBU); + new (toFill++) EmojiData(12, 5, 0xD83DDE45U, 0, 4, 0, 0xD83CDFFCU); + new (toFill++) EmojiData(13, 5, 0xD83DDE45U, 0, 4, 0, 0xD83CDFFDU); + new (toFill++) EmojiData(14, 5, 0xD83DDE45U, 0, 4, 0, 0xD83CDFFEU); + new (toFill++) EmojiData(15, 5, 0xD83DDE45U, 0, 4, 0, 0xD83CDFFFU); + new (toFill++) EmojiData(17, 5, 0xD83DDE46U, 0, 4, 0, 0xD83CDFFBU); + new (toFill++) EmojiData(18, 5, 0xD83DDE46U, 0, 4, 0, 0xD83CDFFCU); + new (toFill++) EmojiData(19, 5, 0xD83DDE46U, 0, 4, 0, 0xD83CDFFDU); + new (toFill++) EmojiData(20, 5, 0xD83DDE46U, 0, 4, 0, 0xD83CDFFEU); + new (toFill++) EmojiData(21, 5, 0xD83DDE46U, 0, 4, 0, 0xD83CDFFFU); + new (toFill++) EmojiData(39, 4, 0xD83DDE47U, 0, 4, 0, 0xD83CDFFBU); + new (toFill++) EmojiData(0, 5, 0xD83DDE47U, 0, 4, 0, 0xD83CDFFCU); + new (toFill++) EmojiData(1, 5, 0xD83DDE47U, 0, 4, 0, 0xD83CDFFDU); + new (toFill++) EmojiData(2, 5, 0xD83DDE47U, 0, 4, 0, 0xD83CDFFEU); + new (toFill++) EmojiData(3, 5, 0xD83DDE47U, 0, 4, 0, 0xD83CDFFFU); + new (toFill++) EmojiData(23, 5, 0xD83DDE4BU, 0, 4, 0, 0xD83CDFFBU); + new (toFill++) EmojiData(24, 5, 0xD83DDE4BU, 0, 4, 0, 0xD83CDFFCU); + new (toFill++) EmojiData(25, 5, 0xD83DDE4BU, 0, 4, 0, 0xD83CDFFDU); + new (toFill++) EmojiData(26, 5, 0xD83DDE4BU, 0, 4, 0, 0xD83CDFFEU); + new (toFill++) EmojiData(27, 5, 0xD83DDE4BU, 0, 4, 0, 0xD83CDFFFU); + new (toFill++) EmojiData(19, 6, 0xD83DDE4CU, 0, 4, 0, 0xD83CDFFBU); + new (toFill++) EmojiData(20, 6, 0xD83DDE4CU, 0, 4, 0, 0xD83CDFFCU); + new (toFill++) EmojiData(21, 6, 0xD83DDE4CU, 0, 4, 0, 0xD83CDFFDU); + new (toFill++) EmojiData(22, 6, 0xD83DDE4CU, 0, 4, 0, 0xD83CDFFEU); + new (toFill++) EmojiData(23, 6, 0xD83DDE4CU, 0, 4, 0, 0xD83CDFFFU); + new (toFill++) EmojiData(35, 5, 0xD83DDE4DU, 0, 4, 0, 0xD83CDFFBU); + new (toFill++) EmojiData(36, 5, 0xD83DDE4DU, 0, 4, 0, 0xD83CDFFCU); + new (toFill++) EmojiData(37, 5, 0xD83DDE4DU, 0, 4, 0, 0xD83CDFFDU); + new (toFill++) EmojiData(38, 5, 0xD83DDE4DU, 0, 4, 0, 0xD83CDFFEU); + new (toFill++) EmojiData(39, 5, 0xD83DDE4DU, 0, 4, 0, 0xD83CDFFFU); + new (toFill++) EmojiData(29, 5, 0xD83DDE4EU, 0, 4, 0, 0xD83CDFFBU); + new (toFill++) EmojiData(30, 5, 0xD83DDE4EU, 0, 4, 0, 0xD83CDFFCU); + new (toFill++) EmojiData(31, 5, 0xD83DDE4EU, 0, 4, 0, 0xD83CDFFDU); + new (toFill++) EmojiData(32, 5, 0xD83DDE4EU, 0, 4, 0, 0xD83CDFFEU); + new (toFill++) EmojiData(33, 5, 0xD83DDE4EU, 0, 4, 0, 0xD83CDFFFU); + new (toFill++) EmojiData(23, 9, 0xD83DDE4FU, 0, 4, 0, 0xD83CDFFBU); + new (toFill++) EmojiData(24, 9, 0xD83DDE4FU, 0, 4, 0, 0xD83CDFFCU); + new (toFill++) EmojiData(25, 9, 0xD83DDE4FU, 0, 4, 0, 0xD83CDFFDU); + new (toFill++) EmojiData(26, 9, 0xD83DDE4FU, 0, 4, 0, 0xD83CDFFEU); + new (toFill++) EmojiData(27, 9, 0xD83DDE4FU, 0, 4, 0, 0xD83CDFFFU); + new (toFill++) EmojiData(29, 15, 0xD83DDEA3U, 0, 4, 0, 0xD83CDFFBU); + new (toFill++) EmojiData(30, 15, 0xD83DDEA3U, 0, 4, 0, 0xD83CDFFCU); + new (toFill++) EmojiData(31, 15, 0xD83DDEA3U, 0, 4, 0, 0xD83CDFFDU); + new (toFill++) EmojiData(32, 15, 0xD83DDEA3U, 0, 4, 0, 0xD83CDFFEU); + new (toFill++) EmojiData(33, 15, 0xD83DDEA3U, 0, 4, 0, 0xD83CDFFFU); + new (toFill++) EmojiData(16, 16, 0xD83DDEB4U, 0, 4, 0, 0xD83CDFFBU); + new (toFill++) EmojiData(17, 16, 0xD83DDEB4U, 0, 4, 0, 0xD83CDFFCU); + new (toFill++) EmojiData(18, 16, 0xD83DDEB4U, 0, 4, 0, 0xD83CDFFDU); + new (toFill++) EmojiData(19, 16, 0xD83DDEB4U, 0, 4, 0, 0xD83CDFFEU); + new (toFill++) EmojiData(20, 16, 0xD83DDEB4U, 0, 4, 0, 0xD83CDFFFU); + new (toFill++) EmojiData(22, 16, 0xD83DDEB5U, 0, 4, 0, 0xD83CDFFBU); + new (toFill++) EmojiData(23, 16, 0xD83DDEB5U, 0, 4, 0, 0xD83CDFFCU); + new (toFill++) EmojiData(24, 16, 0xD83DDEB5U, 0, 4, 0, 0xD83CDFFDU); + new (toFill++) EmojiData(25, 16, 0xD83DDEB5U, 0, 4, 0, 0xD83CDFFEU); + new (toFill++) EmojiData(26, 16, 0xD83DDEB5U, 0, 4, 0, 0xD83CDFFFU); + new (toFill++) EmojiData(17, 15, 0xD83DDEB6U, 0, 4, 0, 0xD83CDFFBU); + new (toFill++) EmojiData(18, 15, 0xD83DDEB6U, 0, 4, 0, 0xD83CDFFCU); + new (toFill++) EmojiData(19, 15, 0xD83DDEB6U, 0, 4, 0, 0xD83CDFFDU); + new (toFill++) EmojiData(20, 15, 0xD83DDEB6U, 0, 4, 0, 0xD83CDFFEU); + new (toFill++) EmojiData(21, 15, 0xD83DDEB6U, 0, 4, 0, 0xD83CDFFFU); + new (toFill++) EmojiData(7, 16, 0xD83DDEC0U, 0, 4, 0, 0xD83CDFFBU); + new (toFill++) EmojiData(8, 16, 0xD83DDEC0U, 0, 4, 0, 0xD83CDFFCU); + new (toFill++) EmojiData(9, 16, 0xD83DDEC0U, 0, 4, 0, 0xD83CDFFDU); + new (toFill++) EmojiData(10, 16, 0xD83DDEC0U, 0, 4, 0, 0xD83CDFFEU); + new (toFill++) EmojiData(11, 16, 0xD83DDEC0U, 0, 4, 0, 0xD83CDFFFU); }; -const EmojiData *getEmoji(uint32 code) { +EmojiPtr emojiGet(uint32 code) { if (!emojis) return 0; uint32 highCode = code >> 16; @@ -3591,732 +1378,986 @@ const EmojiData *getEmoji(uint32 code) { return 0; } + if (highCode == 0xFFFFU) { + static const int sequenceOffset = 835; + + uint32 index = (code & 0xFFFFU); + return (index < 18) ? &emojis[sequenceOffset + index] : 0; + } + if (code < 0xD83CDC04U || code > 0xD83DDEC5U) return 0; switch (code) { - case 0xD83CDC04U: return &emojis[128]; - case 0xD83CDCCFU: return &emojis[129]; - case 0xD83CDD70U: return &emojis[130]; - case 0xD83CDD71U: return &emojis[131]; - case 0xD83CDD7EU: return &emojis[132]; - case 0xD83CDD7FU: return &emojis[133]; - case 0xD83CDD8EU: return &emojis[134]; - case 0xD83CDD91U: return &emojis[135]; - case 0xD83CDD92U: return &emojis[136]; - case 0xD83CDD93U: return &emojis[137]; - case 0xD83CDD94U: return &emojis[138]; - case 0xD83CDD95U: return &emojis[139]; - case 0xD83CDD96U: return &emojis[140]; - case 0xD83CDD97U: return &emojis[141]; - case 0xD83CDD98U: return &emojis[142]; - case 0xD83CDD99U: return &emojis[143]; - case 0xD83CDD9AU: return &emojis[144]; - case 0xD83CDDE8U: return &emojis[145]; - case 0xD83CDDE9U: return &emojis[146]; - case 0xD83CDDEAU: return &emojis[147]; - case 0xD83CDDEBU: return &emojis[148]; - case 0xD83CDDECU: return &emojis[149]; - case 0xD83CDDEEU: return &emojis[150]; - case 0xD83CDDEFU: return &emojis[151]; - case 0xD83CDDF0U: return &emojis[152]; - case 0xD83CDDF7U: return &emojis[153]; - case 0xD83CDDFAU: return &emojis[154]; - case 0xD83CDE01U: return &emojis[155]; - case 0xD83CDE02U: return &emojis[156]; - case 0xD83CDE1AU: return &emojis[157]; - case 0xD83CDE2FU: return &emojis[158]; - case 0xD83CDE32U: return &emojis[159]; - case 0xD83CDE33U: return &emojis[160]; - case 0xD83CDE34U: return &emojis[161]; - case 0xD83CDE35U: return &emojis[162]; - case 0xD83CDE36U: return &emojis[163]; - case 0xD83CDE37U: return &emojis[164]; - case 0xD83CDE38U: return &emojis[165]; - case 0xD83CDE39U: return &emojis[166]; - case 0xD83CDE3AU: return &emojis[167]; - case 0xD83CDE50U: return &emojis[168]; - case 0xD83CDE51U: return &emojis[169]; - case 0xD83CDF00U: return &emojis[170]; - case 0xD83CDF01U: return &emojis[171]; - case 0xD83CDF02U: return &emojis[172]; - case 0xD83CDF03U: return &emojis[173]; - case 0xD83CDF04U: return &emojis[174]; - case 0xD83CDF05U: return &emojis[175]; - case 0xD83CDF06U: return &emojis[176]; - case 0xD83CDF07U: return &emojis[177]; - case 0xD83CDF08U: return &emojis[178]; - case 0xD83CDF09U: return &emojis[179]; - case 0xD83CDF0AU: return &emojis[180]; - case 0xD83CDF0BU: return &emojis[181]; - case 0xD83CDF0CU: return &emojis[182]; - case 0xD83CDF0DU: return &emojis[183]; - case 0xD83CDF0EU: return &emojis[184]; - case 0xD83CDF0FU: return &emojis[185]; - case 0xD83CDF10U: return &emojis[186]; - case 0xD83CDF11U: return &emojis[187]; - case 0xD83CDF12U: return &emojis[188]; - case 0xD83CDF13U: return &emojis[189]; - case 0xD83CDF14U: return &emojis[190]; - case 0xD83CDF15U: return &emojis[191]; - case 0xD83CDF16U: return &emojis[192]; - case 0xD83CDF17U: return &emojis[193]; - case 0xD83CDF18U: return &emojis[194]; - case 0xD83CDF19U: return &emojis[195]; - case 0xD83CDF1AU: return &emojis[196]; - case 0xD83CDF1BU: return &emojis[197]; - case 0xD83CDF1CU: return &emojis[198]; - case 0xD83CDF1DU: return &emojis[199]; - case 0xD83CDF1EU: return &emojis[200]; - case 0xD83CDF1FU: return &emojis[201]; - case 0xD83CDF20U: return &emojis[202]; - case 0xD83CDF30U: return &emojis[203]; - case 0xD83CDF31U: return &emojis[204]; - case 0xD83CDF32U: return &emojis[205]; - case 0xD83CDF33U: return &emojis[206]; - case 0xD83CDF34U: return &emojis[207]; - case 0xD83CDF35U: return &emojis[208]; - case 0xD83CDF37U: return &emojis[209]; - case 0xD83CDF38U: return &emojis[210]; - case 0xD83CDF39U: return &emojis[211]; - case 0xD83CDF3AU: return &emojis[212]; - case 0xD83CDF3BU: return &emojis[213]; - case 0xD83CDF3CU: return &emojis[214]; - case 0xD83CDF3DU: return &emojis[215]; - case 0xD83CDF3EU: return &emojis[216]; - case 0xD83CDF3FU: return &emojis[217]; - case 0xD83CDF40U: return &emojis[218]; - case 0xD83CDF41U: return &emojis[219]; - case 0xD83CDF42U: return &emojis[220]; - case 0xD83CDF43U: return &emojis[221]; - case 0xD83CDF44U: return &emojis[222]; - case 0xD83CDF45U: return &emojis[223]; - case 0xD83CDF46U: return &emojis[224]; - case 0xD83CDF47U: return &emojis[225]; - case 0xD83CDF48U: return &emojis[226]; - case 0xD83CDF49U: return &emojis[227]; - case 0xD83CDF4AU: return &emojis[228]; - case 0xD83CDF4BU: return &emojis[229]; - case 0xD83CDF4CU: return &emojis[230]; - case 0xD83CDF4DU: return &emojis[231]; - case 0xD83CDF4EU: return &emojis[232]; - case 0xD83CDF4FU: return &emojis[233]; - case 0xD83CDF50U: return &emojis[234]; - case 0xD83CDF51U: return &emojis[235]; - case 0xD83CDF52U: return &emojis[236]; - case 0xD83CDF53U: return &emojis[237]; - case 0xD83CDF54U: return &emojis[238]; - case 0xD83CDF55U: return &emojis[239]; - case 0xD83CDF56U: return &emojis[240]; - case 0xD83CDF57U: return &emojis[241]; - case 0xD83CDF58U: return &emojis[242]; - case 0xD83CDF59U: return &emojis[243]; - case 0xD83CDF5AU: return &emojis[244]; - case 0xD83CDF5BU: return &emojis[245]; - case 0xD83CDF5CU: return &emojis[246]; - case 0xD83CDF5DU: return &emojis[247]; - case 0xD83CDF5EU: return &emojis[248]; - case 0xD83CDF5FU: return &emojis[249]; - case 0xD83CDF60U: return &emojis[250]; - case 0xD83CDF61U: return &emojis[251]; - case 0xD83CDF62U: return &emojis[252]; - case 0xD83CDF63U: return &emojis[253]; - case 0xD83CDF64U: return &emojis[254]; - case 0xD83CDF65U: return &emojis[255]; - case 0xD83CDF66U: return &emojis[256]; - case 0xD83CDF67U: return &emojis[257]; - case 0xD83CDF68U: return &emojis[258]; - case 0xD83CDF69U: return &emojis[259]; - case 0xD83CDF6AU: return &emojis[260]; - case 0xD83CDF6BU: return &emojis[261]; - case 0xD83CDF6CU: return &emojis[262]; - case 0xD83CDF6DU: return &emojis[263]; - case 0xD83CDF6EU: return &emojis[264]; - case 0xD83CDF6FU: return &emojis[265]; - case 0xD83CDF70U: return &emojis[266]; - case 0xD83CDF71U: return &emojis[267]; - case 0xD83CDF72U: return &emojis[268]; - case 0xD83CDF73U: return &emojis[269]; - case 0xD83CDF74U: return &emojis[270]; - case 0xD83CDF75U: return &emojis[271]; - case 0xD83CDF76U: return &emojis[272]; - case 0xD83CDF77U: return &emojis[273]; - case 0xD83CDF78U: return &emojis[274]; - case 0xD83CDF79U: return &emojis[275]; - case 0xD83CDF7AU: return &emojis[276]; - case 0xD83CDF7BU: return &emojis[277]; - case 0xD83CDF7CU: return &emojis[278]; - case 0xD83CDF80U: return &emojis[279]; - case 0xD83CDF81U: return &emojis[280]; - case 0xD83CDF82U: return &emojis[281]; - case 0xD83CDF83U: return &emojis[282]; - case 0xD83CDF84U: return &emojis[283]; - case 0xD83CDF85U: return &emojis[284]; - case 0xD83CDF86U: return &emojis[285]; - case 0xD83CDF87U: return &emojis[286]; - case 0xD83CDF88U: return &emojis[287]; - case 0xD83CDF89U: return &emojis[288]; - case 0xD83CDF8AU: return &emojis[289]; - case 0xD83CDF8BU: return &emojis[290]; - case 0xD83CDF8CU: return &emojis[291]; - case 0xD83CDF8DU: return &emojis[292]; - case 0xD83CDF8EU: return &emojis[293]; - case 0xD83CDF8FU: return &emojis[294]; - case 0xD83CDF90U: return &emojis[295]; - case 0xD83CDF91U: return &emojis[296]; - case 0xD83CDF92U: return &emojis[297]; - case 0xD83CDF93U: return &emojis[298]; - case 0xD83CDFA0U: return &emojis[299]; - case 0xD83CDFA1U: return &emojis[300]; - case 0xD83CDFA2U: return &emojis[301]; - case 0xD83CDFA3U: return &emojis[302]; - case 0xD83CDFA4U: return &emojis[303]; - case 0xD83CDFA5U: return &emojis[304]; - case 0xD83CDFA6U: return &emojis[305]; - case 0xD83CDFA7U: return &emojis[306]; - case 0xD83CDFA8U: return &emojis[307]; - case 0xD83CDFA9U: return &emojis[308]; - case 0xD83CDFAAU: return &emojis[309]; - case 0xD83CDFABU: return &emojis[310]; - case 0xD83CDFACU: return &emojis[311]; - case 0xD83CDFADU: return &emojis[312]; - case 0xD83CDFAEU: return &emojis[313]; - case 0xD83CDFAFU: return &emojis[314]; - case 0xD83CDFB0U: return &emojis[315]; - case 0xD83CDFB1U: return &emojis[316]; - case 0xD83CDFB2U: return &emojis[317]; - case 0xD83CDFB3U: return &emojis[318]; - case 0xD83CDFB4U: return &emojis[319]; - case 0xD83CDFB5U: return &emojis[320]; - case 0xD83CDFB6U: return &emojis[321]; - case 0xD83CDFB7U: return &emojis[322]; - case 0xD83CDFB8U: return &emojis[323]; - case 0xD83CDFB9U: return &emojis[324]; - case 0xD83CDFBAU: return &emojis[325]; - case 0xD83CDFBBU: return &emojis[326]; - case 0xD83CDFBCU: return &emojis[327]; - case 0xD83CDFBDU: return &emojis[328]; - case 0xD83CDFBEU: return &emojis[329]; - case 0xD83CDFBFU: return &emojis[330]; - case 0xD83CDFC0U: return &emojis[331]; - case 0xD83CDFC1U: return &emojis[332]; - case 0xD83CDFC2U: return &emojis[333]; - case 0xD83CDFC3U: return &emojis[334]; - case 0xD83CDFC4U: return &emojis[335]; - case 0xD83CDFC6U: return &emojis[336]; - case 0xD83CDFC7U: return &emojis[337]; - case 0xD83CDFC8U: return &emojis[338]; - case 0xD83CDFC9U: return &emojis[339]; - case 0xD83CDFCAU: return &emojis[340]; - case 0xD83CDFE0U: return &emojis[341]; - case 0xD83CDFE1U: return &emojis[342]; - case 0xD83CDFE2U: return &emojis[343]; - case 0xD83CDFE3U: return &emojis[344]; - case 0xD83CDFE4U: return &emojis[345]; - case 0xD83CDFE5U: return &emojis[346]; - case 0xD83CDFE6U: return &emojis[347]; - case 0xD83CDFE7U: return &emojis[348]; - case 0xD83CDFE8U: return &emojis[349]; - case 0xD83CDFE9U: return &emojis[350]; - case 0xD83CDFEAU: return &emojis[351]; - case 0xD83CDFEBU: return &emojis[352]; - case 0xD83CDFECU: return &emojis[353]; - case 0xD83CDFEDU: return &emojis[354]; - case 0xD83CDFEEU: return &emojis[355]; - case 0xD83CDFEFU: return &emojis[356]; - case 0xD83CDFF0U: return &emojis[357]; - case 0xD83DDC00U: return &emojis[358]; - case 0xD83DDC01U: return &emojis[359]; - case 0xD83DDC02U: return &emojis[360]; - case 0xD83DDC03U: return &emojis[361]; - case 0xD83DDC04U: return &emojis[362]; - case 0xD83DDC05U: return &emojis[363]; - case 0xD83DDC06U: return &emojis[364]; - case 0xD83DDC07U: return &emojis[365]; - case 0xD83DDC08U: return &emojis[366]; - case 0xD83DDC09U: return &emojis[367]; - case 0xD83DDC0AU: return &emojis[368]; - case 0xD83DDC0BU: return &emojis[369]; - case 0xD83DDC0CU: return &emojis[370]; - case 0xD83DDC0DU: return &emojis[371]; - case 0xD83DDC0EU: return &emojis[372]; - case 0xD83DDC0FU: return &emojis[373]; - case 0xD83DDC10U: return &emojis[374]; - case 0xD83DDC11U: return &emojis[375]; - case 0xD83DDC12U: return &emojis[376]; - case 0xD83DDC13U: return &emojis[377]; - case 0xD83DDC14U: return &emojis[378]; - case 0xD83DDC15U: return &emojis[379]; - case 0xD83DDC16U: return &emojis[380]; - case 0xD83DDC17U: return &emojis[381]; - case 0xD83DDC18U: return &emojis[382]; - case 0xD83DDC19U: return &emojis[383]; - case 0xD83DDC1AU: return &emojis[384]; - case 0xD83DDC1BU: return &emojis[385]; - case 0xD83DDC1CU: return &emojis[386]; - case 0xD83DDC1DU: return &emojis[387]; - case 0xD83DDC1EU: return &emojis[388]; - case 0xD83DDC1FU: return &emojis[389]; - case 0xD83DDC20U: return &emojis[390]; - case 0xD83DDC21U: return &emojis[391]; - case 0xD83DDC22U: return &emojis[392]; - case 0xD83DDC23U: return &emojis[393]; - case 0xD83DDC24U: return &emojis[394]; - case 0xD83DDC25U: return &emojis[395]; - case 0xD83DDC26U: return &emojis[396]; - case 0xD83DDC27U: return &emojis[397]; - case 0xD83DDC28U: return &emojis[398]; - case 0xD83DDC29U: return &emojis[399]; - case 0xD83DDC2AU: return &emojis[400]; - case 0xD83DDC2BU: return &emojis[401]; - case 0xD83DDC2CU: return &emojis[402]; - case 0xD83DDC2DU: return &emojis[403]; - case 0xD83DDC2EU: return &emojis[404]; - case 0xD83DDC2FU: return &emojis[405]; - case 0xD83DDC30U: return &emojis[406]; - case 0xD83DDC31U: return &emojis[407]; - case 0xD83DDC32U: return &emojis[408]; - case 0xD83DDC33U: return &emojis[409]; - case 0xD83DDC34U: return &emojis[410]; - case 0xD83DDC35U: return &emojis[411]; - case 0xD83DDC36U: return &emojis[412]; - case 0xD83DDC37U: return &emojis[413]; - case 0xD83DDC38U: return &emojis[414]; - case 0xD83DDC39U: return &emojis[415]; - case 0xD83DDC3AU: return &emojis[416]; - case 0xD83DDC3BU: return &emojis[417]; - case 0xD83DDC3CU: return &emojis[418]; - case 0xD83DDC3DU: return &emojis[419]; - case 0xD83DDC3EU: return &emojis[420]; - case 0xD83DDC40U: return &emojis[421]; - case 0xD83DDC42U: return &emojis[422]; - case 0xD83DDC43U: return &emojis[423]; - case 0xD83DDC44U: return &emojis[424]; - case 0xD83DDC45U: return &emojis[425]; - case 0xD83DDC46U: return &emojis[426]; - case 0xD83DDC47U: return &emojis[427]; - case 0xD83DDC48U: return &emojis[428]; - case 0xD83DDC49U: return &emojis[429]; - case 0xD83DDC4AU: return &emojis[430]; - case 0xD83DDC4BU: return &emojis[431]; - case 0xD83DDC4CU: return &emojis[432]; - case 0xD83DDC4DU: return &emojis[433]; - case 0xD83DDC4EU: return &emojis[434]; - case 0xD83DDC4FU: return &emojis[435]; - case 0xD83DDC50U: return &emojis[436]; - case 0xD83DDC51U: return &emojis[437]; - case 0xD83DDC52U: return &emojis[438]; - case 0xD83DDC53U: return &emojis[439]; - case 0xD83DDC54U: return &emojis[440]; - case 0xD83DDC55U: return &emojis[441]; - case 0xD83DDC56U: return &emojis[442]; - case 0xD83DDC57U: return &emojis[443]; - case 0xD83DDC58U: return &emojis[444]; - case 0xD83DDC59U: return &emojis[445]; - case 0xD83DDC5AU: return &emojis[446]; - case 0xD83DDC5BU: return &emojis[447]; - case 0xD83DDC5CU: return &emojis[448]; - case 0xD83DDC5DU: return &emojis[449]; - case 0xD83DDC5EU: return &emojis[450]; - case 0xD83DDC5FU: return &emojis[451]; - case 0xD83DDC60U: return &emojis[452]; - case 0xD83DDC61U: return &emojis[453]; - case 0xD83DDC62U: return &emojis[454]; - case 0xD83DDC63U: return &emojis[455]; - case 0xD83DDC64U: return &emojis[456]; - case 0xD83DDC65U: return &emojis[457]; - case 0xD83DDC66U: return &emojis[458]; - case 0xD83DDC67U: return &emojis[459]; - case 0xD83DDC68U: return &emojis[460]; - case 0xD83DDC69U: return &emojis[461]; - case 0xD83DDC6AU: return &emojis[462]; - case 0xD83DDC6BU: return &emojis[463]; - case 0xD83DDC6CU: return &emojis[464]; - case 0xD83DDC6DU: return &emojis[465]; - case 0xD83DDC6EU: return &emojis[466]; - case 0xD83DDC6FU: return &emojis[467]; - case 0xD83DDC70U: return &emojis[468]; - case 0xD83DDC71U: return &emojis[469]; - case 0xD83DDC72U: return &emojis[470]; - case 0xD83DDC73U: return &emojis[471]; - case 0xD83DDC74U: return &emojis[472]; - case 0xD83DDC75U: return &emojis[473]; - case 0xD83DDC76U: return &emojis[474]; - case 0xD83DDC77U: return &emojis[475]; - case 0xD83DDC78U: return &emojis[476]; - case 0xD83DDC79U: return &emojis[477]; - case 0xD83DDC7AU: return &emojis[478]; - case 0xD83DDC7BU: return &emojis[479]; - case 0xD83DDC7CU: return &emojis[480]; - case 0xD83DDC7DU: return &emojis[481]; - case 0xD83DDC7EU: return &emojis[482]; - case 0xD83DDC7FU: return &emojis[483]; - case 0xD83DDC80U: return &emojis[484]; - case 0xD83DDC81U: return &emojis[485]; - case 0xD83DDC82U: return &emojis[486]; - case 0xD83DDC83U: return &emojis[487]; - case 0xD83DDC84U: return &emojis[488]; - case 0xD83DDC85U: return &emojis[489]; - case 0xD83DDC86U: return &emojis[490]; - case 0xD83DDC87U: return &emojis[491]; - case 0xD83DDC88U: return &emojis[492]; - case 0xD83DDC89U: return &emojis[493]; - case 0xD83DDC8AU: return &emojis[494]; - case 0xD83DDC8BU: return &emojis[495]; - case 0xD83DDC8CU: return &emojis[496]; - case 0xD83DDC8DU: return &emojis[497]; - case 0xD83DDC8EU: return &emojis[498]; - case 0xD83DDC8FU: return &emojis[499]; - case 0xD83DDC90U: return &emojis[500]; - case 0xD83DDC91U: return &emojis[501]; - case 0xD83DDC92U: return &emojis[502]; - case 0xD83DDC93U: return &emojis[503]; - case 0xD83DDC94U: return &emojis[504]; - case 0xD83DDC95U: return &emojis[505]; - case 0xD83DDC96U: return &emojis[506]; - case 0xD83DDC97U: return &emojis[507]; - case 0xD83DDC98U: return &emojis[508]; - case 0xD83DDC99U: return &emojis[509]; - case 0xD83DDC9AU: return &emojis[510]; - case 0xD83DDC9BU: return &emojis[511]; - case 0xD83DDC9CU: return &emojis[512]; - case 0xD83DDC9DU: return &emojis[513]; - case 0xD83DDC9EU: return &emojis[514]; - case 0xD83DDC9FU: return &emojis[515]; - case 0xD83DDCA0U: return &emojis[516]; - case 0xD83DDCA1U: return &emojis[517]; - case 0xD83DDCA2U: return &emojis[518]; - case 0xD83DDCA3U: return &emojis[519]; - case 0xD83DDCA4U: return &emojis[520]; - case 0xD83DDCA5U: return &emojis[521]; - case 0xD83DDCA6U: return &emojis[522]; - case 0xD83DDCA7U: return &emojis[523]; - case 0xD83DDCA8U: return &emojis[524]; - case 0xD83DDCA9U: return &emojis[525]; - case 0xD83DDCAAU: return &emojis[526]; - case 0xD83DDCABU: return &emojis[527]; - case 0xD83DDCACU: return &emojis[528]; - case 0xD83DDCADU: return &emojis[529]; - case 0xD83DDCAEU: return &emojis[530]; - case 0xD83DDCAFU: return &emojis[531]; - case 0xD83DDCB0U: return &emojis[532]; - case 0xD83DDCB1U: return &emojis[533]; - case 0xD83DDCB2U: return &emojis[534]; - case 0xD83DDCB3U: return &emojis[535]; - case 0xD83DDCB4U: return &emojis[536]; - case 0xD83DDCB5U: return &emojis[537]; - case 0xD83DDCB6U: return &emojis[538]; - case 0xD83DDCB7U: return &emojis[539]; - case 0xD83DDCB8U: return &emojis[540]; - case 0xD83DDCB9U: return &emojis[541]; - case 0xD83DDCBAU: return &emojis[542]; - case 0xD83DDCBBU: return &emojis[543]; - case 0xD83DDCBCU: return &emojis[544]; - case 0xD83DDCBDU: return &emojis[545]; - case 0xD83DDCBEU: return &emojis[546]; - case 0xD83DDCBFU: return &emojis[547]; - case 0xD83DDCC0U: return &emojis[548]; - case 0xD83DDCC1U: return &emojis[549]; - case 0xD83DDCC2U: return &emojis[550]; - case 0xD83DDCC3U: return &emojis[551]; - case 0xD83DDCC4U: return &emojis[552]; - case 0xD83DDCC5U: return &emojis[553]; - case 0xD83DDCC6U: return &emojis[554]; - case 0xD83DDCC7U: return &emojis[555]; - case 0xD83DDCC8U: return &emojis[556]; - case 0xD83DDCC9U: return &emojis[557]; - case 0xD83DDCCAU: return &emojis[558]; - case 0xD83DDCCBU: return &emojis[559]; - case 0xD83DDCCCU: return &emojis[560]; - case 0xD83DDCCDU: return &emojis[561]; - case 0xD83DDCCEU: return &emojis[562]; - case 0xD83DDCCFU: return &emojis[563]; - case 0xD83DDCD0U: return &emojis[564]; - case 0xD83DDCD1U: return &emojis[565]; - case 0xD83DDCD2U: return &emojis[566]; - case 0xD83DDCD3U: return &emojis[567]; - case 0xD83DDCD4U: return &emojis[568]; - case 0xD83DDCD5U: return &emojis[569]; - case 0xD83DDCD6U: return &emojis[570]; - case 0xD83DDCD7U: return &emojis[571]; - case 0xD83DDCD8U: return &emojis[572]; - case 0xD83DDCD9U: return &emojis[573]; - case 0xD83DDCDAU: return &emojis[574]; - case 0xD83DDCDBU: return &emojis[575]; - case 0xD83DDCDCU: return &emojis[576]; - case 0xD83DDCDDU: return &emojis[577]; - case 0xD83DDCDEU: return &emojis[578]; - case 0xD83DDCDFU: return &emojis[579]; - case 0xD83DDCE0U: return &emojis[580]; - case 0xD83DDCE1U: return &emojis[581]; - case 0xD83DDCE2U: return &emojis[582]; - case 0xD83DDCE3U: return &emojis[583]; - case 0xD83DDCE4U: return &emojis[584]; - case 0xD83DDCE5U: return &emojis[585]; - case 0xD83DDCE6U: return &emojis[586]; - case 0xD83DDCE7U: return &emojis[587]; - case 0xD83DDCE8U: return &emojis[588]; - case 0xD83DDCE9U: return &emojis[589]; - case 0xD83DDCEAU: return &emojis[590]; - case 0xD83DDCEBU: return &emojis[591]; - case 0xD83DDCECU: return &emojis[592]; - case 0xD83DDCEDU: return &emojis[593]; - case 0xD83DDCEEU: return &emojis[594]; - case 0xD83DDCEFU: return &emojis[595]; - case 0xD83DDCF0U: return &emojis[596]; - case 0xD83DDCF1U: return &emojis[597]; - case 0xD83DDCF2U: return &emojis[598]; - case 0xD83DDCF3U: return &emojis[599]; - case 0xD83DDCF4U: return &emojis[600]; - case 0xD83DDCF5U: return &emojis[601]; - case 0xD83DDCF6U: return &emojis[602]; - case 0xD83DDCF7U: return &emojis[603]; - case 0xD83DDCF9U: return &emojis[604]; - case 0xD83DDCFAU: return &emojis[605]; - case 0xD83DDCFBU: return &emojis[606]; - case 0xD83DDCFCU: return &emojis[607]; - case 0xD83DDD00U: return &emojis[608]; - case 0xD83DDD01U: return &emojis[609]; - case 0xD83DDD02U: return &emojis[610]; - case 0xD83DDD03U: return &emojis[611]; - case 0xD83DDD04U: return &emojis[612]; - case 0xD83DDD05U: return &emojis[613]; - case 0xD83DDD06U: return &emojis[614]; - case 0xD83DDD07U: return &emojis[615]; - case 0xD83DDD08U: return &emojis[616]; - case 0xD83DDD09U: return &emojis[617]; - case 0xD83DDD0AU: return &emojis[618]; - case 0xD83DDD0BU: return &emojis[619]; - case 0xD83DDD0CU: return &emojis[620]; - case 0xD83DDD0DU: return &emojis[621]; - case 0xD83DDD0EU: return &emojis[622]; - case 0xD83DDD0FU: return &emojis[623]; - case 0xD83DDD10U: return &emojis[624]; - case 0xD83DDD11U: return &emojis[625]; - case 0xD83DDD12U: return &emojis[626]; - case 0xD83DDD13U: return &emojis[627]; - case 0xD83DDD14U: return &emojis[628]; - case 0xD83DDD15U: return &emojis[629]; - case 0xD83DDD16U: return &emojis[630]; - case 0xD83DDD17U: return &emojis[631]; - case 0xD83DDD18U: return &emojis[632]; - case 0xD83DDD19U: return &emojis[633]; - case 0xD83DDD1AU: return &emojis[634]; - case 0xD83DDD1BU: return &emojis[635]; - case 0xD83DDD1CU: return &emojis[636]; - case 0xD83DDD1DU: return &emojis[637]; - case 0xD83DDD1EU: return &emojis[638]; - case 0xD83DDD1FU: return &emojis[639]; - case 0xD83DDD20U: return &emojis[640]; - case 0xD83DDD21U: return &emojis[641]; - case 0xD83DDD22U: return &emojis[642]; - case 0xD83DDD23U: return &emojis[643]; - case 0xD83DDD24U: return &emojis[644]; - case 0xD83DDD25U: return &emojis[645]; - case 0xD83DDD26U: return &emojis[646]; - case 0xD83DDD27U: return &emojis[647]; - case 0xD83DDD28U: return &emojis[648]; - case 0xD83DDD29U: return &emojis[649]; - case 0xD83DDD2AU: return &emojis[650]; - case 0xD83DDD2BU: return &emojis[651]; - case 0xD83DDD2CU: return &emojis[652]; - case 0xD83DDD2DU: return &emojis[653]; - case 0xD83DDD2EU: return &emojis[654]; - case 0xD83DDD2FU: return &emojis[655]; - case 0xD83DDD30U: return &emojis[656]; - case 0xD83DDD31U: return &emojis[657]; - case 0xD83DDD32U: return &emojis[658]; - case 0xD83DDD33U: return &emojis[659]; - case 0xD83DDD34U: return &emojis[660]; - case 0xD83DDD35U: return &emojis[661]; - case 0xD83DDD36U: return &emojis[662]; - case 0xD83DDD37U: return &emojis[663]; - case 0xD83DDD38U: return &emojis[664]; - case 0xD83DDD39U: return &emojis[665]; - case 0xD83DDD3AU: return &emojis[666]; - case 0xD83DDD3BU: return &emojis[667]; - case 0xD83DDD3CU: return &emojis[668]; - case 0xD83DDD3DU: return &emojis[669]; - case 0xD83DDD50U: return &emojis[670]; - case 0xD83DDD51U: return &emojis[671]; - case 0xD83DDD52U: return &emojis[672]; - case 0xD83DDD53U: return &emojis[673]; - case 0xD83DDD54U: return &emojis[674]; - case 0xD83DDD55U: return &emojis[675]; - case 0xD83DDD56U: return &emojis[676]; - case 0xD83DDD57U: return &emojis[677]; - case 0xD83DDD58U: return &emojis[678]; - case 0xD83DDD59U: return &emojis[679]; - case 0xD83DDD5AU: return &emojis[680]; - case 0xD83DDD5BU: return &emojis[681]; - case 0xD83DDD5CU: return &emojis[682]; - case 0xD83DDD5DU: return &emojis[683]; - case 0xD83DDD5EU: return &emojis[684]; - case 0xD83DDD5FU: return &emojis[685]; - case 0xD83DDD60U: return &emojis[686]; - case 0xD83DDD61U: return &emojis[687]; - case 0xD83DDD62U: return &emojis[688]; - case 0xD83DDD63U: return &emojis[689]; - case 0xD83DDD64U: return &emojis[690]; - case 0xD83DDD65U: return &emojis[691]; - case 0xD83DDD66U: return &emojis[692]; - case 0xD83DDD67U: return &emojis[693]; - case 0xD83DDDFBU: return &emojis[694]; - case 0xD83DDDFCU: return &emojis[695]; - case 0xD83DDDFDU: return &emojis[696]; - case 0xD83DDDFEU: return &emojis[697]; - case 0xD83DDDFFU: return &emojis[698]; - case 0xD83DDE00U: return &emojis[699]; - case 0xD83DDE01U: return &emojis[700]; - case 0xD83DDE02U: return &emojis[701]; - case 0xD83DDE03U: return &emojis[702]; - case 0xD83DDE04U: return &emojis[703]; - case 0xD83DDE05U: return &emojis[704]; - case 0xD83DDE06U: return &emojis[705]; - case 0xD83DDE07U: return &emojis[706]; - case 0xD83DDE08U: return &emojis[707]; - case 0xD83DDE09U: return &emojis[708]; - case 0xD83DDE0AU: return &emojis[709]; - case 0xD83DDE0BU: return &emojis[710]; - case 0xD83DDE0CU: return &emojis[711]; - case 0xD83DDE0DU: return &emojis[712]; - case 0xD83DDE0EU: return &emojis[713]; - case 0xD83DDE0FU: return &emojis[714]; - case 0xD83DDE10U: return &emojis[715]; - case 0xD83DDE11U: return &emojis[716]; - case 0xD83DDE12U: return &emojis[717]; - case 0xD83DDE13U: return &emojis[718]; - case 0xD83DDE14U: return &emojis[719]; - case 0xD83DDE15U: return &emojis[720]; - case 0xD83DDE16U: return &emojis[721]; - case 0xD83DDE17U: return &emojis[722]; - case 0xD83DDE18U: return &emojis[723]; - case 0xD83DDE19U: return &emojis[724]; - case 0xD83DDE1AU: return &emojis[725]; - case 0xD83DDE1BU: return &emojis[726]; - case 0xD83DDE1CU: return &emojis[727]; - case 0xD83DDE1DU: return &emojis[728]; - case 0xD83DDE1EU: return &emojis[729]; - case 0xD83DDE1FU: return &emojis[730]; - case 0xD83DDE20U: return &emojis[731]; - case 0xD83DDE21U: return &emojis[732]; - case 0xD83DDE22U: return &emojis[733]; - case 0xD83DDE23U: return &emojis[734]; - case 0xD83DDE24U: return &emojis[735]; - case 0xD83DDE25U: return &emojis[736]; - case 0xD83DDE26U: return &emojis[737]; - case 0xD83DDE27U: return &emojis[738]; - case 0xD83DDE28U: return &emojis[739]; - case 0xD83DDE29U: return &emojis[740]; - case 0xD83DDE2AU: return &emojis[741]; - case 0xD83DDE2BU: return &emojis[742]; - case 0xD83DDE2CU: return &emojis[743]; - case 0xD83DDE2DU: return &emojis[744]; - case 0xD83DDE2EU: return &emojis[745]; - case 0xD83DDE2FU: return &emojis[746]; - case 0xD83DDE30U: return &emojis[747]; - case 0xD83DDE31U: return &emojis[748]; - case 0xD83DDE32U: return &emojis[749]; - case 0xD83DDE33U: return &emojis[750]; - case 0xD83DDE34U: return &emojis[751]; - case 0xD83DDE35U: return &emojis[752]; - case 0xD83DDE36U: return &emojis[753]; - case 0xD83DDE37U: return &emojis[754]; - case 0xD83DDE38U: return &emojis[755]; - case 0xD83DDE39U: return &emojis[756]; - case 0xD83DDE3AU: return &emojis[757]; - case 0xD83DDE3BU: return &emojis[758]; - case 0xD83DDE3CU: return &emojis[759]; - case 0xD83DDE3DU: return &emojis[760]; - case 0xD83DDE3EU: return &emojis[761]; - case 0xD83DDE3FU: return &emojis[762]; - case 0xD83DDE40U: return &emojis[763]; - case 0xD83DDE45U: return &emojis[764]; - case 0xD83DDE46U: return &emojis[765]; - case 0xD83DDE47U: return &emojis[766]; - case 0xD83DDE48U: return &emojis[767]; - case 0xD83DDE49U: return &emojis[768]; - case 0xD83DDE4AU: return &emojis[769]; - case 0xD83DDE4BU: return &emojis[770]; - case 0xD83DDE4CU: return &emojis[771]; - case 0xD83DDE4DU: return &emojis[772]; - case 0xD83DDE4EU: return &emojis[773]; - case 0xD83DDE4FU: return &emojis[774]; - case 0xD83DDE80U: return &emojis[775]; - case 0xD83DDE81U: return &emojis[776]; - case 0xD83DDE82U: return &emojis[777]; - case 0xD83DDE83U: return &emojis[778]; - case 0xD83DDE84U: return &emojis[779]; - case 0xD83DDE85U: return &emojis[780]; - case 0xD83DDE86U: return &emojis[781]; - case 0xD83DDE87U: return &emojis[782]; - case 0xD83DDE88U: return &emojis[783]; - case 0xD83DDE89U: return &emojis[784]; - case 0xD83DDE8AU: return &emojis[785]; - case 0xD83DDE8BU: return &emojis[786]; - case 0xD83DDE8CU: return &emojis[787]; - case 0xD83DDE8DU: return &emojis[788]; - case 0xD83DDE8EU: return &emojis[789]; - case 0xD83DDE8FU: return &emojis[790]; - case 0xD83DDE90U: return &emojis[791]; - case 0xD83DDE91U: return &emojis[792]; - case 0xD83DDE92U: return &emojis[793]; - case 0xD83DDE93U: return &emojis[794]; - case 0xD83DDE94U: return &emojis[795]; - case 0xD83DDE95U: return &emojis[796]; - case 0xD83DDE96U: return &emojis[797]; - case 0xD83DDE97U: return &emojis[798]; - case 0xD83DDE98U: return &emojis[799]; - case 0xD83DDE99U: return &emojis[800]; - case 0xD83DDE9AU: return &emojis[801]; - case 0xD83DDE9BU: return &emojis[802]; - case 0xD83DDE9CU: return &emojis[803]; - case 0xD83DDE9DU: return &emojis[804]; - case 0xD83DDE9EU: return &emojis[805]; - case 0xD83DDE9FU: return &emojis[806]; - case 0xD83DDEA0U: return &emojis[807]; - case 0xD83DDEA1U: return &emojis[808]; - case 0xD83DDEA2U: return &emojis[809]; - case 0xD83DDEA3U: return &emojis[810]; - case 0xD83DDEA4U: return &emojis[811]; - case 0xD83DDEA5U: return &emojis[812]; - case 0xD83DDEA6U: return &emojis[813]; - case 0xD83DDEA7U: return &emojis[814]; - case 0xD83DDEA8U: return &emojis[815]; - case 0xD83DDEA9U: return &emojis[816]; - case 0xD83DDEAAU: return &emojis[817]; - case 0xD83DDEABU: return &emojis[818]; - case 0xD83DDEACU: return &emojis[819]; - case 0xD83DDEADU: return &emojis[820]; - case 0xD83DDEAEU: return &emojis[821]; - case 0xD83DDEAFU: return &emojis[822]; - case 0xD83DDEB0U: return &emojis[823]; - case 0xD83DDEB1U: return &emojis[824]; - case 0xD83DDEB2U: return &emojis[825]; - case 0xD83DDEB3U: return &emojis[826]; - case 0xD83DDEB4U: return &emojis[827]; - case 0xD83DDEB5U: return &emojis[828]; - case 0xD83DDEB6U: return &emojis[829]; - case 0xD83DDEB7U: return &emojis[830]; - case 0xD83DDEB8U: return &emojis[831]; - case 0xD83DDEB9U: return &emojis[832]; - case 0xD83DDEBAU: return &emojis[833]; - case 0xD83DDEBBU: return &emojis[834]; - case 0xD83DDEBCU: return &emojis[835]; - case 0xD83DDEBDU: return &emojis[836]; - case 0xD83DDEBEU: return &emojis[837]; - case 0xD83DDEBFU: return &emojis[838]; - case 0xD83DDEC0U: return &emojis[839]; - case 0xD83DDEC1U: return &emojis[840]; - case 0xD83DDEC2U: return &emojis[841]; - case 0xD83DDEC3U: return &emojis[842]; - case 0xD83DDEC4U: return &emojis[843]; - case 0xD83DDEC5U: return &emojis[844]; + case 0xD83CDC04U: return &emojis[128]; + case 0xD83CDCCFU: return &emojis[129]; + case 0xD83CDD70U: return &emojis[130]; + case 0xD83CDD71U: return &emojis[131]; + case 0xD83CDD7EU: return &emojis[132]; + case 0xD83CDD7FU: return &emojis[133]; + case 0xD83CDD8EU: return &emojis[134]; + case 0xD83CDD91U: return &emojis[135]; + case 0xD83CDD92U: return &emojis[136]; + case 0xD83CDD93U: return &emojis[137]; + case 0xD83CDD94U: return &emojis[138]; + case 0xD83CDD95U: return &emojis[139]; + case 0xD83CDD96U: return &emojis[140]; + case 0xD83CDD97U: return &emojis[141]; + case 0xD83CDD98U: return &emojis[142]; + case 0xD83CDD99U: return &emojis[143]; + case 0xD83CDD9AU: return &emojis[144]; + case 0xD83CDE01U: return &emojis[145]; + case 0xD83CDE02U: return &emojis[146]; + case 0xD83CDE1AU: return &emojis[147]; + case 0xD83CDE2FU: return &emojis[148]; + case 0xD83CDE32U: return &emojis[149]; + case 0xD83CDE33U: return &emojis[150]; + case 0xD83CDE34U: return &emojis[151]; + case 0xD83CDE35U: return &emojis[152]; + case 0xD83CDE36U: return &emojis[153]; + case 0xD83CDE37U: return &emojis[154]; + case 0xD83CDE38U: return &emojis[155]; + case 0xD83CDE39U: return &emojis[156]; + case 0xD83CDE3AU: return &emojis[157]; + case 0xD83CDE50U: return &emojis[158]; + case 0xD83CDE51U: return &emojis[159]; + case 0xD83CDF00U: return &emojis[160]; + case 0xD83CDF01U: return &emojis[161]; + case 0xD83CDF02U: return &emojis[162]; + case 0xD83CDF03U: return &emojis[163]; + case 0xD83CDF04U: return &emojis[164]; + case 0xD83CDF05U: return &emojis[165]; + case 0xD83CDF06U: return &emojis[166]; + case 0xD83CDF07U: return &emojis[167]; + case 0xD83CDF08U: return &emojis[168]; + case 0xD83CDF09U: return &emojis[169]; + case 0xD83CDF0AU: return &emojis[170]; + case 0xD83CDF0BU: return &emojis[171]; + case 0xD83CDF0CU: return &emojis[172]; + case 0xD83CDF0DU: return &emojis[173]; + case 0xD83CDF0EU: return &emojis[174]; + case 0xD83CDF0FU: return &emojis[175]; + case 0xD83CDF10U: return &emojis[176]; + case 0xD83CDF11U: return &emojis[177]; + case 0xD83CDF12U: return &emojis[178]; + case 0xD83CDF13U: return &emojis[179]; + case 0xD83CDF14U: return &emojis[180]; + case 0xD83CDF15U: return &emojis[181]; + case 0xD83CDF16U: return &emojis[182]; + case 0xD83CDF17U: return &emojis[183]; + case 0xD83CDF18U: return &emojis[184]; + case 0xD83CDF19U: return &emojis[185]; + case 0xD83CDF1AU: return &emojis[186]; + case 0xD83CDF1BU: return &emojis[187]; + case 0xD83CDF1CU: return &emojis[188]; + case 0xD83CDF1DU: return &emojis[189]; + case 0xD83CDF1EU: return &emojis[190]; + case 0xD83CDF1FU: return &emojis[191]; + case 0xD83CDF20U: return &emojis[192]; + case 0xD83CDF30U: return &emojis[193]; + case 0xD83CDF31U: return &emojis[194]; + case 0xD83CDF32U: return &emojis[195]; + case 0xD83CDF33U: return &emojis[196]; + case 0xD83CDF34U: return &emojis[197]; + case 0xD83CDF35U: return &emojis[198]; + case 0xD83CDF37U: return &emojis[199]; + case 0xD83CDF38U: return &emojis[200]; + case 0xD83CDF39U: return &emojis[201]; + case 0xD83CDF3AU: return &emojis[202]; + case 0xD83CDF3BU: return &emojis[203]; + case 0xD83CDF3CU: return &emojis[204]; + case 0xD83CDF3DU: return &emojis[205]; + case 0xD83CDF3EU: return &emojis[206]; + case 0xD83CDF3FU: return &emojis[207]; + case 0xD83CDF40U: return &emojis[208]; + case 0xD83CDF41U: return &emojis[209]; + case 0xD83CDF42U: return &emojis[210]; + case 0xD83CDF43U: return &emojis[211]; + case 0xD83CDF44U: return &emojis[212]; + case 0xD83CDF45U: return &emojis[213]; + case 0xD83CDF46U: return &emojis[214]; + case 0xD83CDF47U: return &emojis[215]; + case 0xD83CDF48U: return &emojis[216]; + case 0xD83CDF49U: return &emojis[217]; + case 0xD83CDF4AU: return &emojis[218]; + case 0xD83CDF4BU: return &emojis[219]; + case 0xD83CDF4CU: return &emojis[220]; + case 0xD83CDF4DU: return &emojis[221]; + case 0xD83CDF4EU: return &emojis[222]; + case 0xD83CDF4FU: return &emojis[223]; + case 0xD83CDF50U: return &emojis[224]; + case 0xD83CDF51U: return &emojis[225]; + case 0xD83CDF52U: return &emojis[226]; + case 0xD83CDF53U: return &emojis[227]; + case 0xD83CDF54U: return &emojis[228]; + case 0xD83CDF55U: return &emojis[229]; + case 0xD83CDF56U: return &emojis[230]; + case 0xD83CDF57U: return &emojis[231]; + case 0xD83CDF58U: return &emojis[232]; + case 0xD83CDF59U: return &emojis[233]; + case 0xD83CDF5AU: return &emojis[234]; + case 0xD83CDF5BU: return &emojis[235]; + case 0xD83CDF5CU: return &emojis[236]; + case 0xD83CDF5DU: return &emojis[237]; + case 0xD83CDF5EU: return &emojis[238]; + case 0xD83CDF5FU: return &emojis[239]; + case 0xD83CDF60U: return &emojis[240]; + case 0xD83CDF61U: return &emojis[241]; + case 0xD83CDF62U: return &emojis[242]; + case 0xD83CDF63U: return &emojis[243]; + case 0xD83CDF64U: return &emojis[244]; + case 0xD83CDF65U: return &emojis[245]; + case 0xD83CDF66U: return &emojis[246]; + case 0xD83CDF67U: return &emojis[247]; + case 0xD83CDF68U: return &emojis[248]; + case 0xD83CDF69U: return &emojis[249]; + case 0xD83CDF6AU: return &emojis[250]; + case 0xD83CDF6BU: return &emojis[251]; + case 0xD83CDF6CU: return &emojis[252]; + case 0xD83CDF6DU: return &emojis[253]; + case 0xD83CDF6EU: return &emojis[254]; + case 0xD83CDF6FU: return &emojis[255]; + case 0xD83CDF70U: return &emojis[256]; + case 0xD83CDF71U: return &emojis[257]; + case 0xD83CDF72U: return &emojis[258]; + case 0xD83CDF73U: return &emojis[259]; + case 0xD83CDF74U: return &emojis[260]; + case 0xD83CDF75U: return &emojis[261]; + case 0xD83CDF76U: return &emojis[262]; + case 0xD83CDF77U: return &emojis[263]; + case 0xD83CDF78U: return &emojis[264]; + case 0xD83CDF79U: return &emojis[265]; + case 0xD83CDF7AU: return &emojis[266]; + case 0xD83CDF7BU: return &emojis[267]; + case 0xD83CDF7CU: return &emojis[268]; + case 0xD83CDF80U: return &emojis[269]; + case 0xD83CDF81U: return &emojis[270]; + case 0xD83CDF82U: return &emojis[271]; + case 0xD83CDF83U: return &emojis[272]; + case 0xD83CDF84U: return &emojis[273]; + case 0xD83CDF85U: return &emojis[274]; + case 0xD83CDF86U: return &emojis[275]; + case 0xD83CDF87U: return &emojis[276]; + case 0xD83CDF88U: return &emojis[277]; + case 0xD83CDF89U: return &emojis[278]; + case 0xD83CDF8AU: return &emojis[279]; + case 0xD83CDF8BU: return &emojis[280]; + case 0xD83CDF8CU: return &emojis[281]; + case 0xD83CDF8DU: return &emojis[282]; + case 0xD83CDF8EU: return &emojis[283]; + case 0xD83CDF8FU: return &emojis[284]; + case 0xD83CDF90U: return &emojis[285]; + case 0xD83CDF91U: return &emojis[286]; + case 0xD83CDF92U: return &emojis[287]; + case 0xD83CDF93U: return &emojis[288]; + case 0xD83CDFA0U: return &emojis[289]; + case 0xD83CDFA1U: return &emojis[290]; + case 0xD83CDFA2U: return &emojis[291]; + case 0xD83CDFA3U: return &emojis[292]; + case 0xD83CDFA4U: return &emojis[293]; + case 0xD83CDFA5U: return &emojis[294]; + case 0xD83CDFA6U: return &emojis[295]; + case 0xD83CDFA7U: return &emojis[296]; + case 0xD83CDFA8U: return &emojis[297]; + case 0xD83CDFA9U: return &emojis[298]; + case 0xD83CDFAAU: return &emojis[299]; + case 0xD83CDFABU: return &emojis[300]; + case 0xD83CDFACU: return &emojis[301]; + case 0xD83CDFADU: return &emojis[302]; + case 0xD83CDFAEU: return &emojis[303]; + case 0xD83CDFAFU: return &emojis[304]; + case 0xD83CDFB0U: return &emojis[305]; + case 0xD83CDFB1U: return &emojis[306]; + case 0xD83CDFB2U: return &emojis[307]; + case 0xD83CDFB3U: return &emojis[308]; + case 0xD83CDFB4U: return &emojis[309]; + case 0xD83CDFB5U: return &emojis[310]; + case 0xD83CDFB6U: return &emojis[311]; + case 0xD83CDFB7U: return &emojis[312]; + case 0xD83CDFB8U: return &emojis[313]; + case 0xD83CDFB9U: return &emojis[314]; + case 0xD83CDFBAU: return &emojis[315]; + case 0xD83CDFBBU: return &emojis[316]; + case 0xD83CDFBCU: return &emojis[317]; + case 0xD83CDFBDU: return &emojis[318]; + case 0xD83CDFBEU: return &emojis[319]; + case 0xD83CDFBFU: return &emojis[320]; + case 0xD83CDFC0U: return &emojis[321]; + case 0xD83CDFC1U: return &emojis[322]; + case 0xD83CDFC2U: return &emojis[323]; + case 0xD83CDFC3U: return &emojis[324]; + case 0xD83CDFC4U: return &emojis[325]; + case 0xD83CDFC6U: return &emojis[326]; + case 0xD83CDFC7U: return &emojis[327]; + case 0xD83CDFC8U: return &emojis[328]; + case 0xD83CDFC9U: return &emojis[329]; + case 0xD83CDFCAU: return &emojis[330]; + case 0xD83CDFE0U: return &emojis[331]; + case 0xD83CDFE1U: return &emojis[332]; + case 0xD83CDFE2U: return &emojis[333]; + case 0xD83CDFE3U: return &emojis[334]; + case 0xD83CDFE4U: return &emojis[335]; + case 0xD83CDFE5U: return &emojis[336]; + case 0xD83CDFE6U: return &emojis[337]; + case 0xD83CDFE7U: return &emojis[338]; + case 0xD83CDFE8U: return &emojis[339]; + case 0xD83CDFE9U: return &emojis[340]; + case 0xD83CDFEAU: return &emojis[341]; + case 0xD83CDFEBU: return &emojis[342]; + case 0xD83CDFECU: return &emojis[343]; + case 0xD83CDFEDU: return &emojis[344]; + case 0xD83CDFEEU: return &emojis[345]; + case 0xD83CDFEFU: return &emojis[346]; + case 0xD83CDFF0U: return &emojis[347]; + case 0xD83DDC00U: return &emojis[348]; + case 0xD83DDC01U: return &emojis[349]; + case 0xD83DDC02U: return &emojis[350]; + case 0xD83DDC03U: return &emojis[351]; + case 0xD83DDC04U: return &emojis[352]; + case 0xD83DDC05U: return &emojis[353]; + case 0xD83DDC06U: return &emojis[354]; + case 0xD83DDC07U: return &emojis[355]; + case 0xD83DDC08U: return &emojis[356]; + case 0xD83DDC09U: return &emojis[357]; + case 0xD83DDC0AU: return &emojis[358]; + case 0xD83DDC0BU: return &emojis[359]; + case 0xD83DDC0CU: return &emojis[360]; + case 0xD83DDC0DU: return &emojis[361]; + case 0xD83DDC0EU: return &emojis[362]; + case 0xD83DDC0FU: return &emojis[363]; + case 0xD83DDC10U: return &emojis[364]; + case 0xD83DDC11U: return &emojis[365]; + case 0xD83DDC12U: return &emojis[366]; + case 0xD83DDC13U: return &emojis[367]; + case 0xD83DDC14U: return &emojis[368]; + case 0xD83DDC15U: return &emojis[369]; + case 0xD83DDC16U: return &emojis[370]; + case 0xD83DDC17U: return &emojis[371]; + case 0xD83DDC18U: return &emojis[372]; + case 0xD83DDC19U: return &emojis[373]; + case 0xD83DDC1AU: return &emojis[374]; + case 0xD83DDC1BU: return &emojis[375]; + case 0xD83DDC1CU: return &emojis[376]; + case 0xD83DDC1DU: return &emojis[377]; + case 0xD83DDC1EU: return &emojis[378]; + case 0xD83DDC1FU: return &emojis[379]; + case 0xD83DDC20U: return &emojis[380]; + case 0xD83DDC21U: return &emojis[381]; + case 0xD83DDC22U: return &emojis[382]; + case 0xD83DDC23U: return &emojis[383]; + case 0xD83DDC24U: return &emojis[384]; + case 0xD83DDC25U: return &emojis[385]; + case 0xD83DDC26U: return &emojis[386]; + case 0xD83DDC27U: return &emojis[387]; + case 0xD83DDC28U: return &emojis[388]; + case 0xD83DDC29U: return &emojis[389]; + case 0xD83DDC2AU: return &emojis[390]; + case 0xD83DDC2BU: return &emojis[391]; + case 0xD83DDC2CU: return &emojis[392]; + case 0xD83DDC2DU: return &emojis[393]; + case 0xD83DDC2EU: return &emojis[394]; + case 0xD83DDC2FU: return &emojis[395]; + case 0xD83DDC30U: return &emojis[396]; + case 0xD83DDC31U: return &emojis[397]; + case 0xD83DDC32U: return &emojis[398]; + case 0xD83DDC33U: return &emojis[399]; + case 0xD83DDC34U: return &emojis[400]; + case 0xD83DDC35U: return &emojis[401]; + case 0xD83DDC36U: return &emojis[402]; + case 0xD83DDC37U: return &emojis[403]; + case 0xD83DDC38U: return &emojis[404]; + case 0xD83DDC39U: return &emojis[405]; + case 0xD83DDC3AU: return &emojis[406]; + case 0xD83DDC3BU: return &emojis[407]; + case 0xD83DDC3CU: return &emojis[408]; + case 0xD83DDC3DU: return &emojis[409]; + case 0xD83DDC3EU: return &emojis[410]; + case 0xD83DDC40U: return &emojis[411]; + case 0xD83DDC42U: return &emojis[412]; + case 0xD83DDC43U: return &emojis[413]; + case 0xD83DDC44U: return &emojis[414]; + case 0xD83DDC45U: return &emojis[415]; + case 0xD83DDC46U: return &emojis[416]; + case 0xD83DDC47U: return &emojis[417]; + case 0xD83DDC48U: return &emojis[418]; + case 0xD83DDC49U: return &emojis[419]; + case 0xD83DDC4AU: return &emojis[420]; + case 0xD83DDC4BU: return &emojis[421]; + case 0xD83DDC4CU: return &emojis[422]; + case 0xD83DDC4DU: return &emojis[423]; + case 0xD83DDC4EU: return &emojis[424]; + case 0xD83DDC4FU: return &emojis[425]; + case 0xD83DDC50U: return &emojis[426]; + case 0xD83DDC51U: return &emojis[427]; + case 0xD83DDC52U: return &emojis[428]; + case 0xD83DDC53U: return &emojis[429]; + case 0xD83DDC54U: return &emojis[430]; + case 0xD83DDC55U: return &emojis[431]; + case 0xD83DDC56U: return &emojis[432]; + case 0xD83DDC57U: return &emojis[433]; + case 0xD83DDC58U: return &emojis[434]; + case 0xD83DDC59U: return &emojis[435]; + case 0xD83DDC5AU: return &emojis[436]; + case 0xD83DDC5BU: return &emojis[437]; + case 0xD83DDC5CU: return &emojis[438]; + case 0xD83DDC5DU: return &emojis[439]; + case 0xD83DDC5EU: return &emojis[440]; + case 0xD83DDC5FU: return &emojis[441]; + case 0xD83DDC60U: return &emojis[442]; + case 0xD83DDC61U: return &emojis[443]; + case 0xD83DDC62U: return &emojis[444]; + case 0xD83DDC63U: return &emojis[445]; + case 0xD83DDC64U: return &emojis[446]; + case 0xD83DDC65U: return &emojis[447]; + case 0xD83DDC66U: return &emojis[448]; + case 0xD83DDC67U: return &emojis[449]; + case 0xD83DDC68U: return &emojis[450]; + case 0xD83DDC69U: return &emojis[451]; + case 0xD83DDC6AU: return &emojis[452]; + case 0xD83DDC6BU: return &emojis[453]; + case 0xD83DDC6CU: return &emojis[454]; + case 0xD83DDC6DU: return &emojis[455]; + case 0xD83DDC6EU: return &emojis[456]; + case 0xD83DDC6FU: return &emojis[457]; + case 0xD83DDC70U: return &emojis[458]; + case 0xD83DDC71U: return &emojis[459]; + case 0xD83DDC72U: return &emojis[460]; + case 0xD83DDC73U: return &emojis[461]; + case 0xD83DDC74U: return &emojis[462]; + case 0xD83DDC75U: return &emojis[463]; + case 0xD83DDC76U: return &emojis[464]; + case 0xD83DDC77U: return &emojis[465]; + case 0xD83DDC78U: return &emojis[466]; + case 0xD83DDC79U: return &emojis[467]; + case 0xD83DDC7AU: return &emojis[468]; + case 0xD83DDC7BU: return &emojis[469]; + case 0xD83DDC7CU: return &emojis[470]; + case 0xD83DDC7DU: return &emojis[471]; + case 0xD83DDC7EU: return &emojis[472]; + case 0xD83DDC7FU: return &emojis[473]; + case 0xD83DDC80U: return &emojis[474]; + case 0xD83DDC81U: return &emojis[475]; + case 0xD83DDC82U: return &emojis[476]; + case 0xD83DDC83U: return &emojis[477]; + case 0xD83DDC84U: return &emojis[478]; + case 0xD83DDC85U: return &emojis[479]; + case 0xD83DDC86U: return &emojis[480]; + case 0xD83DDC87U: return &emojis[481]; + case 0xD83DDC88U: return &emojis[482]; + case 0xD83DDC89U: return &emojis[483]; + case 0xD83DDC8AU: return &emojis[484]; + case 0xD83DDC8BU: return &emojis[485]; + case 0xD83DDC8CU: return &emojis[486]; + case 0xD83DDC8DU: return &emojis[487]; + case 0xD83DDC8EU: return &emojis[488]; + case 0xD83DDC8FU: return &emojis[489]; + case 0xD83DDC90U: return &emojis[490]; + case 0xD83DDC91U: return &emojis[491]; + case 0xD83DDC92U: return &emojis[492]; + case 0xD83DDC93U: return &emojis[493]; + case 0xD83DDC94U: return &emojis[494]; + case 0xD83DDC95U: return &emojis[495]; + case 0xD83DDC96U: return &emojis[496]; + case 0xD83DDC97U: return &emojis[497]; + case 0xD83DDC98U: return &emojis[498]; + case 0xD83DDC99U: return &emojis[499]; + case 0xD83DDC9AU: return &emojis[500]; + case 0xD83DDC9BU: return &emojis[501]; + case 0xD83DDC9CU: return &emojis[502]; + case 0xD83DDC9DU: return &emojis[503]; + case 0xD83DDC9EU: return &emojis[504]; + case 0xD83DDC9FU: return &emojis[505]; + case 0xD83DDCA0U: return &emojis[506]; + case 0xD83DDCA1U: return &emojis[507]; + case 0xD83DDCA2U: return &emojis[508]; + case 0xD83DDCA3U: return &emojis[509]; + case 0xD83DDCA4U: return &emojis[510]; + case 0xD83DDCA5U: return &emojis[511]; + case 0xD83DDCA6U: return &emojis[512]; + case 0xD83DDCA7U: return &emojis[513]; + case 0xD83DDCA8U: return &emojis[514]; + case 0xD83DDCA9U: return &emojis[515]; + case 0xD83DDCAAU: return &emojis[516]; + case 0xD83DDCABU: return &emojis[517]; + case 0xD83DDCACU: return &emojis[518]; + case 0xD83DDCADU: return &emojis[519]; + case 0xD83DDCAEU: return &emojis[520]; + case 0xD83DDCAFU: return &emojis[521]; + case 0xD83DDCB0U: return &emojis[522]; + case 0xD83DDCB1U: return &emojis[523]; + case 0xD83DDCB2U: return &emojis[524]; + case 0xD83DDCB3U: return &emojis[525]; + case 0xD83DDCB4U: return &emojis[526]; + case 0xD83DDCB5U: return &emojis[527]; + case 0xD83DDCB6U: return &emojis[528]; + case 0xD83DDCB7U: return &emojis[529]; + case 0xD83DDCB8U: return &emojis[530]; + case 0xD83DDCB9U: return &emojis[531]; + case 0xD83DDCBAU: return &emojis[532]; + case 0xD83DDCBBU: return &emojis[533]; + case 0xD83DDCBCU: return &emojis[534]; + case 0xD83DDCBDU: return &emojis[535]; + case 0xD83DDCBEU: return &emojis[536]; + case 0xD83DDCBFU: return &emojis[537]; + case 0xD83DDCC0U: return &emojis[538]; + case 0xD83DDCC1U: return &emojis[539]; + case 0xD83DDCC2U: return &emojis[540]; + case 0xD83DDCC3U: return &emojis[541]; + case 0xD83DDCC4U: return &emojis[542]; + case 0xD83DDCC5U: return &emojis[543]; + case 0xD83DDCC6U: return &emojis[544]; + case 0xD83DDCC7U: return &emojis[545]; + case 0xD83DDCC8U: return &emojis[546]; + case 0xD83DDCC9U: return &emojis[547]; + case 0xD83DDCCAU: return &emojis[548]; + case 0xD83DDCCBU: return &emojis[549]; + case 0xD83DDCCCU: return &emojis[550]; + case 0xD83DDCCDU: return &emojis[551]; + case 0xD83DDCCEU: return &emojis[552]; + case 0xD83DDCCFU: return &emojis[553]; + case 0xD83DDCD0U: return &emojis[554]; + case 0xD83DDCD1U: return &emojis[555]; + case 0xD83DDCD2U: return &emojis[556]; + case 0xD83DDCD3U: return &emojis[557]; + case 0xD83DDCD4U: return &emojis[558]; + case 0xD83DDCD5U: return &emojis[559]; + case 0xD83DDCD6U: return &emojis[560]; + case 0xD83DDCD7U: return &emojis[561]; + case 0xD83DDCD8U: return &emojis[562]; + case 0xD83DDCD9U: return &emojis[563]; + case 0xD83DDCDAU: return &emojis[564]; + case 0xD83DDCDBU: return &emojis[565]; + case 0xD83DDCDCU: return &emojis[566]; + case 0xD83DDCDDU: return &emojis[567]; + case 0xD83DDCDEU: return &emojis[568]; + case 0xD83DDCDFU: return &emojis[569]; + case 0xD83DDCE0U: return &emojis[570]; + case 0xD83DDCE1U: return &emojis[571]; + case 0xD83DDCE2U: return &emojis[572]; + case 0xD83DDCE3U: return &emojis[573]; + case 0xD83DDCE4U: return &emojis[574]; + case 0xD83DDCE5U: return &emojis[575]; + case 0xD83DDCE6U: return &emojis[576]; + case 0xD83DDCE7U: return &emojis[577]; + case 0xD83DDCE8U: return &emojis[578]; + case 0xD83DDCE9U: return &emojis[579]; + case 0xD83DDCEAU: return &emojis[580]; + case 0xD83DDCEBU: return &emojis[581]; + case 0xD83DDCECU: return &emojis[582]; + case 0xD83DDCEDU: return &emojis[583]; + case 0xD83DDCEEU: return &emojis[584]; + case 0xD83DDCEFU: return &emojis[585]; + case 0xD83DDCF0U: return &emojis[586]; + case 0xD83DDCF1U: return &emojis[587]; + case 0xD83DDCF2U: return &emojis[588]; + case 0xD83DDCF3U: return &emojis[589]; + case 0xD83DDCF4U: return &emojis[590]; + case 0xD83DDCF5U: return &emojis[591]; + case 0xD83DDCF6U: return &emojis[592]; + case 0xD83DDCF7U: return &emojis[593]; + case 0xD83DDCF9U: return &emojis[594]; + case 0xD83DDCFAU: return &emojis[595]; + case 0xD83DDCFBU: return &emojis[596]; + case 0xD83DDCFCU: return &emojis[597]; + case 0xD83DDD00U: return &emojis[598]; + case 0xD83DDD01U: return &emojis[599]; + case 0xD83DDD02U: return &emojis[600]; + case 0xD83DDD03U: return &emojis[601]; + case 0xD83DDD04U: return &emojis[602]; + case 0xD83DDD05U: return &emojis[603]; + case 0xD83DDD06U: return &emojis[604]; + case 0xD83DDD07U: return &emojis[605]; + case 0xD83DDD08U: return &emojis[606]; + case 0xD83DDD09U: return &emojis[607]; + case 0xD83DDD0AU: return &emojis[608]; + case 0xD83DDD0BU: return &emojis[609]; + case 0xD83DDD0CU: return &emojis[610]; + case 0xD83DDD0DU: return &emojis[611]; + case 0xD83DDD0EU: return &emojis[612]; + case 0xD83DDD0FU: return &emojis[613]; + case 0xD83DDD10U: return &emojis[614]; + case 0xD83DDD11U: return &emojis[615]; + case 0xD83DDD12U: return &emojis[616]; + case 0xD83DDD13U: return &emojis[617]; + case 0xD83DDD14U: return &emojis[618]; + case 0xD83DDD15U: return &emojis[619]; + case 0xD83DDD16U: return &emojis[620]; + case 0xD83DDD17U: return &emojis[621]; + case 0xD83DDD18U: return &emojis[622]; + case 0xD83DDD19U: return &emojis[623]; + case 0xD83DDD1AU: return &emojis[624]; + case 0xD83DDD1BU: return &emojis[625]; + case 0xD83DDD1CU: return &emojis[626]; + case 0xD83DDD1DU: return &emojis[627]; + case 0xD83DDD1EU: return &emojis[628]; + case 0xD83DDD1FU: return &emojis[629]; + case 0xD83DDD20U: return &emojis[630]; + case 0xD83DDD21U: return &emojis[631]; + case 0xD83DDD22U: return &emojis[632]; + case 0xD83DDD23U: return &emojis[633]; + case 0xD83DDD24U: return &emojis[634]; + case 0xD83DDD25U: return &emojis[635]; + case 0xD83DDD26U: return &emojis[636]; + case 0xD83DDD27U: return &emojis[637]; + case 0xD83DDD28U: return &emojis[638]; + case 0xD83DDD29U: return &emojis[639]; + case 0xD83DDD2AU: return &emojis[640]; + case 0xD83DDD2BU: return &emojis[641]; + case 0xD83DDD2CU: return &emojis[642]; + case 0xD83DDD2DU: return &emojis[643]; + case 0xD83DDD2EU: return &emojis[644]; + case 0xD83DDD2FU: return &emojis[645]; + case 0xD83DDD30U: return &emojis[646]; + case 0xD83DDD31U: return &emojis[647]; + case 0xD83DDD32U: return &emojis[648]; + case 0xD83DDD33U: return &emojis[649]; + case 0xD83DDD34U: return &emojis[650]; + case 0xD83DDD35U: return &emojis[651]; + case 0xD83DDD36U: return &emojis[652]; + case 0xD83DDD37U: return &emojis[653]; + case 0xD83DDD38U: return &emojis[654]; + case 0xD83DDD39U: return &emojis[655]; + case 0xD83DDD3AU: return &emojis[656]; + case 0xD83DDD3BU: return &emojis[657]; + case 0xD83DDD3CU: return &emojis[658]; + case 0xD83DDD3DU: return &emojis[659]; + case 0xD83DDD50U: return &emojis[660]; + case 0xD83DDD51U: return &emojis[661]; + case 0xD83DDD52U: return &emojis[662]; + case 0xD83DDD53U: return &emojis[663]; + case 0xD83DDD54U: return &emojis[664]; + case 0xD83DDD55U: return &emojis[665]; + case 0xD83DDD56U: return &emojis[666]; + case 0xD83DDD57U: return &emojis[667]; + case 0xD83DDD58U: return &emojis[668]; + case 0xD83DDD59U: return &emojis[669]; + case 0xD83DDD5AU: return &emojis[670]; + case 0xD83DDD5BU: return &emojis[671]; + case 0xD83DDD5CU: return &emojis[672]; + case 0xD83DDD5DU: return &emojis[673]; + case 0xD83DDD5EU: return &emojis[674]; + case 0xD83DDD5FU: return &emojis[675]; + case 0xD83DDD60U: return &emojis[676]; + case 0xD83DDD61U: return &emojis[677]; + case 0xD83DDD62U: return &emojis[678]; + case 0xD83DDD63U: return &emojis[679]; + case 0xD83DDD64U: return &emojis[680]; + case 0xD83DDD65U: return &emojis[681]; + case 0xD83DDD66U: return &emojis[682]; + case 0xD83DDD67U: return &emojis[683]; + case 0xD83DDDFBU: return &emojis[684]; + case 0xD83DDDFCU: return &emojis[685]; + case 0xD83DDDFDU: return &emojis[686]; + case 0xD83DDDFEU: return &emojis[687]; + case 0xD83DDDFFU: return &emojis[688]; + case 0xD83DDE00U: return &emojis[689]; + case 0xD83DDE01U: return &emojis[690]; + case 0xD83DDE02U: return &emojis[691]; + case 0xD83DDE03U: return &emojis[692]; + case 0xD83DDE04U: return &emojis[693]; + case 0xD83DDE05U: return &emojis[694]; + case 0xD83DDE06U: return &emojis[695]; + case 0xD83DDE07U: return &emojis[696]; + case 0xD83DDE08U: return &emojis[697]; + case 0xD83DDE09U: return &emojis[698]; + case 0xD83DDE0AU: return &emojis[699]; + case 0xD83DDE0BU: return &emojis[700]; + case 0xD83DDE0CU: return &emojis[701]; + case 0xD83DDE0DU: return &emojis[702]; + case 0xD83DDE0EU: return &emojis[703]; + case 0xD83DDE0FU: return &emojis[704]; + case 0xD83DDE10U: return &emojis[705]; + case 0xD83DDE11U: return &emojis[706]; + case 0xD83DDE12U: return &emojis[707]; + case 0xD83DDE13U: return &emojis[708]; + case 0xD83DDE14U: return &emojis[709]; + case 0xD83DDE15U: return &emojis[710]; + case 0xD83DDE16U: return &emojis[711]; + case 0xD83DDE17U: return &emojis[712]; + case 0xD83DDE18U: return &emojis[713]; + case 0xD83DDE19U: return &emojis[714]; + case 0xD83DDE1AU: return &emojis[715]; + case 0xD83DDE1BU: return &emojis[716]; + case 0xD83DDE1CU: return &emojis[717]; + case 0xD83DDE1DU: return &emojis[718]; + case 0xD83DDE1EU: return &emojis[719]; + case 0xD83DDE1FU: return &emojis[720]; + case 0xD83DDE20U: return &emojis[721]; + case 0xD83DDE21U: return &emojis[722]; + case 0xD83DDE22U: return &emojis[723]; + case 0xD83DDE23U: return &emojis[724]; + case 0xD83DDE24U: return &emojis[725]; + case 0xD83DDE25U: return &emojis[726]; + case 0xD83DDE26U: return &emojis[727]; + case 0xD83DDE27U: return &emojis[728]; + case 0xD83DDE28U: return &emojis[729]; + case 0xD83DDE29U: return &emojis[730]; + case 0xD83DDE2AU: return &emojis[731]; + case 0xD83DDE2BU: return &emojis[732]; + case 0xD83DDE2CU: return &emojis[733]; + case 0xD83DDE2DU: return &emojis[734]; + case 0xD83DDE2EU: return &emojis[735]; + case 0xD83DDE2FU: return &emojis[736]; + case 0xD83DDE30U: return &emojis[737]; + case 0xD83DDE31U: return &emojis[738]; + case 0xD83DDE32U: return &emojis[739]; + case 0xD83DDE33U: return &emojis[740]; + case 0xD83DDE34U: return &emojis[741]; + case 0xD83DDE35U: return &emojis[742]; + case 0xD83DDE36U: return &emojis[743]; + case 0xD83DDE37U: return &emojis[744]; + case 0xD83DDE38U: return &emojis[745]; + case 0xD83DDE39U: return &emojis[746]; + case 0xD83DDE3AU: return &emojis[747]; + case 0xD83DDE3BU: return &emojis[748]; + case 0xD83DDE3CU: return &emojis[749]; + case 0xD83DDE3DU: return &emojis[750]; + case 0xD83DDE3EU: return &emojis[751]; + case 0xD83DDE3FU: return &emojis[752]; + case 0xD83DDE40U: return &emojis[753]; + case 0xD83DDE45U: return &emojis[754]; + case 0xD83DDE46U: return &emojis[755]; + case 0xD83DDE47U: return &emojis[756]; + case 0xD83DDE48U: return &emojis[757]; + case 0xD83DDE49U: return &emojis[758]; + case 0xD83DDE4AU: return &emojis[759]; + case 0xD83DDE4BU: return &emojis[760]; + case 0xD83DDE4CU: return &emojis[761]; + case 0xD83DDE4DU: return &emojis[762]; + case 0xD83DDE4EU: return &emojis[763]; + case 0xD83DDE4FU: return &emojis[764]; + case 0xD83DDE80U: return &emojis[765]; + case 0xD83DDE81U: return &emojis[766]; + case 0xD83DDE82U: return &emojis[767]; + case 0xD83DDE83U: return &emojis[768]; + case 0xD83DDE84U: return &emojis[769]; + case 0xD83DDE85U: return &emojis[770]; + case 0xD83DDE86U: return &emojis[771]; + case 0xD83DDE87U: return &emojis[772]; + case 0xD83DDE88U: return &emojis[773]; + case 0xD83DDE89U: return &emojis[774]; + case 0xD83DDE8AU: return &emojis[775]; + case 0xD83DDE8BU: return &emojis[776]; + case 0xD83DDE8CU: return &emojis[777]; + case 0xD83DDE8DU: return &emojis[778]; + case 0xD83DDE8EU: return &emojis[779]; + case 0xD83DDE8FU: return &emojis[780]; + case 0xD83DDE90U: return &emojis[781]; + case 0xD83DDE91U: return &emojis[782]; + case 0xD83DDE92U: return &emojis[783]; + case 0xD83DDE93U: return &emojis[784]; + case 0xD83DDE94U: return &emojis[785]; + case 0xD83DDE95U: return &emojis[786]; + case 0xD83DDE96U: return &emojis[787]; + case 0xD83DDE97U: return &emojis[788]; + case 0xD83DDE98U: return &emojis[789]; + case 0xD83DDE99U: return &emojis[790]; + case 0xD83DDE9AU: return &emojis[791]; + case 0xD83DDE9BU: return &emojis[792]; + case 0xD83DDE9CU: return &emojis[793]; + case 0xD83DDE9DU: return &emojis[794]; + case 0xD83DDE9EU: return &emojis[795]; + case 0xD83DDE9FU: return &emojis[796]; + case 0xD83DDEA0U: return &emojis[797]; + case 0xD83DDEA1U: return &emojis[798]; + case 0xD83DDEA2U: return &emojis[799]; + case 0xD83DDEA3U: return &emojis[800]; + case 0xD83DDEA4U: return &emojis[801]; + case 0xD83DDEA5U: return &emojis[802]; + case 0xD83DDEA6U: return &emojis[803]; + case 0xD83DDEA7U: return &emojis[804]; + case 0xD83DDEA8U: return &emojis[805]; + case 0xD83DDEA9U: return &emojis[806]; + case 0xD83DDEAAU: return &emojis[807]; + case 0xD83DDEABU: return &emojis[808]; + case 0xD83DDEACU: return &emojis[809]; + case 0xD83DDEADU: return &emojis[810]; + case 0xD83DDEAEU: return &emojis[811]; + case 0xD83DDEAFU: return &emojis[812]; + case 0xD83DDEB0U: return &emojis[813]; + case 0xD83DDEB1U: return &emojis[814]; + case 0xD83DDEB2U: return &emojis[815]; + case 0xD83DDEB3U: return &emojis[816]; + case 0xD83DDEB4U: return &emojis[817]; + case 0xD83DDEB5U: return &emojis[818]; + case 0xD83DDEB6U: return &emojis[819]; + case 0xD83DDEB7U: return &emojis[820]; + case 0xD83DDEB8U: return &emojis[821]; + case 0xD83DDEB9U: return &emojis[822]; + case 0xD83DDEBAU: return &emojis[823]; + case 0xD83DDEBBU: return &emojis[824]; + case 0xD83DDEBCU: return &emojis[825]; + case 0xD83DDEBDU: return &emojis[826]; + case 0xD83DDEBEU: return &emojis[827]; + case 0xD83DDEBFU: return &emojis[828]; + case 0xD83DDEC0U: return &emojis[829]; + case 0xD83DDEC1U: return &emojis[830]; + case 0xD83DDEC2U: return &emojis[831]; + case 0xD83DDEC3U: return &emojis[832]; + case 0xD83DDEC4U: return &emojis[833]; + case 0xD83DDEC5U: return &emojis[834]; + case 0xFFFF0000U: return &emojis[835]; + case 0xFFFF0001U: return &emojis[836]; + case 0xFFFF0002U: return &emojis[837]; + case 0xFFFF0003U: return &emojis[838]; + case 0xFFFF0004U: return &emojis[839]; + case 0xFFFF0005U: return &emojis[840]; + case 0xFFFF0006U: return &emojis[841]; + case 0xFFFF0007U: return &emojis[842]; + case 0xFFFF0008U: return &emojis[843]; + case 0xFFFF0009U: return &emojis[844]; + case 0xFFFF000AU: return &emojis[845]; + case 0xFFFF000BU: return &emojis[846]; + case 0xFFFF000CU: return &emojis[847]; + case 0xFFFF000DU: return &emojis[848]; + case 0xFFFF000EU: return &emojis[849]; + case 0xFFFF000FU: return &emojis[850]; + case 0xFFFF0010U: return &emojis[851]; + case 0xFFFF0011U: return &emojis[852]; + case 0xD83CDDE6U: return TwoSymbolEmoji; + case 0xD83CDDE7U: return TwoSymbolEmoji; + case 0xD83CDDE8U: return TwoSymbolEmoji; + case 0xD83CDDE9U: return TwoSymbolEmoji; + case 0xD83CDDEAU: return TwoSymbolEmoji; + case 0xD83CDDEBU: return TwoSymbolEmoji; + case 0xD83CDDECU: return TwoSymbolEmoji; + case 0xD83CDDEDU: return TwoSymbolEmoji; + case 0xD83CDDEEU: return TwoSymbolEmoji; + case 0xD83CDDEFU: return TwoSymbolEmoji; + case 0xD83CDDF0U: return TwoSymbolEmoji; + case 0xD83CDDF2U: return TwoSymbolEmoji; + case 0xD83CDDF3U: return TwoSymbolEmoji; + case 0xD83CDDF5U: return TwoSymbolEmoji; + case 0xD83CDDF7U: return TwoSymbolEmoji; + case 0xD83CDDF8U: return TwoSymbolEmoji; + case 0xD83CDDF9U: return TwoSymbolEmoji; + case 0xD83CDDFAU: return TwoSymbolEmoji; + case 0xD83CDDFBU: return TwoSymbolEmoji; + case 0xD83CDDFFU: return TwoSymbolEmoji; } return 0; } -void findEmoji(const QChar *ch, const QChar *e, const QChar *&newEmojiEnd, uint32 &emojiCode) { +EmojiPtr emojiGet(uint32 code, uint32 code2) { + if (code < 0xD83CDDE6U || code > 0xD83CDDFFU) return 0; + + switch (code) { + case 0xD83CDDE6U: switch (code2) { + case 0xD83CDDEAU: return &emojis[873]; + case 0xD83CDDF9U: return &emojis[874]; + case 0xD83CDDFAU: return &emojis[875]; + default: return 0; + } break; + case 0xD83CDDE7U: switch (code2) { + case 0xD83CDDEAU: return &emojis[876]; + case 0xD83CDDF7U: return &emojis[877]; + default: return 0; + } break; + case 0xD83CDDE8U: switch (code2) { + case 0xD83CDDE6U: return &emojis[878]; + case 0xD83CDDEDU: return &emojis[879]; + case 0xD83CDDF1U: return &emojis[880]; + case 0xD83CDDF3U: return &emojis[881]; + case 0xD83CDDF4U: return &emojis[882]; + default: return 0; + } break; + case 0xD83CDDE9U: switch (code2) { + case 0xD83CDDEAU: return &emojis[883]; + case 0xD83CDDF0U: return &emojis[884]; + default: return 0; + } break; + case 0xD83CDDEAU: switch (code2) { + case 0xD83CDDF8U: return &emojis[885]; + default: return 0; + } break; + case 0xD83CDDEBU: switch (code2) { + case 0xD83CDDEEU: return &emojis[886]; + case 0xD83CDDF7U: return &emojis[887]; + default: return 0; + } break; + case 0xD83CDDECU: switch (code2) { + case 0xD83CDDE7U: return &emojis[888]; + default: return 0; + } break; + case 0xD83CDDEDU: switch (code2) { + case 0xD83CDDF0U: return &emojis[889]; + default: return 0; + } break; + case 0xD83CDDEEU: switch (code2) { + case 0xD83CDDE9U: return &emojis[890]; + case 0xD83CDDEAU: return &emojis[891]; + case 0xD83CDDF1U: return &emojis[892]; + case 0xD83CDDF3U: return &emojis[893]; + case 0xD83CDDF9U: return &emojis[894]; + default: return 0; + } break; + case 0xD83CDDEFU: switch (code2) { + case 0xD83CDDF5U: return &emojis[895]; + default: return 0; + } break; + case 0xD83CDDF0U: switch (code2) { + case 0xD83CDDF7U: return &emojis[896]; + default: return 0; + } break; + case 0xD83CDDF2U: switch (code2) { + case 0xD83CDDF4U: return &emojis[897]; + case 0xD83CDDFDU: return &emojis[898]; + case 0xD83CDDFEU: return &emojis[899]; + default: return 0; + } break; + case 0xD83CDDF3U: switch (code2) { + case 0xD83CDDF1U: return &emojis[900]; + case 0xD83CDDF4U: return &emojis[901]; + case 0xD83CDDFFU: return &emojis[902]; + default: return 0; + } break; + case 0xD83CDDF5U: switch (code2) { + case 0xD83CDDEDU: return &emojis[903]; + case 0xD83CDDF1U: return &emojis[904]; + case 0xD83CDDF7U: return &emojis[905]; + case 0xD83CDDF9U: return &emojis[906]; + default: return 0; + } break; + case 0xD83CDDF7U: switch (code2) { + case 0xD83CDDFAU: return &emojis[907]; + default: return 0; + } break; + case 0xD83CDDF8U: switch (code2) { + case 0xD83CDDE6U: return &emojis[908]; + case 0xD83CDDEAU: return &emojis[909]; + case 0xD83CDDECU: return &emojis[910]; + default: return 0; + } break; + case 0xD83CDDF9U: switch (code2) { + case 0xD83CDDF7U: return &emojis[911]; + default: return 0; + } break; + case 0xD83CDDFAU: switch (code2) { + case 0xD83CDDF8U: return &emojis[912]; + default: return 0; + } break; + case 0xD83CDDFBU: switch (code2) { + case 0xD83CDDF3U: return &emojis[913]; + default: return 0; + } break; + case 0xD83CDDFFU: switch (code2) { + case 0xD83CDDE6U: return &emojis[914]; + default: return 0; + } break; + } + + return 0; +} + +EmojiPtr emojiGet(EmojiPtr emoji, uint32 color) { + if (!emoji || ((emoji->color & 0xFFFF0000U) != 0xFFFF0000U)) return emoji; + + int index = 0; + switch (color) { + case 0xD83CDFFB: index = 0; break; + case 0xD83CDFFC: index = 1; break; + case 0xD83CDFFD: index = 2; break; + case 0xD83CDFFE: index = 3; break; + case 0xD83CDFFF: index = 4; break; + default: return emoji; + } + + return &emojis[(emoji->color & 0xFFFFU) + index]; +} + +EmojiPtr emojiGet(const QChar *from, const QChar *end) { + static const int sequenceOffset = 835; + + if (end < from + 8 || (from + 2)->unicode() != 0x200D || (from + 5)->unicode() != 0x200D) return 0; + + static const uint32 man = 0xD83DDC68, woman = 0xD83DDC69, boy = 0xD83DDC66, girl = 0xD83DDC67, heart = 0x2764FE0F, kiss = 0xD83DDC8B; + uint32 one = (uint32(from->unicode()) << 16) | uint32((from + 1)->unicode()), two = (uint32((from + 3)->unicode()) << 16) | uint32((from + 4)->unicode()), three = (uint32((from + 6)->unicode()) << 16) | uint32((from + 7)->unicode()); + + if (one != man && one != woman) return 0; + + if (end > from + 10 && (from + 8)->unicode() == 0x200D) { + uint32 four = (uint32((from + 9)->unicode()) << 16) | uint32((from + 10)->unicode()); + + if (one == man) { + if (two == man) { + if (three == girl) { + if (four == girl) return &emojis[sequenceOffset + 13]; + if (four == boy) return &emojis[sequenceOffset + 11]; + } else if (three == boy) { + if (four == boy) return &emojis[sequenceOffset + 12]; + } + } else if (two == woman) { + if (three == girl) { + if (four == girl) return &emojis[sequenceOffset + 3]; + if (four == boy) return &emojis[sequenceOffset + 1]; + } else if (three == boy) { + if (four == boy) return &emojis[sequenceOffset + 2]; + } + } else if (two == heart) { + if (three == kiss && four == man) return &emojis[sequenceOffset + 17]; + } + } else { + if (two == woman) { + if (three == girl) { + if (four == girl) return &emojis[sequenceOffset + 8]; + if (four == boy) return &emojis[sequenceOffset + 6]; + } else if (three == boy) { + if (four == boy) return &emojis[sequenceOffset + 7]; + } + } else if (two == heart) { + if (three == kiss && four == woman) return &emojis[sequenceOffset + 16]; + } + } + } + if (one == man) { + if (two == man) { + if (three == girl) return &emojis[sequenceOffset + 10]; + if (three == boy) return &emojis[sequenceOffset + 9]; + } else if (two == woman) { + if (three == girl) return &emojis[sequenceOffset + 0]; + } else if (two == heart) { + if (three == man) return &emojis[sequenceOffset + 15]; + } + } else { + if (two == woman) { + if (three == girl) return &emojis[sequenceOffset + 5]; + if (three == boy) return &emojis[sequenceOffset + 4]; + } else if (two == heart) { + if (three == woman) return &emojis[sequenceOffset + 14]; + } + } + return 0; +} + +QString emojiGetSequence(int index) { + static QVector sequences; + if (sequences.isEmpty()) { + sequences.reserve(18); + + sequences.push_back(QString::fromUtf8("\xf0\x9f\x91\xa8\xe2\x80\x8d\xf0\x9f\x91\xa9\xe2\x80\x8d\xf0\x9f\x91\xa7")); + sequences.push_back(QString::fromUtf8("\xf0\x9f\x91\xa8\xe2\x80\x8d\xf0\x9f\x91\xa9\xe2\x80\x8d\xf0\x9f\x91\xa7\xe2\x80\x8d\xf0\x9f\x91\xa6")); + sequences.push_back(QString::fromUtf8("\xf0\x9f\x91\xa8\xe2\x80\x8d\xf0\x9f\x91\xa9\xe2\x80\x8d\xf0\x9f\x91\xa6\xe2\x80\x8d\xf0\x9f\x91\xa6")); + sequences.push_back(QString::fromUtf8("\xf0\x9f\x91\xa8\xe2\x80\x8d\xf0\x9f\x91\xa9\xe2\x80\x8d\xf0\x9f\x91\xa7\xe2\x80\x8d\xf0\x9f\x91\xa7")); + sequences.push_back(QString::fromUtf8("\xf0\x9f\x91\xa9\xe2\x80\x8d\xf0\x9f\x91\xa9\xe2\x80\x8d\xf0\x9f\x91\xa6")); + sequences.push_back(QString::fromUtf8("\xf0\x9f\x91\xa9\xe2\x80\x8d\xf0\x9f\x91\xa9\xe2\x80\x8d\xf0\x9f\x91\xa7")); + sequences.push_back(QString::fromUtf8("\xf0\x9f\x91\xa9\xe2\x80\x8d\xf0\x9f\x91\xa9\xe2\x80\x8d\xf0\x9f\x91\xa7\xe2\x80\x8d\xf0\x9f\x91\xa6")); + sequences.push_back(QString::fromUtf8("\xf0\x9f\x91\xa9\xe2\x80\x8d\xf0\x9f\x91\xa9\xe2\x80\x8d\xf0\x9f\x91\xa6\xe2\x80\x8d\xf0\x9f\x91\xa6")); + sequences.push_back(QString::fromUtf8("\xf0\x9f\x91\xa9\xe2\x80\x8d\xf0\x9f\x91\xa9\xe2\x80\x8d\xf0\x9f\x91\xa7\xe2\x80\x8d\xf0\x9f\x91\xa7")); + sequences.push_back(QString::fromUtf8("\xf0\x9f\x91\xa8\xe2\x80\x8d\xf0\x9f\x91\xa8\xe2\x80\x8d\xf0\x9f\x91\xa6")); + sequences.push_back(QString::fromUtf8("\xf0\x9f\x91\xa8\xe2\x80\x8d\xf0\x9f\x91\xa8\xe2\x80\x8d\xf0\x9f\x91\xa7")); + sequences.push_back(QString::fromUtf8("\xf0\x9f\x91\xa8\xe2\x80\x8d\xf0\x9f\x91\xa8\xe2\x80\x8d\xf0\x9f\x91\xa7\xe2\x80\x8d\xf0\x9f\x91\xa6")); + sequences.push_back(QString::fromUtf8("\xf0\x9f\x91\xa8\xe2\x80\x8d\xf0\x9f\x91\xa8\xe2\x80\x8d\xf0\x9f\x91\xa6\xe2\x80\x8d\xf0\x9f\x91\xa6")); + sequences.push_back(QString::fromUtf8("\xf0\x9f\x91\xa8\xe2\x80\x8d\xf0\x9f\x91\xa8\xe2\x80\x8d\xf0\x9f\x91\xa7\xe2\x80\x8d\xf0\x9f\x91\xa7")); + sequences.push_back(QString::fromUtf8("\xf0\x9f\x91\xa9\xe2\x80\x8d\xe2\x9d\xa4\xef\xb8\x8f\xe2\x80\x8d\xf0\x9f\x91\xa9")); + sequences.push_back(QString::fromUtf8("\xf0\x9f\x91\xa8\xe2\x80\x8d\xe2\x9d\xa4\xef\xb8\x8f\xe2\x80\x8d\xf0\x9f\x91\xa8")); + sequences.push_back(QString::fromUtf8("\xf0\x9f\x91\xa9\xe2\x80\x8d\xe2\x9d\xa4\xef\xb8\x8f\xe2\x80\x8d\xf0\x9f\x92\x8b\xe2\x80\x8d\xf0\x9f\x91\xa9")); + sequences.push_back(QString::fromUtf8("\xf0\x9f\x91\xa8\xe2\x80\x8d\xe2\x9d\xa4\xef\xb8\x8f\xe2\x80\x8d\xf0\x9f\x92\x8b\xe2\x80\x8d\xf0\x9f\x91\xa8")); + } + + return (index >= 0 && index < sequences.size()) ? sequences.at(index) : QString(); +} + +void emojiFind(const QChar *ch, const QChar *e, const QChar *&newEmojiEnd, uint32 &emojiCode) { switch (ch->unicode()) { case '}': if (ch + 1 != e) switch ((ch + 1)->unicode()) { @@ -4754,202 +2795,180 @@ void findEmoji(const QChar *ch, const QChar *e, const QChar *&newEmojiEnd, uint3 } } +int emojiPackCount(DBIEmojiTab tab) { + switch (tab) { + case dbietRecent : return cGetRecentEmojis().size(); + case dbietPeople : return 153; + case dbietNature : return 125; + case dbietFood : return 58; + case dbietCelebration: return 39; + case dbietActivity : return 53; + case dbietTravel : return 122; + case dbietObjects : return 345; + }; + return 0; +} + EmojiPack emojiPack(DBIEmojiTab tab) { switch (tab) { case dbietPeople: { static QVector vPeople; if (vPeople.isEmpty()) { - vPeople.resize(189); - vPeople[0] = &emojis[703]; - vPeople[1] = &emojis[702]; - vPeople[2] = &emojis[699]; - vPeople[3] = &emojis[709]; - vPeople[4] = &emojis[38]; - vPeople[5] = &emojis[708]; - vPeople[6] = &emojis[712]; - vPeople[7] = &emojis[723]; - vPeople[8] = &emojis[725]; - vPeople[9] = &emojis[722]; - vPeople[10] = &emojis[724]; - vPeople[11] = &emojis[727]; - vPeople[12] = &emojis[728]; - vPeople[13] = &emojis[726]; - vPeople[14] = &emojis[750]; - vPeople[15] = &emojis[700]; - vPeople[16] = &emojis[719]; - vPeople[17] = &emojis[711]; - vPeople[18] = &emojis[717]; - vPeople[19] = &emojis[729]; - vPeople[20] = &emojis[734]; - vPeople[21] = &emojis[733]; - vPeople[22] = &emojis[701]; - vPeople[23] = &emojis[744]; - vPeople[24] = &emojis[741]; - vPeople[25] = &emojis[736]; - vPeople[26] = &emojis[747]; - vPeople[27] = &emojis[704]; - vPeople[28] = &emojis[718]; - vPeople[29] = &emojis[740]; - vPeople[30] = &emojis[742]; - vPeople[31] = &emojis[739]; - vPeople[32] = &emojis[748]; - vPeople[33] = &emojis[731]; - vPeople[34] = &emojis[732]; - vPeople[35] = &emojis[735]; - vPeople[36] = &emojis[721]; - vPeople[37] = &emojis[705]; - vPeople[38] = &emojis[710]; - vPeople[39] = &emojis[754]; - vPeople[40] = &emojis[713]; - vPeople[41] = &emojis[751]; - vPeople[42] = &emojis[752]; - vPeople[43] = &emojis[749]; - vPeople[44] = &emojis[730]; - vPeople[45] = &emojis[737]; - vPeople[46] = &emojis[738]; - vPeople[47] = &emojis[707]; - vPeople[48] = &emojis[483]; - vPeople[49] = &emojis[745]; - vPeople[50] = &emojis[743]; - vPeople[51] = &emojis[715]; - vPeople[52] = &emojis[720]; - vPeople[53] = &emojis[746]; - vPeople[54] = &emojis[753]; - vPeople[55] = &emojis[706]; - vPeople[56] = &emojis[714]; - vPeople[57] = &emojis[716]; - vPeople[58] = &emojis[470]; - vPeople[59] = &emojis[471]; - vPeople[60] = &emojis[466]; - vPeople[61] = &emojis[475]; - vPeople[62] = &emojis[486]; - vPeople[63] = &emojis[474]; - vPeople[64] = &emojis[458]; - vPeople[65] = &emojis[459]; - vPeople[66] = &emojis[460]; - vPeople[67] = &emojis[461]; - vPeople[68] = &emojis[472]; - vPeople[69] = &emojis[473]; - vPeople[70] = &emojis[469]; - vPeople[71] = &emojis[480]; - vPeople[72] = &emojis[476]; - vPeople[73] = &emojis[757]; - vPeople[74] = &emojis[755]; - vPeople[75] = &emojis[758]; - vPeople[76] = &emojis[760]; - vPeople[77] = &emojis[759]; - vPeople[78] = &emojis[763]; - vPeople[79] = &emojis[762]; - vPeople[80] = &emojis[756]; - vPeople[81] = &emojis[761]; - vPeople[82] = &emojis[477]; - vPeople[83] = &emojis[478]; - vPeople[84] = &emojis[767]; - vPeople[85] = &emojis[768]; - vPeople[86] = &emojis[769]; - vPeople[87] = &emojis[484]; - vPeople[88] = &emojis[481]; - vPeople[89] = &emojis[525]; - vPeople[90] = &emojis[645]; - vPeople[91] = &emojis[86]; - vPeople[92] = &emojis[201]; - vPeople[93] = &emojis[527]; - vPeople[94] = &emojis[521]; - vPeople[95] = &emojis[518]; - vPeople[96] = &emojis[522]; - vPeople[97] = &emojis[523]; - vPeople[98] = &emojis[520]; - vPeople[99] = &emojis[524]; - vPeople[100] = &emojis[422]; - vPeople[101] = &emojis[421]; - vPeople[102] = &emojis[423]; - vPeople[103] = &emojis[425]; - vPeople[104] = &emojis[424]; - vPeople[105] = &emojis[433]; - vPeople[106] = &emojis[434]; - vPeople[107] = &emojis[432]; - vPeople[108] = &emojis[430]; - vPeople[109] = &emojis[79]; - vPeople[110] = &emojis[81]; - vPeople[111] = &emojis[431]; - vPeople[112] = &emojis[80]; - vPeople[113] = &emojis[436]; - vPeople[114] = &emojis[426]; - vPeople[115] = &emojis[427]; - vPeople[116] = &emojis[429]; - vPeople[117] = &emojis[428]; - vPeople[118] = &emojis[771]; - vPeople[119] = &emojis[774]; - vPeople[120] = &emojis[37]; - vPeople[121] = &emojis[435]; - vPeople[122] = &emojis[526]; - vPeople[123] = &emojis[829]; - vPeople[124] = &emojis[334]; - vPeople[125] = &emojis[487]; - vPeople[126] = &emojis[463]; - vPeople[127] = &emojis[462]; - vPeople[128] = &emojis[464]; - vPeople[129] = &emojis[465]; - vPeople[130] = &emojis[499]; - vPeople[131] = &emojis[501]; - vPeople[132] = &emojis[467]; - vPeople[133] = &emojis[765]; - vPeople[134] = &emojis[764]; - vPeople[135] = &emojis[485]; - vPeople[136] = &emojis[770]; - vPeople[137] = &emojis[490]; - vPeople[138] = &emojis[491]; - vPeople[139] = &emojis[489]; - vPeople[140] = &emojis[468]; - vPeople[141] = &emojis[773]; - vPeople[142] = &emojis[772]; - vPeople[143] = &emojis[766]; - vPeople[144] = &emojis[308]; - vPeople[145] = &emojis[437]; - vPeople[146] = &emojis[438]; - vPeople[147] = &emojis[451]; - vPeople[148] = &emojis[450]; - vPeople[149] = &emojis[453]; - vPeople[150] = &emojis[452]; - vPeople[151] = &emojis[454]; - vPeople[152] = &emojis[441]; - vPeople[153] = &emojis[440]; - vPeople[154] = &emojis[446]; - vPeople[155] = &emojis[443]; - vPeople[156] = &emojis[328]; - vPeople[157] = &emojis[442]; - vPeople[158] = &emojis[444]; - vPeople[159] = &emojis[445]; - vPeople[160] = &emojis[544]; - vPeople[161] = &emojis[448]; - vPeople[162] = &emojis[449]; - vPeople[163] = &emojis[447]; - vPeople[164] = &emojis[439]; - vPeople[165] = &emojis[279]; - vPeople[166] = &emojis[172]; - vPeople[167] = &emojis[488]; - vPeople[168] = &emojis[511]; - vPeople[169] = &emojis[509]; - vPeople[170] = &emojis[512]; - vPeople[171] = &emojis[510]; - vPeople[172] = &emojis[97]; - vPeople[173] = &emojis[504]; - vPeople[174] = &emojis[507]; - vPeople[175] = &emojis[503]; - vPeople[176] = &emojis[505]; - vPeople[177] = &emojis[506]; - vPeople[178] = &emojis[514]; - vPeople[179] = &emojis[508]; - vPeople[180] = &emojis[496]; - vPeople[181] = &emojis[495]; - vPeople[182] = &emojis[497]; - vPeople[183] = &emojis[498]; - vPeople[184] = &emojis[456]; - vPeople[185] = &emojis[457]; - vPeople[186] = &emojis[528]; - vPeople[187] = &emojis[455]; - vPeople[188] = &emojis[529]; + vPeople.resize(153); + vPeople[0] = &emojis[689]; + vPeople[1] = &emojis[690]; + vPeople[2] = &emojis[691]; + vPeople[3] = &emojis[692]; + vPeople[4] = &emojis[693]; + vPeople[5] = &emojis[694]; + vPeople[6] = &emojis[695]; + vPeople[7] = &emojis[696]; + vPeople[8] = &emojis[697]; + vPeople[9] = &emojis[473]; + vPeople[10] = &emojis[698]; + vPeople[11] = &emojis[699]; + vPeople[12] = &emojis[38]; + vPeople[13] = &emojis[700]; + vPeople[14] = &emojis[701]; + vPeople[15] = &emojis[702]; + vPeople[16] = &emojis[703]; + vPeople[17] = &emojis[704]; + vPeople[18] = &emojis[705]; + vPeople[19] = &emojis[706]; + vPeople[20] = &emojis[707]; + vPeople[21] = &emojis[708]; + vPeople[22] = &emojis[709]; + vPeople[23] = &emojis[710]; + vPeople[24] = &emojis[711]; + vPeople[25] = &emojis[712]; + vPeople[26] = &emojis[713]; + vPeople[27] = &emojis[714]; + vPeople[28] = &emojis[715]; + vPeople[29] = &emojis[716]; + vPeople[30] = &emojis[717]; + vPeople[31] = &emojis[718]; + vPeople[32] = &emojis[719]; + vPeople[33] = &emojis[720]; + vPeople[34] = &emojis[721]; + vPeople[35] = &emojis[722]; + vPeople[36] = &emojis[723]; + vPeople[37] = &emojis[724]; + vPeople[38] = &emojis[725]; + vPeople[39] = &emojis[726]; + vPeople[40] = &emojis[727]; + vPeople[41] = &emojis[728]; + vPeople[42] = &emojis[729]; + vPeople[43] = &emojis[730]; + vPeople[44] = &emojis[731]; + vPeople[45] = &emojis[732]; + vPeople[46] = &emojis[733]; + vPeople[47] = &emojis[734]; + vPeople[48] = &emojis[735]; + vPeople[49] = &emojis[736]; + vPeople[50] = &emojis[737]; + vPeople[51] = &emojis[738]; + vPeople[52] = &emojis[739]; + vPeople[53] = &emojis[740]; + vPeople[54] = &emojis[741]; + vPeople[55] = &emojis[742]; + vPeople[56] = &emojis[743]; + vPeople[57] = &emojis[744]; + vPeople[58] = &emojis[745]; + vPeople[59] = &emojis[746]; + vPeople[60] = &emojis[747]; + vPeople[61] = &emojis[748]; + vPeople[62] = &emojis[749]; + vPeople[63] = &emojis[750]; + vPeople[64] = &emojis[751]; + vPeople[65] = &emojis[752]; + vPeople[66] = &emojis[753]; + vPeople[67] = &emojis[445]; + vPeople[68] = &emojis[446]; + vPeople[69] = &emojis[447]; + vPeople[70] = &emojis[464]; + vPeople[71] = &emojis[448]; + vPeople[72] = &emojis[449]; + vPeople[73] = &emojis[450]; + vPeople[74] = &emojis[451]; + vPeople[75] = &emojis[452]; + vPeople[76] = &emojis[835]; + vPeople[77] = &emojis[836]; + vPeople[78] = &emojis[837]; + vPeople[79] = &emojis[838]; + vPeople[80] = &emojis[839]; + vPeople[81] = &emojis[840]; + vPeople[82] = &emojis[841]; + vPeople[83] = &emojis[842]; + vPeople[84] = &emojis[843]; + vPeople[85] = &emojis[844]; + vPeople[86] = &emojis[845]; + vPeople[87] = &emojis[846]; + vPeople[88] = &emojis[847]; + vPeople[89] = &emojis[848]; + vPeople[90] = &emojis[453]; + vPeople[91] = &emojis[454]; + vPeople[92] = &emojis[455]; + vPeople[93] = &emojis[457]; + vPeople[94] = &emojis[458]; + vPeople[95] = &emojis[459]; + vPeople[96] = &emojis[460]; + vPeople[97] = &emojis[461]; + vPeople[98] = &emojis[462]; + vPeople[99] = &emojis[463]; + vPeople[100] = &emojis[456]; + vPeople[101] = &emojis[465]; + vPeople[102] = &emojis[466]; + vPeople[103] = &emojis[476]; + vPeople[104] = &emojis[470]; + vPeople[105] = &emojis[274]; + vPeople[106] = &emojis[469]; + vPeople[107] = &emojis[467]; + vPeople[108] = &emojis[468]; + vPeople[109] = &emojis[515]; + vPeople[110] = &emojis[474]; + vPeople[111] = &emojis[471]; + vPeople[112] = &emojis[472]; + vPeople[113] = &emojis[756]; + vPeople[114] = &emojis[475]; + vPeople[115] = &emojis[754]; + vPeople[116] = &emojis[755]; + vPeople[117] = &emojis[760]; + vPeople[118] = &emojis[763]; + vPeople[119] = &emojis[762]; + vPeople[120] = &emojis[480]; + vPeople[121] = &emojis[481]; + vPeople[122] = &emojis[491]; + vPeople[123] = &emojis[849]; + vPeople[124] = &emojis[850]; + vPeople[125] = &emojis[489]; + vPeople[126] = &emojis[851]; + vPeople[127] = &emojis[852]; + vPeople[128] = &emojis[761]; + vPeople[129] = &emojis[425]; + vPeople[130] = &emojis[412]; + vPeople[131] = &emojis[411]; + vPeople[132] = &emojis[413]; + vPeople[133] = &emojis[414]; + vPeople[134] = &emojis[485]; + vPeople[135] = &emojis[415]; + vPeople[136] = &emojis[479]; + vPeople[137] = &emojis[421]; + vPeople[138] = &emojis[423]; + vPeople[139] = &emojis[424]; + vPeople[140] = &emojis[37]; + vPeople[141] = &emojis[416]; + vPeople[142] = &emojis[417]; + vPeople[143] = &emojis[418]; + vPeople[144] = &emojis[419]; + vPeople[145] = &emojis[422]; + vPeople[146] = &emojis[81]; + vPeople[147] = &emojis[420]; + vPeople[148] = &emojis[79]; + vPeople[149] = &emojis[80]; + vPeople[150] = &emojis[516]; + vPeople[151] = &emojis[426]; + vPeople[152] = &emojis[764]; } return vPeople; } break; @@ -4957,691 +2976,793 @@ EmojiPack emojiPack(DBIEmojiTab tab) { case dbietNature: { static QVector vNature; if (vNature.isEmpty()) { - vNature.resize(116); - vNature[0] = &emojis[412]; - vNature[1] = &emojis[416]; - vNature[2] = &emojis[407]; - vNature[3] = &emojis[403]; - vNature[4] = &emojis[415]; - vNature[5] = &emojis[406]; - vNature[6] = &emojis[414]; - vNature[7] = &emojis[405]; - vNature[8] = &emojis[398]; - vNature[9] = &emojis[417]; - vNature[10] = &emojis[413]; - vNature[11] = &emojis[419]; - vNature[12] = &emojis[404]; - vNature[13] = &emojis[381]; - vNature[14] = &emojis[411]; - vNature[15] = &emojis[376]; - vNature[16] = &emojis[410]; - vNature[17] = &emojis[375]; - vNature[18] = &emojis[382]; - vNature[19] = &emojis[418]; - vNature[20] = &emojis[397]; - vNature[21] = &emojis[396]; - vNature[22] = &emojis[394]; - vNature[23] = &emojis[395]; - vNature[24] = &emojis[393]; - vNature[25] = &emojis[378]; - vNature[26] = &emojis[371]; - vNature[27] = &emojis[392]; - vNature[28] = &emojis[385]; - vNature[29] = &emojis[387]; - vNature[30] = &emojis[386]; - vNature[31] = &emojis[388]; - vNature[32] = &emojis[370]; - vNature[33] = &emojis[383]; - vNature[34] = &emojis[384]; - vNature[35] = &emojis[390]; - vNature[36] = &emojis[389]; - vNature[37] = &emojis[402]; - vNature[38] = &emojis[409]; - vNature[39] = &emojis[369]; - vNature[40] = &emojis[362]; - vNature[41] = &emojis[373]; - vNature[42] = &emojis[358]; - vNature[43] = &emojis[361]; - vNature[44] = &emojis[363]; - vNature[45] = &emojis[365]; - vNature[46] = &emojis[367]; + vNature.resize(125); + vNature[0] = &emojis[194]; + vNature[1] = &emojis[195]; + vNature[2] = &emojis[196]; + vNature[3] = &emojis[197]; + vNature[4] = &emojis[198]; + vNature[5] = &emojis[199]; + vNature[6] = &emojis[200]; + vNature[7] = &emojis[201]; + vNature[8] = &emojis[202]; + vNature[9] = &emojis[203]; + vNature[10] = &emojis[204]; + vNature[11] = &emojis[490]; + vNature[12] = &emojis[206]; + vNature[13] = &emojis[207]; + vNature[14] = &emojis[208]; + vNature[15] = &emojis[209]; + vNature[16] = &emojis[210]; + vNature[17] = &emojis[211]; + vNature[18] = &emojis[212]; + vNature[19] = &emojis[193]; + vNature[20] = &emojis[348]; + vNature[21] = &emojis[349]; + vNature[22] = &emojis[393]; + vNature[23] = &emojis[405]; + vNature[24] = &emojis[350]; + vNature[25] = &emojis[351]; + vNature[26] = &emojis[352]; + vNature[27] = &emojis[394]; + vNature[28] = &emojis[353]; + vNature[29] = &emojis[354]; + vNature[30] = &emojis[395]; + vNature[31] = &emojis[355]; + vNature[32] = &emojis[396]; + vNature[33] = &emojis[356]; + vNature[34] = &emojis[397]; + vNature[35] = &emojis[362]; + vNature[36] = &emojis[400]; + vNature[37] = &emojis[363]; + vNature[38] = &emojis[365]; + vNature[39] = &emojis[364]; + vNature[40] = &emojis[367]; + vNature[41] = &emojis[368]; + vNature[42] = &emojis[384]; + vNature[43] = &emojis[383]; + vNature[44] = &emojis[385]; + vNature[45] = &emojis[386]; + vNature[46] = &emojis[387]; vNature[47] = &emojis[372]; - vNature[48] = &emojis[374]; - vNature[49] = &emojis[377]; - vNature[50] = &emojis[379]; - vNature[51] = &emojis[380]; - vNature[52] = &emojis[359]; - vNature[53] = &emojis[360]; - vNature[54] = &emojis[408]; - vNature[55] = &emojis[391]; - vNature[56] = &emojis[368]; - vNature[57] = &emojis[401]; - vNature[58] = &emojis[400]; - vNature[59] = &emojis[364]; - vNature[60] = &emojis[366]; - vNature[61] = &emojis[399]; - vNature[62] = &emojis[420]; - vNature[63] = &emojis[500]; - vNature[64] = &emojis[210]; - vNature[65] = &emojis[209]; - vNature[66] = &emojis[218]; - vNature[67] = &emojis[211]; - vNature[68] = &emojis[213]; - vNature[69] = &emojis[212]; - vNature[70] = &emojis[219]; - vNature[71] = &emojis[221]; - vNature[72] = &emojis[220]; - vNature[73] = &emojis[217]; - vNature[74] = &emojis[216]; - vNature[75] = &emojis[222]; - vNature[76] = &emojis[208]; - vNature[77] = &emojis[207]; - vNature[78] = &emojis[205]; - vNature[79] = &emojis[206]; - vNature[80] = &emojis[203]; - vNature[81] = &emojis[204]; - vNature[82] = &emojis[214]; - vNature[83] = &emojis[186]; - vNature[84] = &emojis[200]; - vNature[85] = &emojis[199]; - vNature[86] = &emojis[196]; - vNature[87] = &emojis[187]; - vNature[88] = &emojis[188]; - vNature[89] = &emojis[189]; - vNature[90] = &emojis[190]; - vNature[91] = &emojis[191]; - vNature[92] = &emojis[192]; - vNature[93] = &emojis[193]; - vNature[94] = &emojis[194]; - vNature[95] = &emojis[198]; - vNature[96] = &emojis[197]; - vNature[97] = &emojis[195]; - vNature[98] = &emojis[183]; - vNature[99] = &emojis[184]; - vNature[100] = &emojis[185]; - vNature[101] = &emojis[181]; - vNature[102] = &emojis[182]; - vNature[103] = &emojis[202]; - vNature[104] = &emojis[111]; - vNature[105] = &emojis[31]; - vNature[106] = &emojis[66]; - vNature[107] = &emojis[32]; - vNature[108] = &emojis[60]; - vNature[109] = &emojis[35]; - vNature[110] = &emojis[89]; - vNature[111] = &emojis[65]; - vNature[112] = &emojis[170]; - vNature[113] = &emojis[171]; - vNature[114] = &emojis[178]; + vNature[48] = &emojis[390]; + vNature[49] = &emojis[391]; + vNature[50] = &emojis[371]; + vNature[51] = &emojis[370]; + vNature[52] = &emojis[403]; + vNature[53] = &emojis[409]; + vNature[54] = &emojis[369]; + vNature[55] = &emojis[389]; + vNature[56] = &emojis[402]; + vNature[57] = &emojis[406]; + vNature[58] = &emojis[407]; + vNature[59] = &emojis[388]; + vNature[60] = &emojis[408]; + vNature[61] = &emojis[401]; + vNature[62] = &emojis[757]; + vNature[63] = &emojis[758]; + vNature[64] = &emojis[759]; + vNature[65] = &emojis[366]; + vNature[66] = &emojis[357]; + vNature[67] = &emojis[398]; + vNature[68] = &emojis[358]; + vNature[69] = &emojis[361]; + vNature[70] = &emojis[382]; + vNature[71] = &emojis[404]; + vNature[72] = &emojis[359]; + vNature[73] = &emojis[399]; + vNature[74] = &emojis[392]; + vNature[75] = &emojis[373]; + vNature[76] = &emojis[379]; + vNature[77] = &emojis[380]; + vNature[78] = &emojis[381]; + vNature[79] = &emojis[374]; + vNature[80] = &emojis[360]; + vNature[81] = &emojis[375]; + vNature[82] = &emojis[376]; + vNature[83] = &emojis[377]; + vNature[84] = &emojis[378]; + vNature[85] = &emojis[410]; + vNature[86] = &emojis[60]; + vNature[87] = &emojis[635]; + vNature[88] = &emojis[185]; + vNature[89] = &emojis[31]; + vNature[90] = &emojis[66]; + vNature[91] = &emojis[32]; + vNature[92] = &emojis[513]; + vNature[93] = &emojis[512]; + vNature[94] = &emojis[35]; + vNature[95] = &emojis[514]; + vNature[96] = &emojis[89]; + vNature[97] = &emojis[191]; + vNature[98] = &emojis[111]; + vNature[99] = &emojis[192]; + vNature[100] = &emojis[164]; + vNature[101] = &emojis[165]; + vNature[102] = &emojis[168]; + vNature[103] = &emojis[170]; + vNature[104] = &emojis[171]; + vNature[105] = &emojis[172]; + vNature[106] = &emojis[684]; + vNature[107] = &emojis[687]; + vNature[108] = &emojis[176]; + vNature[109] = &emojis[173]; + vNature[110] = &emojis[174]; + vNature[111] = &emojis[175]; + vNature[112] = &emojis[177]; + vNature[113] = &emojis[178]; + vNature[114] = &emojis[179]; vNature[115] = &emojis[180]; + vNature[116] = &emojis[181]; + vNature[117] = &emojis[182]; + vNature[118] = &emojis[183]; + vNature[119] = &emojis[184]; + vNature[120] = &emojis[186]; + vNature[121] = &emojis[189]; + vNature[122] = &emojis[187]; + vNature[123] = &emojis[188]; + vNature[124] = &emojis[190]; } return vNature; } break; + case dbietFood: { + static QVector vFood; + if (vFood.isEmpty()) { + vFood.resize(58); + vFood[0] = &emojis[213]; + vFood[1] = &emojis[214]; + vFood[2] = &emojis[205]; + vFood[3] = &emojis[240]; + vFood[4] = &emojis[215]; + vFood[5] = &emojis[216]; + vFood[6] = &emojis[217]; + vFood[7] = &emojis[218]; + vFood[8] = &emojis[219]; + vFood[9] = &emojis[220]; + vFood[10] = &emojis[221]; + vFood[11] = &emojis[222]; + vFood[12] = &emojis[223]; + vFood[13] = &emojis[224]; + vFood[14] = &emojis[225]; + vFood[15] = &emojis[226]; + vFood[16] = &emojis[227]; + vFood[17] = &emojis[228]; + vFood[18] = &emojis[229]; + vFood[19] = &emojis[230]; + vFood[20] = &emojis[231]; + vFood[21] = &emojis[232]; + vFood[22] = &emojis[233]; + vFood[23] = &emojis[234]; + vFood[24] = &emojis[235]; + vFood[25] = &emojis[236]; + vFood[26] = &emojis[237]; + vFood[27] = &emojis[238]; + vFood[28] = &emojis[239]; + vFood[29] = &emojis[241]; + vFood[30] = &emojis[242]; + vFood[31] = &emojis[243]; + vFood[32] = &emojis[244]; + vFood[33] = &emojis[245]; + vFood[34] = &emojis[246]; + vFood[35] = &emojis[247]; + vFood[36] = &emojis[248]; + vFood[37] = &emojis[249]; + vFood[38] = &emojis[250]; + vFood[39] = &emojis[251]; + vFood[40] = &emojis[252]; + vFood[41] = &emojis[253]; + vFood[42] = &emojis[254]; + vFood[43] = &emojis[255]; + vFood[44] = &emojis[256]; + vFood[45] = &emojis[257]; + vFood[46] = &emojis[258]; + vFood[47] = &emojis[259]; + vFood[48] = &emojis[260]; + vFood[49] = &emojis[261]; + vFood[50] = &emojis[36]; + vFood[51] = &emojis[262]; + vFood[52] = &emojis[263]; + vFood[53] = &emojis[264]; + vFood[54] = &emojis[265]; + vFood[55] = &emojis[266]; + vFood[56] = &emojis[267]; + vFood[57] = &emojis[268]; + } + return vFood; + } break; + + case dbietCelebration: { + static QVector vCelebration; + if (vCelebration.isEmpty()) { + vCelebration.resize(39); + vCelebration[0] = &emojis[269]; + vCelebration[1] = &emojis[270]; + vCelebration[2] = &emojis[271]; + vCelebration[3] = &emojis[272]; + vCelebration[4] = &emojis[273]; + vCelebration[5] = &emojis[280]; + vCelebration[6] = &emojis[282]; + vCelebration[7] = &emojis[286]; + vCelebration[8] = &emojis[275]; + vCelebration[9] = &emojis[276]; + vCelebration[10] = &emojis[278]; + vCelebration[11] = &emojis[279]; + vCelebration[12] = &emojis[277]; + vCelebration[13] = &emojis[517]; + vCelebration[14] = &emojis[86]; + vCelebration[15] = &emojis[511]; + vCelebration[16] = &emojis[288]; + vCelebration[17] = &emojis[427]; + vCelebration[18] = &emojis[283]; + vCelebration[19] = &emojis[284]; + vCelebration[20] = &emojis[285]; + vCelebration[21] = &emojis[281]; + vCelebration[22] = &emojis[345]; + vCelebration[23] = &emojis[487]; + vCelebration[24] = &emojis[97]; + vCelebration[25] = &emojis[494]; + vCelebration[26] = &emojis[486]; + vCelebration[27] = &emojis[495]; + vCelebration[28] = &emojis[504]; + vCelebration[29] = &emojis[493]; + vCelebration[30] = &emojis[497]; + vCelebration[31] = &emojis[496]; + vCelebration[32] = &emojis[498]; + vCelebration[33] = &emojis[503]; + vCelebration[34] = &emojis[505]; + vCelebration[35] = &emojis[502]; + vCelebration[36] = &emojis[501]; + vCelebration[37] = &emojis[500]; + vCelebration[38] = &emojis[499]; + } + return vCelebration; + } break; + + case dbietActivity: { + static QVector vActivity; + if (vActivity.isEmpty()) { + vActivity.resize(53); + vActivity[0] = &emojis[324]; + vActivity[1] = &emojis[819]; + vActivity[2] = &emojis[477]; + vActivity[3] = &emojis[800]; + vActivity[4] = &emojis[330]; + vActivity[5] = &emojis[325]; + vActivity[6] = &emojis[829]; + vActivity[7] = &emojis[323]; + vActivity[8] = &emojis[320]; + vActivity[9] = &emojis[65]; + vActivity[10] = &emojis[817]; + vActivity[11] = &emojis[818]; + vActivity[12] = &emojis[327]; + vActivity[13] = &emojis[73]; + vActivity[14] = &emojis[292]; + vActivity[15] = &emojis[63]; + vActivity[16] = &emojis[321]; + vActivity[17] = &emojis[328]; + vActivity[18] = &emojis[64]; + vActivity[19] = &emojis[319]; + vActivity[20] = &emojis[329]; + vActivity[21] = &emojis[71]; + vActivity[22] = &emojis[326]; + vActivity[23] = &emojis[318]; + vActivity[24] = &emojis[322]; + vActivity[25] = &emojis[314]; + vActivity[26] = &emojis[313]; + vActivity[27] = &emojis[316]; + vActivity[28] = &emojis[312]; + vActivity[29] = &emojis[315]; + vActivity[30] = &emojis[310]; + vActivity[31] = &emojis[311]; + vActivity[32] = &emojis[317]; + vActivity[33] = &emojis[296]; + vActivity[34] = &emojis[293]; + vActivity[35] = &emojis[302]; + vActivity[36] = &emojis[300]; + vActivity[37] = &emojis[298]; + vActivity[38] = &emojis[299]; + vActivity[39] = &emojis[301]; + vActivity[40] = &emojis[297]; + vActivity[41] = &emojis[304]; + vActivity[42] = &emojis[306]; + vActivity[43] = &emojis[308]; + vActivity[44] = &emojis[305]; + vActivity[45] = &emojis[307]; + vActivity[46] = &emojis[303]; + vActivity[47] = &emojis[309]; + vActivity[48] = &emojis[129]; + vActivity[49] = &emojis[128]; + vActivity[50] = &emojis[289]; + vActivity[51] = &emojis[290]; + vActivity[52] = &emojis[291]; + } + return vActivity; + } break; + + case dbietTravel: { + static QVector vTravel; + if (vTravel.isEmpty()) { + vTravel.resize(122); + vTravel[0] = &emojis[768]; + vTravel[1] = &emojis[795]; + vTravel[2] = &emojis[767]; + vTravel[3] = &emojis[776]; + vTravel[4] = &emojis[794]; + vTravel[5] = &emojis[769]; + vTravel[6] = &emojis[770]; + vTravel[7] = &emojis[771]; + vTravel[8] = &emojis[772]; + vTravel[9] = &emojis[773]; + vTravel[10] = &emojis[774]; + vTravel[11] = &emojis[775]; + vTravel[12] = &emojis[777]; + vTravel[13] = &emojis[778]; + vTravel[14] = &emojis[779]; + vTravel[15] = &emojis[781]; + vTravel[16] = &emojis[782]; + vTravel[17] = &emojis[783]; + vTravel[18] = &emojis[784]; + vTravel[19] = &emojis[785]; + vTravel[20] = &emojis[805]; + vTravel[21] = &emojis[786]; + vTravel[22] = &emojis[787]; + vTravel[23] = &emojis[788]; + vTravel[24] = &emojis[789]; + vTravel[25] = &emojis[790]; + vTravel[26] = &emojis[791]; + vTravel[27] = &emojis[792]; + vTravel[28] = &emojis[793]; + vTravel[29] = &emojis[815]; + vTravel[30] = &emojis[780]; + vTravel[31] = &emojis[74]; + vTravel[32] = &emojis[804]; + vTravel[33] = &emojis[803]; + vTravel[34] = &emojis[802]; + vTravel[35] = &emojis[765]; + vTravel[36] = &emojis[766]; + vTravel[37] = &emojis[77]; + vTravel[38] = &emojis[532]; + vTravel[39] = &emojis[58]; + vTravel[40] = &emojis[799]; + vTravel[41] = &emojis[801]; + vTravel[42] = &emojis[72]; + vTravel[43] = &emojis[798]; + vTravel[44] = &emojis[797]; + vTravel[45] = &emojis[796]; + vTravel[46] = &emojis[831]; + vTravel[47] = &emojis[832]; + vTravel[48] = &emojis[833]; + vTravel[49] = &emojis[834]; + vTravel[50] = &emojis[526]; + vTravel[51] = &emojis[528]; + vTravel[52] = &emojis[529]; + vTravel[53] = &emojis[527]; + vTravel[54] = &emojis[686]; + vTravel[55] = &emojis[688]; + vTravel[56] = &emojis[161]; + vTravel[57] = &emojis[685]; + vTravel[58] = &emojis[70]; + vTravel[59] = &emojis[347]; + vTravel[60] = &emojis[346]; + vTravel[61] = &emojis[167]; + vTravel[62] = &emojis[166]; + vTravel[63] = &emojis[163]; + vTravel[64] = &emojis[169]; + vTravel[65] = &emojis[331]; + vTravel[66] = &emojis[332]; + vTravel[67] = &emojis[333]; + vTravel[68] = &emojis[343]; + vTravel[69] = &emojis[344]; + vTravel[70] = &emojis[334]; + vTravel[71] = &emojis[335]; + vTravel[72] = &emojis[336]; + vTravel[73] = &emojis[337]; + vTravel[74] = &emojis[339]; + vTravel[75] = &emojis[340]; + vTravel[76] = &emojis[492]; + vTravel[77] = &emojis[69]; + vTravel[78] = &emojis[341]; + vTravel[79] = &emojis[342]; + vTravel[80] = &emojis[875]; + vTravel[81] = &emojis[874]; + vTravel[82] = &emojis[876]; + vTravel[83] = &emojis[877]; + vTravel[84] = &emojis[878]; + vTravel[85] = &emojis[880]; + vTravel[86] = &emojis[881]; + vTravel[87] = &emojis[882]; + vTravel[88] = &emojis[884]; + vTravel[89] = &emojis[886]; + vTravel[90] = &emojis[887]; + vTravel[91] = &emojis[883]; + vTravel[92] = &emojis[889]; + vTravel[93] = &emojis[893]; + vTravel[94] = &emojis[890]; + vTravel[95] = &emojis[891]; + vTravel[96] = &emojis[892]; + vTravel[97] = &emojis[894]; + vTravel[98] = &emojis[895]; + vTravel[99] = &emojis[896]; + vTravel[100] = &emojis[897]; + vTravel[101] = &emojis[899]; + vTravel[102] = &emojis[898]; + vTravel[103] = &emojis[900]; + vTravel[104] = &emojis[902]; + vTravel[105] = &emojis[901]; + vTravel[106] = &emojis[903]; + vTravel[107] = &emojis[904]; + vTravel[108] = &emojis[906]; + vTravel[109] = &emojis[905]; + vTravel[110] = &emojis[907]; + vTravel[111] = &emojis[908]; + vTravel[112] = &emojis[910]; + vTravel[113] = &emojis[914]; + vTravel[114] = &emojis[885]; + vTravel[115] = &emojis[909]; + vTravel[116] = &emojis[879]; + vTravel[117] = &emojis[911]; + vTravel[118] = &emojis[888]; + vTravel[119] = &emojis[912]; + vTravel[120] = &emojis[873]; + vTravel[121] = &emojis[913]; + } + return vTravel; + } break; + case dbietObjects: { static QVector vObjects; if (vObjects.isEmpty()) { - vObjects.resize(230); - vObjects[0] = &emojis[292]; - vObjects[1] = &emojis[513]; - vObjects[2] = &emojis[293]; - vObjects[3] = &emojis[297]; - vObjects[4] = &emojis[298]; - vObjects[5] = &emojis[294]; - vObjects[6] = &emojis[285]; - vObjects[7] = &emojis[286]; - vObjects[8] = &emojis[295]; - vObjects[9] = &emojis[296]; - vObjects[10] = &emojis[282]; - vObjects[11] = &emojis[479]; - vObjects[12] = &emojis[284]; - vObjects[13] = &emojis[283]; - vObjects[14] = &emojis[280]; - vObjects[15] = &emojis[290]; - vObjects[16] = &emojis[288]; - vObjects[17] = &emojis[289]; - vObjects[18] = &emojis[287]; - vObjects[19] = &emojis[291]; - vObjects[20] = &emojis[654]; - vObjects[21] = &emojis[304]; - vObjects[22] = &emojis[603]; - vObjects[23] = &emojis[604]; - vObjects[24] = &emojis[607]; - vObjects[25] = &emojis[547]; - vObjects[26] = &emojis[548]; - vObjects[27] = &emojis[545]; - vObjects[28] = &emojis[546]; - vObjects[29] = &emojis[543]; - vObjects[30] = &emojis[597]; - vObjects[31] = &emojis[33]; - vObjects[32] = &emojis[578]; - vObjects[33] = &emojis[579]; - vObjects[34] = &emojis[580]; - vObjects[35] = &emojis[581]; - vObjects[36] = &emojis[605]; - vObjects[37] = &emojis[606]; - vObjects[38] = &emojis[618]; - vObjects[39] = &emojis[617]; - vObjects[40] = &emojis[616]; - vObjects[41] = &emojis[615]; - vObjects[42] = &emojis[628]; - vObjects[43] = &emojis[629]; - vObjects[44] = &emojis[582]; - vObjects[45] = &emojis[583]; - vObjects[46] = &emojis[21]; - vObjects[47] = &emojis[15]; - vObjects[48] = &emojis[20]; - vObjects[49] = &emojis[14]; - vObjects[50] = &emojis[627]; - vObjects[51] = &emojis[626]; - vObjects[52] = &emojis[623]; - vObjects[53] = &emojis[624]; - vObjects[54] = &emojis[625]; - vObjects[55] = &emojis[622]; - vObjects[56] = &emojis[517]; - vObjects[57] = &emojis[646]; - vObjects[58] = &emojis[614]; - vObjects[59] = &emojis[613]; - vObjects[60] = &emojis[620]; - vObjects[61] = &emojis[619]; - vObjects[62] = &emojis[621]; - vObjects[63] = &emojis[840]; - vObjects[64] = &emojis[839]; - vObjects[65] = &emojis[838]; - vObjects[66] = &emojis[836]; - vObjects[67] = &emojis[647]; - vObjects[68] = &emojis[649]; - vObjects[69] = &emojis[648]; - vObjects[70] = &emojis[817]; - vObjects[71] = &emojis[819]; - vObjects[72] = &emojis[519]; - vObjects[73] = &emojis[651]; - vObjects[74] = &emojis[650]; - vObjects[75] = &emojis[494]; - vObjects[76] = &emojis[493]; - vObjects[77] = &emojis[532]; - vObjects[78] = &emojis[536]; - vObjects[79] = &emojis[537]; - vObjects[80] = &emojis[539]; - vObjects[81] = &emojis[538]; - vObjects[82] = &emojis[535]; - vObjects[83] = &emojis[540]; - vObjects[84] = &emojis[598]; - vObjects[85] = &emojis[587]; - vObjects[86] = &emojis[585]; - vObjects[87] = &emojis[584]; - vObjects[88] = &emojis[78]; - vObjects[89] = &emojis[589]; - vObjects[90] = &emojis[588]; - vObjects[91] = &emojis[595]; - vObjects[92] = &emojis[591]; - vObjects[93] = &emojis[590]; - vObjects[94] = &emojis[592]; - vObjects[95] = &emojis[593]; - vObjects[96] = &emojis[594]; - vObjects[97] = &emojis[586]; - vObjects[98] = &emojis[577]; - vObjects[99] = &emojis[552]; - vObjects[100] = &emojis[551]; - vObjects[101] = &emojis[565]; - vObjects[102] = &emojis[558]; - vObjects[103] = &emojis[556]; - vObjects[104] = &emojis[557]; - vObjects[105] = &emojis[576]; - vObjects[106] = &emojis[559]; - vObjects[107] = &emojis[553]; - vObjects[108] = &emojis[554]; - vObjects[109] = &emojis[555]; - vObjects[110] = &emojis[549]; - vObjects[111] = &emojis[550]; - vObjects[112] = &emojis[75]; - vObjects[113] = &emojis[560]; - vObjects[114] = &emojis[562]; - vObjects[115] = &emojis[83]; - vObjects[116] = &emojis[82]; - vObjects[117] = &emojis[563]; - vObjects[118] = &emojis[564]; - vObjects[119] = &emojis[569]; - vObjects[120] = &emojis[571]; - vObjects[121] = &emojis[572]; - vObjects[122] = &emojis[573]; - vObjects[123] = &emojis[567]; - vObjects[124] = &emojis[568]; - vObjects[125] = &emojis[566]; - vObjects[126] = &emojis[574]; - vObjects[127] = &emojis[570]; - vObjects[128] = &emojis[630]; - vObjects[129] = &emojis[575]; - vObjects[130] = &emojis[652]; - vObjects[131] = &emojis[653]; - vObjects[132] = &emojis[596]; - vObjects[133] = &emojis[307]; - vObjects[134] = &emojis[311]; - vObjects[135] = &emojis[303]; - vObjects[136] = &emojis[306]; - vObjects[137] = &emojis[327]; - vObjects[138] = &emojis[320]; - vObjects[139] = &emojis[321]; - vObjects[140] = &emojis[324]; - vObjects[141] = &emojis[326]; - vObjects[142] = &emojis[325]; - vObjects[143] = &emojis[322]; - vObjects[144] = &emojis[323]; - vObjects[145] = &emojis[482]; - vObjects[146] = &emojis[313]; - vObjects[147] = &emojis[129]; - vObjects[148] = &emojis[319]; - vObjects[149] = &emojis[128]; - vObjects[150] = &emojis[317]; - vObjects[151] = &emojis[314]; - vObjects[152] = &emojis[338]; - vObjects[153] = &emojis[331]; - vObjects[154] = &emojis[63]; - vObjects[155] = &emojis[64]; - vObjects[156] = &emojis[329]; - vObjects[157] = &emojis[316]; - vObjects[158] = &emojis[339]; - vObjects[159] = &emojis[318]; - vObjects[160] = &emojis[71]; - vObjects[161] = &emojis[828]; - vObjects[162] = &emojis[827]; - vObjects[163] = &emojis[332]; - vObjects[164] = &emojis[337]; - vObjects[165] = &emojis[336]; - vObjects[166] = &emojis[330]; - vObjects[167] = &emojis[333]; - vObjects[168] = &emojis[340]; - vObjects[169] = &emojis[335]; - vObjects[170] = &emojis[302]; - vObjects[171] = &emojis[36]; - vObjects[172] = &emojis[271]; - vObjects[173] = &emojis[272]; - vObjects[174] = &emojis[278]; - vObjects[175] = &emojis[276]; - vObjects[176] = &emojis[277]; - vObjects[177] = &emojis[274]; - vObjects[178] = &emojis[275]; - vObjects[179] = &emojis[273]; - vObjects[180] = &emojis[270]; - vObjects[181] = &emojis[239]; - vObjects[182] = &emojis[238]; - vObjects[183] = &emojis[249]; - vObjects[184] = &emojis[241]; - vObjects[185] = &emojis[240]; - vObjects[186] = &emojis[247]; - vObjects[187] = &emojis[245]; - vObjects[188] = &emojis[254]; - vObjects[189] = &emojis[267]; - vObjects[190] = &emojis[253]; - vObjects[191] = &emojis[255]; - vObjects[192] = &emojis[243]; - vObjects[193] = &emojis[242]; - vObjects[194] = &emojis[244]; - vObjects[195] = &emojis[246]; - vObjects[196] = &emojis[268]; - vObjects[197] = &emojis[252]; - vObjects[198] = &emojis[251]; - vObjects[199] = &emojis[269]; - vObjects[200] = &emojis[248]; - vObjects[201] = &emojis[259]; - vObjects[202] = &emojis[264]; - vObjects[203] = &emojis[256]; - vObjects[204] = &emojis[258]; - vObjects[205] = &emojis[257]; - vObjects[206] = &emojis[281]; - vObjects[207] = &emojis[266]; - vObjects[208] = &emojis[260]; - vObjects[209] = &emojis[261]; - vObjects[210] = &emojis[262]; - vObjects[211] = &emojis[263]; - vObjects[212] = &emojis[265]; - vObjects[213] = &emojis[232]; - vObjects[214] = &emojis[233]; - vObjects[215] = &emojis[228]; - vObjects[216] = &emojis[229]; - vObjects[217] = &emojis[236]; - vObjects[218] = &emojis[225]; - vObjects[219] = &emojis[227]; - vObjects[220] = &emojis[237]; - vObjects[221] = &emojis[235]; - vObjects[222] = &emojis[226]; - vObjects[223] = &emojis[230]; - vObjects[224] = &emojis[234]; - vObjects[225] = &emojis[231]; - vObjects[226] = &emojis[250]; - vObjects[227] = &emojis[224]; - vObjects[228] = &emojis[223]; - vObjects[229] = &emojis[215]; + vObjects.resize(345); + vObjects[0] = &emojis[14]; + vObjects[1] = &emojis[587]; + vObjects[2] = &emojis[588]; + vObjects[3] = &emojis[533]; + vObjects[4] = &emojis[20]; + vObjects[5] = &emojis[21]; + vObjects[6] = &emojis[15]; + vObjects[7] = &emojis[593]; + vObjects[8] = &emojis[594]; + vObjects[9] = &emojis[294]; + vObjects[10] = &emojis[595]; + vObjects[11] = &emojis[596]; + vObjects[12] = &emojis[569]; + vObjects[13] = &emojis[568]; + vObjects[14] = &emojis[33]; + vObjects[15] = &emojis[570]; + vObjects[16] = &emojis[535]; + vObjects[17] = &emojis[536]; + vObjects[18] = &emojis[537]; + vObjects[19] = &emojis[538]; + vObjects[20] = &emojis[597]; + vObjects[21] = &emojis[609]; + vObjects[22] = &emojis[610]; + vObjects[23] = &emojis[507]; + vObjects[24] = &emojis[636]; + vObjects[25] = &emojis[571]; + vObjects[26] = &emojis[525]; + vObjects[27] = &emojis[530]; + vObjects[28] = &emojis[522]; + vObjects[29] = &emojis[488]; + vObjects[30] = &emojis[162]; + vObjects[31] = &emojis[439]; + vObjects[32] = &emojis[437]; + vObjects[33] = &emojis[438]; + vObjects[34] = &emojis[534]; + vObjects[35] = &emojis[287]; + vObjects[36] = &emojis[478]; + vObjects[37] = &emojis[429]; + vObjects[38] = &emojis[428]; + vObjects[39] = &emojis[443]; + vObjects[40] = &emojis[442]; + vObjects[41] = &emojis[444]; + vObjects[42] = &emojis[440]; + vObjects[43] = &emojis[441]; + vObjects[44] = &emojis[435]; + vObjects[45] = &emojis[433]; + vObjects[46] = &emojis[434]; + vObjects[47] = &emojis[436]; + vObjects[48] = &emojis[431]; + vObjects[49] = &emojis[430]; + vObjects[50] = &emojis[432]; + vObjects[51] = &emojis[807]; + vObjects[52] = &emojis[828]; + vObjects[53] = &emojis[830]; + vObjects[54] = &emojis[826]; + vObjects[55] = &emojis[482]; + vObjects[56] = &emojis[483]; + vObjects[57] = &emojis[484]; + vObjects[58] = &emojis[642]; + vObjects[59] = &emojis[643]; + vObjects[60] = &emojis[644]; + vObjects[61] = &emojis[637]; + vObjects[62] = &emojis[640]; + vObjects[63] = &emojis[639]; + vObjects[64] = &emojis[638]; + vObjects[65] = &emojis[509]; + vObjects[66] = &emojis[809]; + vObjects[67] = &emojis[641]; + vObjects[68] = &emojis[620]; + vObjects[69] = &emojis[586]; + vObjects[70] = &emojis[615]; + vObjects[71] = &emojis[78]; + vObjects[72] = &emojis[579]; + vObjects[73] = &emojis[578]; + vObjects[74] = &emojis[577]; + vObjects[75] = &emojis[575]; + vObjects[76] = &emojis[574]; + vObjects[77] = &emojis[576]; + vObjects[78] = &emojis[585]; + vObjects[79] = &emojis[584]; + vObjects[80] = &emojis[580]; + vObjects[81] = &emojis[581]; + vObjects[82] = &emojis[582]; + vObjects[83] = &emojis[583]; + vObjects[84] = &emojis[542]; + vObjects[85] = &emojis[541]; + vObjects[86] = &emojis[555]; + vObjects[87] = &emojis[546]; + vObjects[88] = &emojis[547]; + vObjects[89] = &emojis[548]; + vObjects[90] = &emojis[543]; + vObjects[91] = &emojis[544]; + vObjects[92] = &emojis[603]; + vObjects[93] = &emojis[604]; + vObjects[94] = &emojis[566]; + vObjects[95] = &emojis[549]; + vObjects[96] = &emojis[560]; + vObjects[97] = &emojis[557]; + vObjects[98] = &emojis[558]; + vObjects[99] = &emojis[556]; + vObjects[100] = &emojis[559]; + vObjects[101] = &emojis[561]; + vObjects[102] = &emojis[562]; + vObjects[103] = &emojis[563]; + vObjects[104] = &emojis[564]; + vObjects[105] = &emojis[545]; + vObjects[106] = &emojis[621]; + vObjects[107] = &emojis[552]; + vObjects[108] = &emojis[550]; + vObjects[109] = &emojis[75]; + vObjects[110] = &emojis[554]; + vObjects[111] = &emojis[551]; + vObjects[112] = &emojis[553]; + vObjects[113] = &emojis[806]; + vObjects[114] = &emojis[539]; + vObjects[115] = &emojis[540]; + vObjects[116] = &emojis[83]; + vObjects[117] = &emojis[82]; + vObjects[118] = &emojis[567]; + vObjects[119] = &emojis[613]; + vObjects[120] = &emojis[614]; + vObjects[121] = &emojis[616]; + vObjects[122] = &emojis[617]; + vObjects[123] = &emojis[573]; + vObjects[124] = &emojis[572]; + vObjects[125] = &emojis[606]; + vObjects[126] = &emojis[607]; + vObjects[127] = &emojis[608]; + vObjects[128] = &emojis[605]; + vObjects[129] = &emojis[510]; + vObjects[130] = &emojis[618]; + vObjects[131] = &emojis[619]; + vObjects[132] = &emojis[519]; + vObjects[133] = &emojis[518]; + vObjects[134] = &emojis[821]; + vObjects[135] = &emojis[611]; + vObjects[136] = &emojis[612]; + vObjects[137] = &emojis[808]; + vObjects[138] = &emojis[68]; + vObjects[139] = &emojis[565]; + vObjects[140] = &emojis[820]; + vObjects[141] = &emojis[812]; + vObjects[142] = &emojis[816]; + vObjects[143] = &emojis[814]; + vObjects[144] = &emojis[591]; + vObjects[145] = &emojis[628]; + vObjects[146] = &emojis[159]; + vObjects[147] = &emojis[158]; + vObjects[148] = &emojis[520]; + vObjects[149] = &emojis[116]; + vObjects[150] = &emojis[115]; + vObjects[151] = &emojis[151]; + vObjects[152] = &emojis[152]; + vObjects[153] = &emojis[149]; + vObjects[154] = &emojis[153]; + vObjects[155] = &emojis[147]; + vObjects[156] = &emojis[155]; + vObjects[157] = &emojis[157]; + vObjects[158] = &emojis[154]; + vObjects[159] = &emojis[156]; + vObjects[160] = &emojis[150]; + vObjects[161] = &emojis[146]; + vObjects[162] = &emojis[145]; + vObjects[163] = &emojis[148]; + vObjects[164] = &emojis[531]; + vObjects[165] = &emojis[90]; + vObjects[166] = &emojis[87]; + vObjects[167] = &emojis[92]; + vObjects[168] = &emojis[76]; + vObjects[169] = &emojis[88]; + vObjects[170] = &emojis[589]; + vObjects[171] = &emojis[590]; + vObjects[172] = &emojis[144]; + vObjects[173] = &emojis[130]; + vObjects[174] = &emojis[131]; + vObjects[175] = &emojis[134]; + vObjects[176] = &emojis[135]; + vObjects[177] = &emojis[132]; + vObjects[178] = &emojis[142]; + vObjects[179] = &emojis[138]; + vObjects[180] = &emojis[133]; + vObjects[181] = &emojis[827]; + vObjects[182] = &emojis[136]; + vObjects[183] = &emojis[137]; + vObjects[184] = &emojis[139]; + vObjects[185] = &emojis[140]; + vObjects[186] = &emojis[141]; + vObjects[187] = &emojis[143]; + vObjects[188] = &emojis[338]; + vObjects[189] = &emojis[39]; + vObjects[190] = &emojis[40]; + vObjects[191] = &emojis[41]; + vObjects[192] = &emojis[42]; + vObjects[193] = &emojis[43]; + vObjects[194] = &emojis[44]; + vObjects[195] = &emojis[45]; + vObjects[196] = &emojis[46]; + vObjects[197] = &emojis[47]; + vObjects[198] = &emojis[48]; + vObjects[199] = &emojis[49]; + vObjects[200] = &emojis[50]; + vObjects[201] = &emojis[824]; + vObjects[202] = &emojis[822]; + vObjects[203] = &emojis[823]; + vObjects[204] = &emojis[825]; + vObjects[205] = &emojis[57]; + vObjects[206] = &emojis[813]; + vObjects[207] = &emojis[810]; + vObjects[208] = &emojis[811]; + vObjects[209] = &emojis[25]; + vObjects[210] = &emojis[26]; + vObjects[211] = &emojis[658]; + vObjects[212] = &emojis[659]; + vObjects[213] = &emojis[16]; + vObjects[214] = &emojis[17]; + vObjects[215] = &emojis[18]; + vObjects[216] = &emojis[19]; + vObjects[217] = &emojis[101]; + vObjects[218] = &emojis[106]; + vObjects[219] = &emojis[107]; + vObjects[220] = &emojis[108]; + vObjects[221] = &emojis[9]; + vObjects[222] = &emojis[10]; + vObjects[223] = &emojis[11]; + vObjects[224] = &emojis[8]; + vObjects[225] = &emojis[7]; + vObjects[226] = &emojis[6]; + vObjects[227] = &emojis[602]; + vObjects[228] = &emojis[13]; + vObjects[229] = &emojis[12]; + vObjects[230] = &emojis[104]; + vObjects[231] = &emojis[105]; + vObjects[232] = &emojis[598]; + vObjects[233] = &emojis[599]; + vObjects[234] = &emojis[600]; + vObjects[235] = &emojis[117]; + vObjects[236] = &emojis[118]; + vObjects[237] = &emojis[119]; + vObjects[238] = &emojis[120]; + vObjects[239] = &emojis[121]; + vObjects[240] = &emojis[122]; + vObjects[241] = &emojis[123]; + vObjects[242] = &emojis[124]; + vObjects[243] = &emojis[125]; + vObjects[244] = &emojis[126]; + vObjects[245] = &emojis[127]; + vObjects[246] = &emojis[629]; + vObjects[247] = &emojis[632]; + vObjects[248] = &emojis[634]; + vObjects[249] = &emojis[631]; + vObjects[250] = &emojis[630]; + vObjects[251] = &emojis[5]; + vObjects[252] = &emojis[592]; + vObjects[253] = &emojis[295]; + vObjects[254] = &emojis[633]; + vObjects[255] = &emojis[98]; + vObjects[256] = &emojis[99]; + vObjects[257] = &emojis[113]; + vObjects[258] = &emojis[100]; + vObjects[259] = &emojis[85]; + vObjects[260] = &emojis[84]; + vObjects[261] = &emojis[601]; + vObjects[262] = &emojis[4]; + vObjects[263] = &emojis[0]; + vObjects[264] = &emojis[1]; + vObjects[265] = &emojis[523]; + vObjects[266] = &emojis[524]; + vObjects[267] = &emojis[102]; + vObjects[268] = &emojis[103]; + vObjects[269] = &emojis[114]; + vObjects[270] = &emojis[96]; + vObjects[271] = &emojis[93]; + vObjects[272] = &emojis[95]; + vObjects[273] = &emojis[94]; + vObjects[274] = &emojis[2]; + vObjects[275] = &emojis[3]; + vObjects[276] = &emojis[91]; + vObjects[277] = &emojis[112]; + vObjects[278] = &emojis[521]; + vObjects[279] = &emojis[624]; + vObjects[280] = &emojis[623]; + vObjects[281] = &emojis[625]; + vObjects[282] = &emojis[627]; + vObjects[283] = &emojis[626]; + vObjects[284] = &emojis[160]; + vObjects[285] = &emojis[22]; + vObjects[286] = &emojis[67]; + vObjects[287] = &emojis[645]; + vObjects[288] = &emojis[646]; + vObjects[289] = &emojis[647]; + vObjects[290] = &emojis[59]; + vObjects[291] = &emojis[55]; + vObjects[292] = &emojis[56]; + vObjects[293] = &emojis[508]; + vObjects[294] = &emojis[506]; + vObjects[295] = &emojis[51]; + vObjects[296] = &emojis[52]; + vObjects[297] = &emojis[53]; + vObjects[298] = &emojis[54]; + vObjects[299] = &emojis[34]; + vObjects[300] = &emojis[61]; + vObjects[301] = &emojis[62]; + vObjects[302] = &emojis[622]; + vObjects[303] = &emojis[650]; + vObjects[304] = &emojis[651]; + vObjects[305] = &emojis[656]; + vObjects[306] = &emojis[657]; + vObjects[307] = &emojis[654]; + vObjects[308] = &emojis[655]; + vObjects[309] = &emojis[652]; + vObjects[310] = &emojis[653]; + vObjects[311] = &emojis[23]; + vObjects[312] = &emojis[24]; + vObjects[313] = &emojis[109]; + vObjects[314] = &emojis[110]; + vObjects[315] = &emojis[28]; + vObjects[316] = &emojis[27]; + vObjects[317] = &emojis[30]; + vObjects[318] = &emojis[29]; + vObjects[319] = &emojis[648]; + vObjects[320] = &emojis[649]; + vObjects[321] = &emojis[660]; + vObjects[322] = &emojis[661]; + vObjects[323] = &emojis[662]; + vObjects[324] = &emojis[663]; + vObjects[325] = &emojis[664]; + vObjects[326] = &emojis[665]; + vObjects[327] = &emojis[666]; + vObjects[328] = &emojis[667]; + vObjects[329] = &emojis[668]; + vObjects[330] = &emojis[669]; + vObjects[331] = &emojis[670]; + vObjects[332] = &emojis[671]; + vObjects[333] = &emojis[672]; + vObjects[334] = &emojis[673]; + vObjects[335] = &emojis[674]; + vObjects[336] = &emojis[675]; + vObjects[337] = &emojis[676]; + vObjects[338] = &emojis[677]; + vObjects[339] = &emojis[678]; + vObjects[340] = &emojis[679]; + vObjects[341] = &emojis[680]; + vObjects[342] = &emojis[681]; + vObjects[343] = &emojis[682]; + vObjects[344] = &emojis[683]; } return vObjects; } break; - case dbietPlaces: { - static QVector vPlaces; - if (vPlaces.isEmpty()) { - vPlaces.resize(101); - vPlaces[0] = &emojis[341]; - vPlaces[1] = &emojis[342]; - vPlaces[2] = &emojis[352]; - vPlaces[3] = &emojis[343]; - vPlaces[4] = &emojis[344]; - vPlaces[5] = &emojis[346]; - vPlaces[6] = &emojis[347]; - vPlaces[7] = &emojis[351]; - vPlaces[8] = &emojis[350]; - vPlaces[9] = &emojis[349]; - vPlaces[10] = &emojis[502]; - vPlaces[11] = &emojis[69]; - vPlaces[12] = &emojis[353]; - vPlaces[13] = &emojis[345]; - vPlaces[14] = &emojis[177]; - vPlaces[15] = &emojis[176]; - vPlaces[16] = &emojis[356]; - vPlaces[17] = &emojis[357]; - vPlaces[18] = &emojis[73]; - vPlaces[19] = &emojis[354]; - vPlaces[20] = &emojis[695]; - vPlaces[21] = &emojis[697]; - vPlaces[22] = &emojis[694]; - vPlaces[23] = &emojis[174]; - vPlaces[24] = &emojis[175]; - vPlaces[25] = &emojis[173]; - vPlaces[26] = &emojis[696]; - vPlaces[27] = &emojis[179]; - vPlaces[28] = &emojis[299]; - vPlaces[29] = &emojis[300]; - vPlaces[30] = &emojis[70]; - vPlaces[31] = &emojis[301]; - vPlaces[32] = &emojis[809]; - vPlaces[33] = &emojis[72]; - vPlaces[34] = &emojis[811]; - vPlaces[35] = &emojis[810]; - vPlaces[36] = &emojis[58]; - vPlaces[37] = &emojis[775]; - vPlaces[38] = &emojis[77]; - vPlaces[39] = &emojis[542]; - vPlaces[40] = &emojis[776]; - vPlaces[41] = &emojis[777]; - vPlaces[42] = &emojis[785]; - vPlaces[43] = &emojis[784]; - vPlaces[44] = &emojis[805]; - vPlaces[45] = &emojis[781]; - vPlaces[46] = &emojis[779]; - vPlaces[47] = &emojis[780]; - vPlaces[48] = &emojis[783]; - vPlaces[49] = &emojis[782]; - vPlaces[50] = &emojis[804]; - vPlaces[51] = &emojis[786]; - vPlaces[52] = &emojis[778]; - vPlaces[53] = &emojis[789]; - vPlaces[54] = &emojis[787]; - vPlaces[55] = &emojis[788]; - vPlaces[56] = &emojis[800]; - vPlaces[57] = &emojis[799]; - vPlaces[58] = &emojis[798]; - vPlaces[59] = &emojis[796]; - vPlaces[60] = &emojis[797]; - vPlaces[61] = &emojis[802]; - vPlaces[62] = &emojis[801]; - vPlaces[63] = &emojis[815]; - vPlaces[64] = &emojis[794]; - vPlaces[65] = &emojis[795]; - vPlaces[66] = &emojis[793]; - vPlaces[67] = &emojis[792]; - vPlaces[68] = &emojis[791]; - vPlaces[69] = &emojis[825]; - vPlaces[70] = &emojis[808]; - vPlaces[71] = &emojis[806]; - vPlaces[72] = &emojis[807]; - vPlaces[73] = &emojis[803]; - vPlaces[74] = &emojis[492]; - vPlaces[75] = &emojis[790]; - vPlaces[76] = &emojis[310]; - vPlaces[77] = &emojis[813]; - vPlaces[78] = &emojis[812]; - vPlaces[79] = &emojis[59]; - vPlaces[80] = &emojis[814]; - vPlaces[81] = &emojis[656]; - vPlaces[82] = &emojis[74]; - vPlaces[83] = &emojis[355]; - vPlaces[84] = &emojis[315]; - vPlaces[85] = &emojis[55]; - vPlaces[86] = &emojis[698]; - vPlaces[87] = &emojis[309]; - vPlaces[88] = &emojis[312]; - vPlaces[89] = &emojis[561]; - vPlaces[90] = &emojis[816]; - vPlaces[91] = &emojis[151]; - vPlaces[92] = &emojis[152]; - vPlaces[93] = &emojis[146]; - vPlaces[94] = &emojis[145]; - vPlaces[95] = &emojis[154]; - vPlaces[96] = &emojis[148]; - vPlaces[97] = &emojis[147]; - vPlaces[98] = &emojis[150]; - vPlaces[99] = &emojis[153]; - vPlaces[100] = &emojis[149]; - } - return vPlaces; - } break; - - case dbietSymbols: { - static QVector vSymbols; - if (vSymbols.isEmpty()) { - vSymbols.resize(209); - vSymbols[0] = &emojis[119]; - vSymbols[1] = &emojis[120]; - vSymbols[2] = &emojis[121]; - vSymbols[3] = &emojis[122]; - vSymbols[4] = &emojis[123]; - vSymbols[5] = &emojis[124]; - vSymbols[6] = &emojis[125]; - vSymbols[7] = &emojis[126]; - vSymbols[8] = &emojis[127]; - vSymbols[9] = &emojis[118]; - vSymbols[10] = &emojis[639]; - vSymbols[11] = &emojis[642]; - vSymbols[12] = &emojis[117]; - vSymbols[13] = &emojis[643]; - vSymbols[14] = &emojis[107]; - vSymbols[15] = &emojis[108]; - vSymbols[16] = &emojis[106]; - vSymbols[17] = &emojis[101]; - vSymbols[18] = &emojis[640]; - vSymbols[19] = &emojis[641]; - vSymbols[20] = &emojis[644]; - vSymbols[21] = &emojis[9]; - vSymbols[22] = &emojis[8]; - vSymbols[23] = &emojis[10]; - vSymbols[24] = &emojis[11]; - vSymbols[25] = &emojis[6]; - vSymbols[26] = &emojis[7]; - vSymbols[27] = &emojis[612]; - vSymbols[28] = &emojis[26]; - vSymbols[29] = &emojis[25]; - vSymbols[30] = &emojis[668]; - vSymbols[31] = &emojis[669]; - vSymbols[32] = &emojis[12]; - vSymbols[33] = &emojis[13]; - vSymbols[34] = &emojis[5]; - vSymbols[35] = &emojis[17]; - vSymbols[36] = &emojis[16]; - vSymbols[37] = &emojis[18]; - vSymbols[38] = &emojis[19]; - vSymbols[39] = &emojis[105]; - vSymbols[40] = &emojis[104]; - vSymbols[41] = &emojis[141]; - vSymbols[42] = &emojis[608]; - vSymbols[43] = &emojis[609]; - vSymbols[44] = &emojis[610]; - vSymbols[45] = &emojis[139]; - vSymbols[46] = &emojis[143]; - vSymbols[47] = &emojis[136]; - vSymbols[48] = &emojis[137]; - vSymbols[49] = &emojis[140]; - vSymbols[50] = &emojis[602]; - vSymbols[51] = &emojis[305]; - vSymbols[52] = &emojis[155]; - vSymbols[53] = &emojis[158]; - vSymbols[54] = &emojis[160]; - vSymbols[55] = &emojis[162]; - vSymbols[56] = &emojis[161]; - vSymbols[57] = &emojis[159]; - vSymbols[58] = &emojis[168]; - vSymbols[59] = &emojis[166]; - vSymbols[60] = &emojis[167]; - vSymbols[61] = &emojis[163]; - vSymbols[62] = &emojis[157]; - vSymbols[63] = &emojis[834]; - vSymbols[64] = &emojis[832]; - vSymbols[65] = &emojis[833]; - vSymbols[66] = &emojis[835]; - vSymbols[67] = &emojis[837]; - vSymbols[68] = &emojis[823]; - vSymbols[69] = &emojis[821]; - vSymbols[70] = &emojis[133]; - vSymbols[71] = &emojis[57]; - vSymbols[72] = &emojis[820]; - vSymbols[73] = &emojis[164]; - vSymbols[74] = &emojis[165]; - vSymbols[75] = &emojis[156]; - vSymbols[76] = &emojis[22]; - vSymbols[77] = &emojis[841]; - vSymbols[78] = &emojis[843]; - vSymbols[79] = &emojis[844]; - vSymbols[80] = &emojis[842]; - vSymbols[81] = &emojis[169]; - vSymbols[82] = &emojis[116]; - vSymbols[83] = &emojis[115]; - vSymbols[84] = &emojis[135]; - vSymbols[85] = &emojis[142]; - vSymbols[86] = &emojis[138]; - vSymbols[87] = &emojis[818]; - vSymbols[88] = &emojis[638]; - vSymbols[89] = &emojis[601]; - vSymbols[90] = &emojis[822]; - vSymbols[91] = &emojis[824]; - vSymbols[92] = &emojis[826]; - vSymbols[93] = &emojis[830]; - vSymbols[94] = &emojis[831]; - vSymbols[95] = &emojis[68]; - vSymbols[96] = &emojis[87]; - vSymbols[97] = &emojis[90]; - vSymbols[98] = &emojis[92]; - vSymbols[99] = &emojis[76]; - vSymbols[100] = &emojis[88]; - vSymbols[101] = &emojis[515]; - vSymbols[102] = &emojis[144]; - vSymbols[103] = &emojis[599]; - vSymbols[104] = &emojis[600]; - vSymbols[105] = &emojis[130]; - vSymbols[106] = &emojis[131]; - vSymbols[107] = &emojis[134]; - vSymbols[108] = &emojis[132]; - vSymbols[109] = &emojis[516]; - vSymbols[110] = &emojis[103]; - vSymbols[111] = &emojis[56]; - vSymbols[112] = &emojis[39]; - vSymbols[113] = &emojis[40]; - vSymbols[114] = &emojis[41]; - vSymbols[115] = &emojis[42]; - vSymbols[116] = &emojis[43]; - vSymbols[117] = &emojis[44]; - vSymbols[118] = &emojis[45]; - vSymbols[119] = &emojis[46]; - vSymbols[120] = &emojis[47]; - vSymbols[121] = &emojis[48]; - vSymbols[122] = &emojis[49]; - vSymbols[123] = &emojis[50]; - vSymbols[124] = &emojis[67]; - vSymbols[125] = &emojis[655]; - vSymbols[126] = &emojis[348]; - vSymbols[127] = &emojis[541]; - vSymbols[128] = &emojis[534]; - vSymbols[129] = &emojis[533]; - vSymbols[130] = &emojis[0]; - vSymbols[131] = &emojis[1]; - vSymbols[132] = &emojis[4]; - vSymbols[133] = &emojis[91]; - vSymbols[134] = &emojis[2]; - vSymbols[135] = &emojis[3]; - vSymbols[136] = &emojis[96]; - vSymbols[137] = &emojis[93]; - vSymbols[138] = &emojis[95]; - vSymbols[139] = &emojis[94]; - vSymbols[140] = &emojis[112]; - vSymbols[141] = &emojis[637]; - vSymbols[142] = &emojis[634]; - vSymbols[143] = &emojis[633]; - vSymbols[144] = &emojis[635]; - vSymbols[145] = &emojis[636]; - vSymbols[146] = &emojis[611]; - vSymbols[147] = &emojis[681]; - vSymbols[148] = &emojis[693]; - vSymbols[149] = &emojis[670]; - vSymbols[150] = &emojis[682]; - vSymbols[151] = &emojis[671]; - vSymbols[152] = &emojis[683]; - vSymbols[153] = &emojis[672]; - vSymbols[154] = &emojis[684]; - vSymbols[155] = &emojis[673]; - vSymbols[156] = &emojis[685]; - vSymbols[157] = &emojis[674]; - vSymbols[158] = &emojis[686]; - vSymbols[159] = &emojis[675]; - vSymbols[160] = &emojis[676]; - vSymbols[161] = &emojis[677]; - vSymbols[162] = &emojis[678]; - vSymbols[163] = &emojis[679]; - vSymbols[164] = &emojis[680]; - vSymbols[165] = &emojis[687]; - vSymbols[166] = &emojis[688]; - vSymbols[167] = &emojis[689]; - vSymbols[168] = &emojis[690]; - vSymbols[169] = &emojis[691]; - vSymbols[170] = &emojis[692]; - vSymbols[171] = &emojis[85]; - vSymbols[172] = &emojis[98]; - vSymbols[173] = &emojis[99]; - vSymbols[174] = &emojis[100]; - vSymbols[175] = &emojis[51]; - vSymbols[176] = &emojis[53]; - vSymbols[177] = &emojis[52]; - vSymbols[178] = &emojis[54]; - vSymbols[179] = &emojis[530]; - vSymbols[180] = &emojis[531]; - vSymbols[181] = &emojis[84]; - vSymbols[182] = &emojis[34]; - vSymbols[183] = &emojis[632]; - vSymbols[184] = &emojis[631]; - vSymbols[185] = &emojis[102]; - vSymbols[186] = &emojis[113]; - vSymbols[187] = &emojis[114]; - vSymbols[188] = &emojis[657]; - vSymbols[189] = &emojis[28]; - vSymbols[190] = &emojis[27]; - vSymbols[191] = &emojis[30]; - vSymbols[192] = &emojis[29]; - vSymbols[193] = &emojis[23]; - vSymbols[194] = &emojis[24]; - vSymbols[195] = &emojis[666]; - vSymbols[196] = &emojis[658]; - vSymbols[197] = &emojis[659]; - vSymbols[198] = &emojis[62]; - vSymbols[199] = &emojis[61]; - vSymbols[200] = &emojis[660]; - vSymbols[201] = &emojis[661]; - vSymbols[202] = &emojis[667]; - vSymbols[203] = &emojis[110]; - vSymbols[204] = &emojis[109]; - vSymbols[205] = &emojis[662]; - vSymbols[206] = &emojis[663]; - vSymbols[207] = &emojis[664]; - vSymbols[208] = &emojis[665]; - } - return vSymbols; - } break; - }; EmojiPack result; @@ -5649,5 +3770,6 @@ EmojiPack emojiPack(DBIEmojiTab tab) { for (RecentEmojiPack::const_iterator i = cGetRecentEmojis().cbegin(), e = cGetRecentEmojis().cend(); i != e; ++i) { result.push_back(i->first); } - return result;} + return result; +} diff --git a/Telegram/SourceFiles/gui/emoji_config.h b/Telegram/SourceFiles/gui/emoji_config.h index 757859d49..958c89886 100644 --- a/Telegram/SourceFiles/gui/emoji_config.h +++ b/Telegram/SourceFiles/gui/emoji_config.h @@ -19,10 +19,94 @@ Copyright (c) 2014 John Preston, https://desktop.telegram.org #include "gui/text.h" -void initEmoji(); -EmojiPtr getEmoji(uint32 code); +void emojiInit(); +EmojiPtr emojiGet(uint32 code); +EmojiPtr emojiGet(uint32 code, uint32 code2); +EmojiPtr emojiGet(EmojiPtr emoji, uint32 color); +EmojiPtr emojiGet(const QChar *from, const QChar *end); +QString emojiGetSequence(int index); -void findEmoji(const QChar *ch, const QChar *e, const QChar *&newEmojiEnd, uint32 &emojiCode); +inline uint64 emojiKey(EmojiPtr emoji) { + uint64 key = emoji->code; + if (emoji->code2) { + key = (key << 32) | uint64(emoji->code2); + } else if (emoji->color && ((emoji->color & 0xFFFF0000U) != 0xFFFF0000U)) { + key = (key << 32) | uint64(emoji->color); + } + return key; +} + +inline EmojiPtr emojiFromKey(uint64 key) { + uint32 code = uint32(key >> 32), code2 = uint32(key & 0xFFFFFFFFLLU); + if (!code && code2) { + code = code2; + code2 = 0; + } + EmojiPtr emoji = emojiGet(code); + if (emoji == TwoSymbolEmoji) { + return emojiGet(code, code2); + } else if (emoji && emoji->color && code2) { + return emojiGet(emoji, code2); + } + return emoji; +} + +inline EmojiPtr emojiFromUrl(const QString &url) { + return emojiFromKey(url.midRef(10).toULongLong(0, 16)); // skip emoji://e. +} + +inline EmojiPtr emojiFromText(const QChar *ch, const QChar *e, int &len) { + QString tmp(ch, e - ch); + QByteArray tmp2 = tmp.toUtf8(); + const char *tmp3 = tmp2.constData(); + EmojiPtr emoji = 0; + if (ch + 1 < e && ((ch->isHighSurrogate() && (ch + 1)->isLowSurrogate()) || (((ch->unicode() >= 48 && ch->unicode() < 58) || ch->unicode() == 35) && (ch + 1)->unicode() == 0x20E3))) { + uint32 code = (ch->unicode() << 16) | (ch + 1)->unicode(); + emoji = emojiGet(code); + if (emoji) { + if (emoji == TwoSymbolEmoji) { // check two symbol + if (ch + 3 >= e) { + emoji = 0; + } else { + uint32 code2 = ((uint32((ch + 2)->unicode()) << 16) | uint32((ch + 3)->unicode())); + emoji = emojiGet(code, code2); + } + } else { + if (ch + 2 < e && (ch + 2)->unicode() == 0x200D) { // check sequence + EmojiPtr seq = emojiGet(ch, e); + if (seq) { + emoji = seq; + } + } + } + } + } else if (ch < e) { + emoji = emojiGet(ch->unicode()); + Q_ASSERT(emoji != TwoSymbolEmoji); + } + + if (emoji) { + len = emoji->len + ((ch + emoji->len < e && (ch + emoji->len)->unicode() == 0xFE0F) ? 1 : 0); + if (emoji->color && (ch + len + 1 < e && (ch + len)->isHighSurrogate() && (ch + len + 1)->isLowSurrogate())) { // color + uint32 color = ((uint32((ch + len)->unicode()) << 16) | uint32((ch + len + 1)->unicode())); + EmojiPtr col = emojiGet(emoji, color); + if (col && col != emoji) { + len += col->len - emoji->len; + emoji = col; + if (ch + len < e && (ch + len)->unicode() == 0xFE0F) { + ++len; + } + } + } + } + + return emoji; +} + +extern int EmojiSizes[5], EIndex, ESize; +extern const char *EmojiNames[5], *EName; + +void emojiFind(const QChar *ch, const QChar *e, const QChar *&newEmojiEnd, uint32 &emojiCode); inline bool emojiEdge(const QChar *ch) { return true; @@ -48,7 +132,7 @@ inline QString replaceEmojis(const QString &text) { uint32 emojiCode = 0; const QChar *newEmojiEnd = 0; if (canFindEmoji) { - findEmoji(ch, e, newEmojiEnd, emojiCode); + emojiFind(ch, e, newEmojiEnd, emojiCode); } while (currentLink < lnkCount && ch >= lnkRanges[currentLink].from + lnkRanges[currentLink].len) { @@ -91,4 +175,5 @@ inline QString replaceEmojis(const QString &text) { return result; } +int emojiPackCount(DBIEmojiTab tab); EmojiPack emojiPack(DBIEmojiTab tab); diff --git a/Telegram/SourceFiles/gui/flattextarea.cpp b/Telegram/SourceFiles/gui/flattextarea.cpp index e7f4c6fbc..458780eca 100644 --- a/Telegram/SourceFiles/gui/flattextarea.cpp +++ b/Telegram/SourceFiles/gui/flattextarea.cpp @@ -174,8 +174,7 @@ EmojiPtr FlatTextarea::getSingleEmoji() const { if (!text.isEmpty()) { QTextCharFormat format = fragment.charFormat(); - QString imageName = static_cast(&format)->name(); - return getEmoji(imageName.mid(8).toUInt(0, 16)); + return emojiFromUrl(static_cast(&format)->name()); } return 0; } @@ -288,7 +287,7 @@ void FlatTextarea::getSingleEmojiFragment(QString &text, QTextFragment &fragment } if (f.isImageFormat() && !t.isEmpty() && t.at(0).unicode() == QChar::ObjectReplacementCharacter) { QString imageName = static_cast(&f)->name(); - if (imageName.midRef(0, 8) == qsl("emoji://")) { + if (imageName.startsWith(QLatin1String("emoji://e."))) { fragment = fr; text = t; return; @@ -372,10 +371,8 @@ QString FlatTextarea::getText(int32 start, int32 end) const { case QChar::ObjectReplacementCharacter: if (emojiText.isEmpty() && f.isImageFormat()) { QString imageName = static_cast(&f)->name(); - if (imageName.midRef(0, 8) == qsl("emoji://")) { - uint32 index = imageName.mid(8).toUInt(0, 16); - const EmojiData *emoji = getEmoji(index); - if (emoji) { + if (imageName.startsWith(QLatin1String("emoji://e."))) { + if (EmojiPtr emoji = emojiFromUrl(imageName)) { emojiText = textEmojiString(emoji); } } @@ -520,7 +517,7 @@ void FlatTextarea::insertEmoji(EmojiPtr emoji, QTextCursor c) { c.removeSelectedText(); QPixmap img(App::emojiSingle(emoji, _st.font->height)); - QString url = qsl("emoji://") + QString::number(emoji->code, 16); + QString url = qsl("emoji://e.") + QString::number(emojiKey(emoji), 16); document()->addResource(QTextDocument::ImageResource, QUrl(url), QVariant(img)); QTextImageFormat imageFormat; imageFormat.setWidth(img.width() / cIntRetinaFactor()); @@ -546,33 +543,20 @@ void FlatTextarea::processDocumentContentsChange(int position, int charsAdded) { QTextFragment fragment(iter.fragment()); if (!fragment.isValid()) continue; - int32 p = fragment.position(), e = p + fragment.length(); - if (p >= end || e <= start) { + int32 fp = fragment.position(), fe = fp + fragment.length(); + if (fp >= end || fe <= start) { continue; } QString t(fragment.text()); - for (const QChar *ch = t.constData(), *e = ch + t.size(); ch != e; ++ch) { - if (ch + 1 < e && (ch->isHighSurrogate() || (((ch->unicode() >= 48 && ch->unicode() < 58) || ch->unicode() == 35) && (ch + 1)->unicode() == 0x20E3))) { - emoji = getEmoji((ch->unicode() << 16) | (ch + 1)->unicode()); - if (emoji) { - if (emoji->len == 4 && (ch + 3 >= e || ((uint32((ch + 2)->unicode()) << 16) | uint32((ch + 3)->unicode())) != emoji->code2)) { - emoji = 0; - } else { - emojiPosition = p + (ch - t.constData()); - emojiLen = emoji->len + ((ch + emoji->len < e && (ch + emoji->len)->unicode() == 0xFE0F) ? 1 : 0); - break; - } - } - ++ch; - } else { - emoji = getEmoji(ch->unicode()); - if (emoji) { - emojiPosition = p + (ch - t.constData()); - emojiLen = emoji->len + ((ch + emoji->len < e && (ch + emoji->len)->unicode() == 0xFE0F) ? 1 : 0); - break; - } + const QChar *ch = t.constData(), *e = ch + t.size(); + for (; ch != e; ++ch) { + emoji = emojiFromText(ch, e, emojiLen); + if (emoji) { + emojiPosition = fp + (ch - t.constData()); + break; } + if (ch + 1 < e && ch->isHighSurrogate() && (ch + 1)->isLowSurrogate()) ++ch; } if (emoji) break; } diff --git a/Telegram/SourceFiles/gui/scrollarea.cpp b/Telegram/SourceFiles/gui/scrollarea.cpp index ac0a521d5..b8d90092b 100644 --- a/Telegram/SourceFiles/gui/scrollarea.cpp +++ b/Telegram/SourceFiles/gui/scrollarea.cpp @@ -94,7 +94,7 @@ void ScrollBar::updateBar(bool force) { } if (newBar != _bar) { _bar = newBar; - update(); + parentWidget()->update(geometry()); } if (_vertical) { bool newTopSh = (_st->topsh < 0) || (_area->scrollTop() > _st->topsh), newBottomSh = (_st->bottomsh < 0) || (_area->scrollTop() < _area->scrollTopMax() - _st->bottomsh); @@ -143,7 +143,7 @@ bool ScrollBar::animStep(float64 ms) { a_bg.update(dt, anim::linear); a_bar.update(dt, anim::linear); } - update(); + parentWidget()->update(geometry()); return res; } @@ -253,19 +253,16 @@ void ScrollBar::resizeEvent(QResizeEvent *e) { } ScrollArea::ScrollArea(QWidget *parent, const style::flatScroll &st, bool handleTouch) : QScrollArea(parent), -_st(st), +_disabled(false), _st(st), hor(this, false, &_st), vert(this, true, &_st), topSh(this, &_st), bottomSh(this, &_st), _touchEnabled(handleTouch), _touchScroll(false), _touchPress(false), _touchRightButton(false), _touchScrollState(TouchScrollManual), _touchPrevPosValid(false), _touchWaitingAcceleration(false), _touchSpeedTime(0), _touchAccelerationTime(0), _touchTime(0), _widgetAcceptsTouch(false) { - connect(horizontalScrollBar(), SIGNAL(valueChanged(int)), this, SIGNAL(scrolled())); - connect(verticalScrollBar(), SIGNAL(valueChanged(int)), this, SIGNAL(scrolled())); + connect(horizontalScrollBar(), SIGNAL(valueChanged(int)), this, SLOT(onScrolled())); + connect(verticalScrollBar(), SIGNAL(valueChanged(int)), this, SLOT(onScrolled())); connect(&vert, SIGNAL(topShadowVisibility(bool)), &topSh, SLOT(changeVisibility(bool))); connect(&vert, SIGNAL(bottomShadowVisibility(bool)), &bottomSh, SLOT(changeVisibility(bool))); vert.updateBar(true); - if (_st.hiding) { - connect(this, SIGNAL(scrolled()), this, SLOT(onScrolled())); - } setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); @@ -292,19 +289,31 @@ void ScrollArea::touchDeaccelerate(int32 elapsed) { } void ScrollArea::onScrolled() { + bool em = false; int32 horValue = horizontalScrollBar()->value(), vertValue = verticalScrollBar()->value(); if (_horValue != horValue) { - _horValue = horValue; - if (_st.hiding) { - hor.hideTimeout(_st.hiding); + if (_disabled) { + horizontalScrollBar()->setValue(_horValue); + } else { + _horValue = horValue; + if (_st.hiding) { + hor.hideTimeout(_st.hiding); + } + em = true; } } if (_vertValue != vertValue) { - _vertValue = vertValue; - if (_st.hiding) { - vert.hideTimeout(_st.hiding); + if (_disabled) { + verticalScrollBar()->setValue(_vertValue); + } else { + _vertValue = vertValue; + if (_st.hiding) { + vert.hideTimeout(_st.hiding); + } + em = true; } } + if (em) emit scrolled(); } int ScrollArea::scrollWidth() const { @@ -528,6 +537,21 @@ void ScrollArea::touchScrollUpdated(const QPoint &screenPos) { touchUpdateSpeed(); } +void ScrollArea::disableScroll(bool dis) { + _disabled = dis; + if (_disabled) { + hor.hideTimeout(0); + vert.hideTimeout(0); + } +} + +void ScrollArea::scrollContentsBy(int dx, int dy) { + if (_disabled) { + return; + } + QScrollArea::scrollContentsBy(dx, dy); +} + bool ScrollArea::touchScroll(const QPoint &delta) { int32 scTop = scrollTop(), scMax = scrollTopMax(), scNew = snap(scTop - delta.y(), 0, scMax); if (scNew == scTop) return false; @@ -559,6 +583,7 @@ void ScrollArea::keyPressEvent(QKeyEvent *e) { } void ScrollArea::enterEvent(QEvent *e) { + if (_disabled) return; if (_st.hiding) { hor.hideTimeout(_st.hiding); vert.hideTimeout(_st.hiding); diff --git a/Telegram/SourceFiles/gui/scrollarea.h b/Telegram/SourceFiles/gui/scrollarea.h index 6e3580511..f12fb6bf5 100644 --- a/Telegram/SourceFiles/gui/scrollarea.h +++ b/Telegram/SourceFiles/gui/scrollarea.h @@ -134,6 +134,7 @@ public: public slots: void scrollToY(int toTop, int toBottom = -1); + void disableScroll(bool dis); void onScrolled(); void onTouchTimer(); @@ -146,6 +147,10 @@ signals: void scrollFinished(); void geometryChanged(); +protected: + + void scrollContentsBy(int dx, int dy); + private: bool touchScroll(const QPoint &delta); @@ -156,6 +161,8 @@ private: void touchUpdateSpeed(); void touchDeaccelerate(int32 elapsed); + bool _disabled; + style::flatScroll _st; ScrollBar hor, vert; ScrollShadow topSh, bottomSh; diff --git a/Telegram/SourceFiles/gui/text.cpp b/Telegram/SourceFiles/gui/text.cpp index a54a2106c..a53aa098e 100644 --- a/Telegram/SourceFiles/gui/text.cpp +++ b/Telegram/SourceFiles/gui/text.cpp @@ -240,20 +240,25 @@ const QChar *textSkipCommand(const QChar *from, const QChar *end, bool canLink) } QString textEmojiString(EmojiPtr emoji) { + if ((emoji->code & 0xFFFF0000U) == 0xFFFF0000U) { // sequence + return emojiGetSequence(emoji->code & 0xFFFFU); + } + QString result; result.reserve(emoji->len + (emoji->postfix ? 1 : 0)); - switch (emoji->len) { - case 1: result.append(QChar(emoji->code & 0xFFFF)); break; - case 2: + if (!(emoji->code >> 16)) { + result.append(QChar(emoji->code & 0xFFFF)); + } else { result.append(QChar((emoji->code >> 16) & 0xFFFF)); result.append(QChar(emoji->code & 0xFFFF)); - break; - case 4: - result.append(QChar((emoji->code >> 16) & 0xFFFF)); - result.append(QChar(emoji->code & 0xFFFF)); - result.append(QChar((emoji->code2 >> 16) & 0xFFFF)); - result.append(QChar(emoji->code2 & 0xFFFF)); - break; + if (emoji->code2) { + result.append(QChar((emoji->code2 >> 16) & 0xFFFF)); + result.append(QChar(emoji->code2 & 0xFFFF)); + } + } + if (emoji->color && ((emoji->color & 0xFFFF0000U) != 0xFFFF0000U)) { + result.append(QChar((emoji->color >> 16) & 0xFFFF)); + result.append(QChar(emoji->color & 0xFFFF)); } if (emoji->postfix) result.append(QChar(emoji->postfix)); return result; @@ -515,24 +520,15 @@ public: } void parseEmojiFromCurrent() { - const EmojiData *e = getEmoji(chInt); + int len = 0, skipped = (chInt > 0xFFFFU) ? 1 : 0; + EmojiPtr e = emojiFromText(ptr - skipped, end, len); if (!e) return; - if (e->len > 2) { - if (ptr + 2 >= end || e->code2 != ((uint32((ptr + 1)->unicode()) << 16) | uint32((ptr + 2)->unicode()))) { - return; - } else { - _t->_text.push_back(*++ptr); - _t->_text.push_back(*++ptr); - } - } - int emojiLen = e->len; - if (ptr + 1 < end && (ptr + 1)->unicode() == 0xFE0F) { + for (int l = len - skipped - 1; l > 0; --l) { _t->_text.push_back(*++ptr); - ++emojiLen; } - createBlock(-emojiLen); + createBlock(-len); emoji = e; } @@ -1326,7 +1322,7 @@ public: } } } - _p->drawPixmap(QPoint((glyphX + int(st::emojiPadding)).toInt(), _y + _yDelta + emojiY), App::emojis(), QRect(static_cast(currentBlock)->emoji->x, static_cast(currentBlock)->emoji->y, st::emojiImgSize, st::emojiImgSize)); + emojiDraw(*_p, static_cast(currentBlock)->emoji, (glyphX + int(st::emojiPadding)).toInt(), _y + _yDelta + emojiY); // } else if (_p && currentBlock->type() == TextBlockSkip) { // debug // _p->fillRect(QRect(x.toInt(), _y, currentBlock->width(), static_cast(currentBlock)->height()), QColor(0, 0, 0, 32)); } @@ -4050,29 +4046,19 @@ bool textSplit(QString &sendingText, QString &leftText, int32 limit) { } } } - EmojiPtr e = 0; - if (ch->isHighSurrogate()) { - if (ch + 1 < end && (ch + 1)->isLowSurrogate()) { - e = getEmoji((ch->unicode() << 16) | (ch + 1)->unicode()); - if (!e) { - ++ch; - } - } - } else { - if (ch + 1 < end) { - if (((ch->unicode() >= 48 && ch->unicode() < 58) || ch->unicode() == 35) && (ch + 1)->unicode() == 0x20E3) { - e = getEmoji((ch->unicode() << 16) | (ch + 1)->unicode()); - } else if ((ch + 1)->unicode() == 0xFE0F) { - e = getEmoji(ch->unicode()); - } - } - } + int elen = 0; + EmojiPtr e = emojiFromText(ch, end, elen); if (e) { - ch += (e->len - 1); - if (ch + 1 < end && (ch + 1)->unicode() == 0xFE0F) { - ++ch; - ++s; + for (int i = 0; i < elen; ++i, ++ch, ++s) { + if (ch->isHighSurrogate() && i + 1 < elen && (ch + 1)->isLowSurrogate()) { + ++ch; + ++i; + } } + --ch; + --s; + } else if (ch->isHighSurrogate() && ch + 1 < end && (ch + 1)->isLowSurrogate()) { + ++ch; } if (s >= limit) { sendingText = leftText.mid(0, good - start); @@ -4250,3 +4236,7 @@ LinkRanges textParseLinks(const QString &text, int32 flags, bool rich) { // some return lnkRanges; } + +void emojiDraw(QPainter &p, EmojiPtr e, int x, int y) { + p.drawPixmap(QPoint(x, y), App::emojis(), QRect(e->x * ESize, e->y * ESize, ESize, ESize)); +} diff --git a/Telegram/SourceFiles/gui/text.h b/Telegram/SourceFiles/gui/text.h index 0de70f355..49c44c75d 100644 --- a/Telegram/SourceFiles/gui/text.h +++ b/Telegram/SourceFiles/gui/text.h @@ -49,6 +49,8 @@ LinkRanges textParseLinks(const QString &text, int32 flags, bool rich = false); #include "gui/emoji_config.h" +void emojiDraw(QPainter &p, EmojiPtr e, int x, int y); + #include "../../../QtStatic/qtbase/src/gui/text/qfontengine_p.h" enum TextBlockType { diff --git a/Telegram/SourceFiles/history.cpp b/Telegram/SourceFiles/history.cpp index 2c5514c42..3102eb110 100644 --- a/Telegram/SourceFiles/history.cpp +++ b/Telegram/SourceFiles/history.cpp @@ -3448,9 +3448,9 @@ void HistoryWebPage::draw(QPainter &p, const HistoryItem *parent, bool selected, p.fillRect(QRect(width - pixwidth, 0, pixwidth, pixheight), st::black->b); } if (_pixw > pixwidth) { - p.drawPixmap(QRect(width - pixwidth, (pixheight - _pixh) / 2, pixwidth, _pixh), pix, QRect((_pixw - pixwidth) / 2, 0, pixwidth, _pixh)); + p.drawPixmap(QRect(width - pixwidth, (pixheight - _pixh) / 2, pixwidth, _pixh), pix, QRect(cIntRetinaFactor() * (_pixw - pixwidth) / 2, 0, cIntRetinaFactor() * pixwidth, cIntRetinaFactor() * _pixh)); } else if (_pixh > pixheight) { - p.drawPixmap(QRect(width - pixwidth + (pixwidth - _pixw) / 2, 0, _pixw, pixheight), pix, QRect(0, (_pixh - pixheight) / 2, _pixw, pixheight)); + p.drawPixmap(QRect(width - pixwidth + (pixwidth - _pixw) / 2, 0, _pixw, pixheight), pix, QRect(0, cIntRetinaFactor() * (_pixh - pixheight) / 2, cIntRetinaFactor() * _pixw, cIntRetinaFactor() * pixheight)); } else { p.drawPixmap(QPoint(width - pixwidth + (pixwidth - _pixw) / 2, (pixheight - _pixh) / 2), pix); } diff --git a/Telegram/SourceFiles/historywidget.cpp b/Telegram/SourceFiles/historywidget.cpp index 90dbcd6e2..c3255950d 100644 --- a/Telegram/SourceFiles/historywidget.cpp +++ b/Telegram/SourceFiles/historywidget.cpp @@ -1763,9 +1763,7 @@ void HistoryWidget::updateTyping(bool typing) { //} void HistoryWidget::updateRecentStickers() { - if (cEmojiTab() == dbietStickers) { - _emojiPan.onTabChange(); - } + _emojiPan.refreshStickers(); } void HistoryWidget::typingDone(const MTPBool &result, mtpRequestId req) { @@ -1852,7 +1850,6 @@ void HistoryWidget::stickersGot(const MTPmessages_AllStickers &stickers) { } cSetRecentStickers(add); Local::writeRecentStickers(); - _emojiPan.onTabChange(); } const QVector &packs(d.vpacks.c_vector().v); @@ -1862,23 +1859,11 @@ void HistoryWidget::stickersGot(const MTPmessages_AllStickers &stickers) { QString emoticon(qs(p.vemoticon)); EmojiPtr e = 0; for (const QChar *ch = emoticon.constData(), *end = emoticon.constEnd(); ch != end; ++ch) { - if (ch->isHighSurrogate()) { - if (ch + 1 < end && (ch + 1)->isLowSurrogate()) { - e = getEmoji((ch->unicode() << 16) | (ch + 1)->unicode()); - if (!e) { - ++ch; - } - } - } else { - if (ch + 1 < end) { - if (((ch->unicode() >= 48 && ch->unicode() < 58) || ch->unicode() == 35) && (ch + 1)->unicode() == 0x20E3) { - e = getEmoji((ch->unicode() << 16) | (ch + 1)->unicode()); - } else if ((ch + 1)->unicode() == 0xFE0F) { - e = getEmoji(ch->unicode()); - } - } - } + int len = 0; + e = emojiFromText(ch, end, len); if (e) break; + + if (ch + 1 < end && ch->isHighSurrogate() && (ch + 1)->isLowSurrogate()) ++ch; } if (e) { const QVector docs(p.vdocuments.c_vector().v); @@ -1912,7 +1897,7 @@ void HistoryWidget::stickersGot(const MTPmessages_AllStickers &stickers) { } // updateStickerPan(); - _emojiPan.onTabChange(); + _emojiPan.refreshStickers(); } } diff --git a/Telegram/SourceFiles/localstorage.cpp b/Telegram/SourceFiles/localstorage.cpp index e6684cd4d..e69c76a65 100644 --- a/Telegram/SourceFiles/localstorage.cpp +++ b/Telegram/SourceFiles/localstorage.cpp @@ -905,24 +905,62 @@ namespace { if (!_checkStreamStatus(stream)) return false; switch (v) { - case dbietRecent: cSetEmojiTab(dbietRecent); break; - case dbietPeople: cSetEmojiTab(dbietPeople); break; - case dbietNature: cSetEmojiTab(dbietNature); break; - case dbietObjects: cSetEmojiTab(dbietObjects); break; - case dbietPlaces: cSetEmojiTab(dbietPlaces); break; - case dbietSymbols: cSetEmojiTab(dbietSymbols); break; - case dbietStickers: cSetEmojiTab(dbietStickers); break; + case dbietRecent : cSetEmojiTab(dbietRecent ); break; + case dbietPeople : cSetEmojiTab(dbietPeople ); break; + case dbietNature : cSetEmojiTab(dbietNature ); break; + case dbietFood : cSetEmojiTab(dbietFood ); break; + case dbietCelebration: cSetEmojiTab(dbietCelebration); break; + case dbietActivity : cSetEmojiTab(dbietActivity ); break; + case dbietTravel : cSetEmojiTab(dbietTravel ); break; + case dbietObjects : cSetEmojiTab(dbietObjects ); break; + case dbietStickers : cSetEmojiTab(dbietStickers ); break; + } + } break; + + case dbiRecentEmojisOld: { + RecentEmojisPreloadOld v; + stream >> v; + if (!_checkStreamStatus(stream)) return false; + + if (!v.isEmpty()) { + RecentEmojisPreload p; + p.reserve(v.size()); + for (int i = 0; i < v.size(); ++i) { + uint64 e(v.at(i).first); + switch (e) { + case 0xD83CDDEFLLU: e = 0xD83CDDEFD83CDDF5LLU; break; + case 0xD83CDDF0LLU: e = 0xD83CDDF0D83CDDF7LLU; break; + case 0xD83CDDE9LLU: e = 0xD83CDDE9D83CDDEALLU; break; + case 0xD83CDDE8LLU: e = 0xD83CDDE8D83CDDF3LLU; break; + case 0xD83CDDFALLU: e = 0xD83CDDFAD83CDDF8LLU; break; + case 0xD83CDDEBLLU: e = 0xD83CDDEBD83CDDF7LLU; break; + case 0xD83CDDEALLU: e = 0xD83CDDEAD83CDDF8LLU; break; + case 0xD83CDDEELLU: e = 0xD83CDDEED83CDDF9LLU; break; + case 0xD83CDDF7LLU: e = 0xD83CDDF7D83CDDFALLU; break; + case 0xD83CDDECLLU: e = 0xD83CDDECD83CDDE7LLU; break; + } + p.push_back(qMakePair(e, v.at(i).second)); + } + cSetRecentEmojisPreload(p); } } break; case dbiRecentEmojis: { - RecentEmojiPreload v; + RecentEmojisPreload v; stream >> v; if (!_checkStreamStatus(stream)) return false; cSetRecentEmojisPreload(v); } break; + case dbiEmojiVariants: { + EmojiColorVariants v; + stream >> v; + if (!_checkStreamStatus(stream)) return false; + + cSetEmojiVariants(v); + } break; + case dbiDialogLastPath: { QString path; stream >> path; @@ -1140,7 +1178,8 @@ namespace { uint32 size = 11 * (sizeof(quint32) + sizeof(qint32)); size += sizeof(quint32) + _stringSize(cAskDownloadPath() ? QString() : cDownloadPath()); - size += sizeof(quint32) + sizeof(qint32) + cGetRecentEmojis().size() * (sizeof(uint32) + sizeof(ushort)); + size += sizeof(quint32) + sizeof(qint32) + cGetRecentEmojis().size() * (sizeof(uint64) + sizeof(ushort)); + size += sizeof(quint32) + sizeof(qint32) + cEmojiVariants().size() * (sizeof(uint32) + sizeof(uint64)); size += sizeof(quint32) + _stringSize(cDialogLastPath()); EncryptedDescriptor data(size); @@ -1158,13 +1197,15 @@ namespace { data.stream << quint32(dbiEmojiTab) << qint32(cEmojiTab()); data.stream << quint32(dbiDialogLastPath) << cDialogLastPath(); - RecentEmojiPreload v; + RecentEmojisPreload v; v.reserve(cGetRecentEmojis().size()); for (RecentEmojiPack::const_iterator i = cGetRecentEmojis().cbegin(), e = cGetRecentEmojis().cend(); i != e; ++i) { - v.push_back(qMakePair(i->first->code, i->second)); + v.push_back(qMakePair(emojiKey(i->first), i->second)); } data.stream << quint32(dbiRecentEmojis) << v; + data.stream << quint32(dbiEmojiVariants) << cEmojiVariants(); + FileWriteDescriptor file(_userSettingsKey); file.writeEncrypted(data); } diff --git a/Telegram/SourceFiles/settings.cpp b/Telegram/SourceFiles/settings.cpp index ae1da9cc7..c0a09c051 100644 --- a/Telegram/SourceFiles/settings.cpp +++ b/Telegram/SourceFiles/settings.cpp @@ -86,7 +86,8 @@ bool gHasPasscode = false; DBIEmojiTab gEmojiTab = dbietRecent; RecentEmojiPack gRecentEmojis; -RecentEmojiPreload gRecentEmojisPreload; +RecentEmojisPreload gRecentEmojisPreload; +EmojiColorVariants gEmojiVariants; AllStickers gStickers; QByteArray gStickersHash; @@ -185,22 +186,22 @@ void settingsParseArgs(int argc, char *argv[]) { } } -const RecentEmojiPack &cGetRecentEmojis() { +RecentEmojiPack &cGetRecentEmojis() { if (cRecentEmojis().isEmpty()) { RecentEmojiPack r; if (!cRecentEmojisPreload().isEmpty()) { - RecentEmojiPreload p(cRecentEmojisPreload()); - cSetRecentEmojisPreload(RecentEmojiPreload()); + RecentEmojisPreload p(cRecentEmojisPreload()); + cSetRecentEmojisPreload(RecentEmojisPreload()); r.reserve(p.size()); - for (RecentEmojiPreload::const_iterator i = p.cbegin(), e = p.cend(); i != e; ++i) { - uint32 code = ((i->first & 0xFFFFU) == 0xFE0FU) ? ((i->first >> 16) & 0xFFFFU) : i->first; - EmojiPtr ep(getEmoji(code)); + for (RecentEmojisPreload::const_iterator i = p.cbegin(), e = p.cend(); i != e; ++i) { + uint64 code = ((!(i->first & 0xFFFFFFFF00000000LLU) && (i->first & 0xFFFFU) == 0xFE0FU)) ? ((i->first >> 16) & 0xFFFFU) : i->first; + EmojiPtr ep(emojiFromKey(code)); if (!ep) continue; if (ep->postfix) { int32 j = 0, l = r.size(); for (; j < l; ++j) { - if (r[j].first->code == code) { + if (emojiKey(r[j].first) == code) { break; } } @@ -211,47 +212,47 @@ const RecentEmojiPack &cGetRecentEmojis() { r.push_back(qMakePair(ep, i->second)); } } - uint32 defaultRecent[] = { - 0xD83DDE02U, - 0xD83DDE18U, - 0x2764U, - 0xD83DDE0DU, - 0xD83DDE0AU, - 0xD83DDE01U, - 0xD83DDC4DU, - 0x263AU, - 0xD83DDE14U, - 0xD83DDE04U, - 0xD83DDE2DU, - 0xD83DDC8BU, - 0xD83DDE12U, - 0xD83DDE33U, - 0xD83DDE1CU, - 0xD83DDE48U, - 0xD83DDE09U, - 0xD83DDE03U, - 0xD83DDE22U, - 0xD83DDE1DU, - 0xD83DDE31U, - 0xD83DDE21U, - 0xD83DDE0FU, - 0xD83DDE1EU, - 0xD83DDE05U, - 0xD83DDE1AU, - 0xD83DDE4AU, - 0xD83DDE0CU, - 0xD83DDE00U, - 0xD83DDE0BU, - 0xD83DDE06U, - 0xD83DDC4CU, - 0xD83DDE10U, - 0xD83DDE15U, + uint64 defaultRecent[] = { + 0xD83DDE02LLU, + 0xD83DDE18LLU, + 0x2764LLU, + 0xD83DDE0DLLU, + 0xD83DDE0ALLU, + 0xD83DDE01LLU, + 0xD83DDC4DLLU, + 0x263ALLU, + 0xD83DDE14LLU, + 0xD83DDE04LLU, + 0xD83DDE2DLLU, + 0xD83DDC8BLLU, + 0xD83DDE12LLU, + 0xD83DDE33LLU, + 0xD83DDE1CLLU, + 0xD83DDE48LLU, + 0xD83DDE09LLU, + 0xD83DDE03LLU, + 0xD83DDE22LLU, + 0xD83DDE1DLLU, + 0xD83DDE31LLU, + 0xD83DDE21LLU, + 0xD83DDE0FLLU, + 0xD83DDE1ELLU, + 0xD83DDE05LLU, + 0xD83DDE1ALLU, + 0xD83DDE4ALLU, + 0xD83DDE0CLLU, + 0xD83DDE00LLU, + 0xD83DDE0BLLU, + 0xD83DDE06LLU, + 0xD83DDC4CLLU, + 0xD83DDE10LLU, + 0xD83DDE15LLU, }; for (int32 i = 0, s = sizeof(defaultRecent) / sizeof(defaultRecent[0]); i < s; ++i) { if (r.size() >= EmojiPadPerRow * EmojiPadRowsPerPage) break; - EmojiPtr ep(getEmoji(defaultRecent[i])); - if (!ep) continue; + EmojiPtr ep(emojiGet(defaultRecent[i])); + if (!ep || ep == TwoSymbolEmoji) continue; int32 j = 0, l = r.size(); for (; j < l; ++j) { @@ -265,5 +266,5 @@ const RecentEmojiPack &cGetRecentEmojis() { } cSetRecentEmojis(r); } - return cRecentEmojis(); + return cRefRecentEmojis(); } diff --git a/Telegram/SourceFiles/settings.h b/Telegram/SourceFiles/settings.h index 5898e7360..b63480b9d 100644 --- a/Telegram/SourceFiles/settings.h +++ b/Telegram/SourceFiles/settings.h @@ -41,6 +41,11 @@ inline void cSet##Name(const Type &Name) { \ g##Name = Name; \ } +#define DeclareRefSetting(Type, Name) DeclareSetting(Type, Name) \ +inline Type &cRef##Name() { \ + return g##Name; \ +} + DeclareSetting(bool, Rtl); DeclareSetting(Qt::LayoutDirection, LangDir); inline bool rtl() { @@ -153,23 +158,28 @@ T convertScale(T v) { DeclareSetting(DBIEmojiTab, EmojiTab); struct EmojiData { - EmojiData(uint16 x, uint16 y, uint32 code, uint32 code2, uint16 len, uint16 postfix = 0) : x(x), y(y), code(code), code2(code2), len(len), postfix(postfix) { + EmojiData(uint16 x, uint16 y, uint32 code, uint32 code2, uint16 len, uint16 postfix, uint32 color) : x(x), y(y), code(code), code2(code2), len(len), postfix(postfix), color(color) { } uint16 x, y; uint32 code, code2; uint16 len; uint16 postfix; + uint32 color; }; typedef const EmojiData *EmojiPtr; +static EmojiPtr TwoSymbolEmoji = EmojiPtr(0x01); typedef QVector EmojiPack; -typedef QVector > RecentEmojiPreload; +typedef QVector > RecentEmojisPreloadOld; +typedef QVector > RecentEmojisPreload; typedef QVector > RecentEmojiPack; -DeclareSetting(RecentEmojiPack, RecentEmojis); -DeclareSetting(RecentEmojiPreload, RecentEmojisPreload); +typedef QMap EmojiColorVariants; +DeclareRefSetting(RecentEmojiPack, RecentEmojis); +DeclareSetting(RecentEmojisPreload, RecentEmojisPreload); +DeclareRefSetting(EmojiColorVariants, EmojiVariants); -const RecentEmojiPack &cGetRecentEmojis(); +RecentEmojiPack &cGetRecentEmojis(); struct DocumentData; typedef QVector StickerPack; diff --git a/Telegram/SourceFiles/telegram.qrc b/Telegram/SourceFiles/telegram.qrc index e15d6acaf..18b9a5325 100644 --- a/Telegram/SourceFiles/telegram.qrc +++ b/Telegram/SourceFiles/telegram.qrc @@ -10,10 +10,11 @@ art/sprite_125x.png art/sprite_150x.png art/sprite_200x.png - art/emoji.png - art/emoji_125x.png - art/emoji_150x.png - art/emoji_200x.png + art/emoji.webp + art/emoji_125x.webp + art/emoji_150x.webp + art/emoji_200x.webp + art/emoji_250x.webp art/blank.gif art/icon256.png art/iconbig256.png diff --git a/Telegram/SourceFiles/telegram_linux.qrc b/Telegram/SourceFiles/telegram_linux.qrc index d0b331619..8083a827e 100644 --- a/Telegram/SourceFiles/telegram_linux.qrc +++ b/Telegram/SourceFiles/telegram_linux.qrc @@ -10,10 +10,11 @@ art/sprite_125x.png art/sprite_150x.png art/sprite_200x.png - art/emoji.png - art/emoji_125x.png - art/emoji_150x.png - art/emoji_200x.png + art/emoji.webp + art/emoji_125x.webp + art/emoji_150x.webp + art/emoji_200x.webp + art/emoji_250x.webp art/blank.gif art/icon256.png diff --git a/Telegram/SourceFiles/types.h b/Telegram/SourceFiles/types.h index f246d1a20..e72fbd381 100644 --- a/Telegram/SourceFiles/types.h +++ b/Telegram/SourceFiles/types.h @@ -249,7 +249,7 @@ enum DataBlockId { dbiDownloadPath = 21, dbiScale = 22, dbiEmojiTab = 23, - dbiRecentEmojis = 24, + dbiRecentEmojisOld = 24, dbiLoggedPhoneNumber = 25, dbiMutedPeers = 26, // 27 reserved @@ -261,6 +261,8 @@ enum DataBlockId { dbiTileBackground = 33, dbiAutoLock = 34, dbiDialogLastPath = 35, + dbiRecentEmojis = 36, + dbiEmojiVariants = 37, dbiEncryptedWithSalt = 333, dbiEncrypted = 444, @@ -318,14 +320,21 @@ enum DBIScale { }; enum DBIEmojiTab { - dbietRecent = -1, - dbietPeople = 0, - dbietNature = 1, - dbietObjects = 2, - dbietPlaces = 3, - dbietSymbols = 4, - dbietStickers = 666, + dbietRecent = -1, + dbietPeople = 0, + dbietNature = 1, + dbietFood = 2, + dbietCelebration = 3, + dbietActivity = 4, + dbietTravel = 5, + dbietObjects = 6, + dbietStickers = 666, }; +static const int emojiTabCount = 8; +static const int emojiTabShift = 100000; +inline DBIEmojiTab emojiTabAtIndex(int index) { + return (index < 0 || index >= emojiTabCount) ? dbietRecent : DBIEmojiTab(index - 1); +} enum DBIPlatform { dbipWindows = 0, diff --git a/Telegram/Telegram.xcodeproj/qt_preprocess.mak b/Telegram/Telegram.xcodeproj/qt_preprocess.mak index e774b7941..18daacb89 100644 --- a/Telegram/Telegram.xcodeproj/qt_preprocess.mak +++ b/Telegram/Telegram.xcodeproj/qt_preprocess.mak @@ -61,18 +61,19 @@ compiler_rcc_make_all: GeneratedFiles/qrc_telegram.cpp compiler_rcc_clean: -$(DEL_FILE) GeneratedFiles/qrc_telegram.cpp GeneratedFiles/qrc_telegram.cpp: SourceFiles/telegram.qrc \ - SourceFiles/art/emoji.png \ + SourceFiles/art/emoji.webp \ SourceFiles/art/blank.gif \ SourceFiles/art/bg.jpg \ SourceFiles/art/sprite_150x.png \ SourceFiles/art/sprite.png \ SourceFiles/art/icon256.png \ - SourceFiles/art/emoji_150x.png \ + SourceFiles/art/emoji_150x.webp \ SourceFiles/art/sprite_200x.png \ SourceFiles/art/newmsg.wav \ SourceFiles/art/sprite_125x.png \ - SourceFiles/art/emoji_200x.png \ - SourceFiles/art/emoji_125x.png \ + SourceFiles/art/emoji_200x.webp \ + SourceFiles/art/emoji_250x.webp \ + SourceFiles/art/emoji_125x.webp \ SourceFiles/art/fonts/OpenSans-Regular.ttf \ SourceFiles/art/fonts/OpenSans-Bold.ttf \ SourceFiles/art/fonts/OpenSans-Semibold.ttf \