summaryrefslogtreecommitdiffstats
path: root/web
diff options
context:
space:
mode:
Diffstat (limited to 'web')
-rw-r--r--web/react/.eslintrc2
-rw-r--r--web/react/components/admin_console/admin_sidebar.jsx25
-rw-r--r--web/react/components/admin_console/select_team_modal.jsx2
-rw-r--r--web/react/components/center_panel.jsx23
-rw-r--r--web/react/components/command_list.jsx99
-rw-r--r--web/react/components/create_comment.jsx2
-rw-r--r--web/react/components/edit_post_modal.jsx1
-rw-r--r--web/react/components/mention.jsx61
-rw-r--r--web/react/components/mention_list.jsx276
-rw-r--r--web/react/components/post.jsx4
-rw-r--r--web/react/components/post_body.jsx7
-rw-r--r--web/react/components/post_focus_view.jsx2
-rw-r--r--web/react/components/rhs_root_post.jsx8
-rw-r--r--web/react/components/rhs_thread.jsx1
-rw-r--r--web/react/components/search_autocomplete.jsx341
-rw-r--r--web/react/components/search_bar.jsx49
-rw-r--r--web/react/components/search_results_item.jsx10
-rw-r--r--web/react/components/suggestion/at_mention_provider.jsx100
-rw-r--r--web/react/components/suggestion/command_provider.jsx47
-rw-r--r--web/react/components/suggestion/emoticon_provider.jsx74
-rw-r--r--web/react/components/suggestion/search_channel_provider.jsx69
-rw-r--r--web/react/components/suggestion/search_suggestion_list.jsx86
-rw-r--r--web/react/components/suggestion/search_user_provider.jsx62
-rw-r--r--web/react/components/suggestion/suggestion_box.jsx189
-rw-r--r--web/react/components/suggestion/suggestion_list.jsx126
-rw-r--r--web/react/components/team_general_tab.jsx1
-rw-r--r--web/react/components/textbox.jsx206
-rw-r--r--web/react/components/user_settings/user_settings_notifications.jsx49
-rw-r--r--web/react/dispatcher/event_helpers.jsx30
-rw-r--r--web/react/pages/channel.jsx16
-rw-r--r--web/react/stores/search_store.jsx36
-rw-r--r--web/react/stores/suggestion_store.jsx267
-rw-r--r--web/react/utils/async_client.jsx24
-rw-r--r--web/react/utils/constants.jsx9
-rw-r--r--web/react/utils/emoticons.jsx13
-rw-r--r--web/react/utils/utils.jsx28
-rw-r--r--web/sass-files/sass/partials/_admin-console.scss19
-rw-r--r--web/sass-files/sass/partials/_command-box.scss35
-rw-r--r--web/sass-files/sass/partials/_content.scss16
-rw-r--r--web/sass-files/sass/partials/_mentions.scss19
-rw-r--r--web/sass-files/sass/partials/_modal.scss8
-rw-r--r--web/sass-files/sass/partials/_popover.scss2
-rw-r--r--web/sass-files/sass/partials/_responsive.scss50
-rw-r--r--web/sass-files/sass/partials/_search.scss5
-rw-r--r--web/sass-files/sass/partials/_settings.scss4
-rw-r--r--web/sass-files/sass/partials/_sidebar--right.scss4
-rw-r--r--web/sass-files/sass/partials/_suggestion_list.scss63
-rw-r--r--web/sass-files/sass/partials/_tutorial.scss2
-rw-r--r--web/sass-files/sass/styles.scss2
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/+1.pngbin5075 -> 1714 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/-1.pngbin5070 -> 1604 bytes
-rw-r--r--web/static/images/emoji/0023-20e3.pngbin0 -> 1250 bytes
-rw-r--r--web/static/images/emoji/0030-20e3.pngbin0 -> 1169 bytes
-rw-r--r--web/static/images/emoji/0031-20e3.pngbin0 -> 648 bytes
-rw-r--r--web/static/images/emoji/0032-20e3.pngbin0 -> 1105 bytes
-rw-r--r--web/static/images/emoji/0033-20e3.pngbin0 -> 1274 bytes
-rw-r--r--web/static/images/emoji/0034-20e3.pngbin0 -> 891 bytes
-rw-r--r--web/static/images/emoji/0035-20e3.pngbin0 -> 1208 bytes
-rw-r--r--web/static/images/emoji/0036-20e3.pngbin0 -> 1325 bytes
-rw-r--r--web/static/images/emoji/0037-20e3.pngbin0 -> 873 bytes
-rw-r--r--web/static/images/emoji/0038-20e3.pngbin0 -> 1266 bytes
-rw-r--r--web/static/images/emoji/0039-20e3.pngbin0 -> 1267 bytes
-rw-r--r--web/static/images/emoji/00a9.pngbin0 -> 1702 bytes
-rw-r--r--web/static/images/emoji/00ae.pngbin0 -> 1573 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/100.pngbin3251 -> 2196 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/1234.pngbin4751 -> 1360 bytes
-rw-r--r--web/static/images/emoji/1f004.pngbin0 -> 1211 bytes
-rw-r--r--web/static/images/emoji/1f0cf.pngbin0 -> 1806 bytes
-rw-r--r--web/static/images/emoji/1f170.pngbin0 -> 1202 bytes
-rw-r--r--web/static/images/emoji/1f171.pngbin0 -> 1019 bytes
-rw-r--r--web/static/images/emoji/1f17e.pngbin0 -> 1345 bytes
-rw-r--r--web/static/images/emoji/1f17f.pngbin0 -> 869 bytes
-rw-r--r--web/static/images/emoji/1f18e.pngbin0 -> 1419 bytes
-rw-r--r--web/static/images/emoji/1f191.pngbin0 -> 1304 bytes
-rw-r--r--web/static/images/emoji/1f192.pngbin0 -> 1443 bytes
-rw-r--r--web/static/images/emoji/1f193.pngbin0 -> 1078 bytes
-rw-r--r--web/static/images/emoji/1f194.pngbin0 -> 1167 bytes
-rw-r--r--web/static/images/emoji/1f195.pngbin0 -> 1431 bytes
-rw-r--r--web/static/images/emoji/1f196.pngbin0 -> 1462 bytes
-rw-r--r--web/static/images/emoji/1f197.pngbin0 -> 1609 bytes
-rw-r--r--web/static/images/emoji/1f198.pngbin0 -> 1637 bytes
-rw-r--r--web/static/images/emoji/1f199.pngbin0 -> 1292 bytes
-rw-r--r--web/static/images/emoji/1f19a.pngbin0 -> 1560 bytes
-rw-r--r--web/static/images/emoji/1f1e6-1f1e8.pngbin0 -> 2279 bytes
-rw-r--r--web/static/images/emoji/1f1e6-1f1e9.pngbin0 -> 1341 bytes
-rw-r--r--web/static/images/emoji/1f1e6-1f1ea.pngbin0 -> 442 bytes
-rw-r--r--web/static/images/emoji/1f1e6-1f1eb.pngbin0 -> 1486 bytes
-rw-r--r--web/static/images/emoji/1f1e6-1f1ec.pngbin0 -> 1449 bytes
-rw-r--r--web/static/images/emoji/1f1e6-1f1ee.pngbin0 -> 1901 bytes
-rw-r--r--web/static/images/emoji/1f1e6-1f1f1.pngbin0 -> 1505 bytes
-rw-r--r--web/static/images/emoji/1f1e6-1f1f2.pngbin0 -> 399 bytes
-rw-r--r--web/static/images/emoji/1f1e6-1f1f4.pngbin0 -> 1375 bytes
-rw-r--r--web/static/images/emoji/1f1e6-1f1f7.pngbin0 -> 863 bytes
-rw-r--r--web/static/images/emoji/1f1e6-1f1f9.pngbin0 -> 294 bytes
-rw-r--r--web/static/images/emoji/1f1e6-1f1fa.pngbin0 -> 1730 bytes
-rw-r--r--web/static/images/emoji/1f1e6-1f1fc.pngbin0 -> 597 bytes
-rw-r--r--web/static/images/emoji/1f1e6-1f1ff.pngbin0 -> 777 bytes
-rw-r--r--web/static/images/emoji/1f1e7-1f1e6.pngbin0 -> 1530 bytes
-rw-r--r--web/static/images/emoji/1f1e7-1f1e7.pngbin0 -> 728 bytes
-rw-r--r--web/static/images/emoji/1f1e7-1f1e9.pngbin0 -> 708 bytes
-rw-r--r--web/static/images/emoji/1f1e7-1f1ea.pngbin0 -> 361 bytes
-rw-r--r--web/static/images/emoji/1f1e7-1f1eb.pngbin0 -> 782 bytes
-rw-r--r--web/static/images/emoji/1f1e7-1f1ec.pngbin0 -> 407 bytes
-rw-r--r--web/static/images/emoji/1f1e7-1f1ed.pngbin0 -> 792 bytes
-rw-r--r--web/static/images/emoji/1f1e7-1f1ee.pngbin0 -> 1979 bytes
-rw-r--r--web/static/images/emoji/1f1e7-1f1ef.pngbin0 -> 531 bytes
-rw-r--r--web/static/images/emoji/1f1e7-1f1f2.pngbin0 -> 2186 bytes
-rw-r--r--web/static/images/emoji/1f1e7-1f1f3.pngbin0 -> 2422 bytes
-rw-r--r--web/static/images/emoji/1f1e7-1f1f4.pngbin0 -> 950 bytes
-rw-r--r--web/static/images/emoji/1f1e7-1f1f7.pngbin0 -> 1649 bytes
-rw-r--r--web/static/images/emoji/1f1e7-1f1f8.pngbin0 -> 802 bytes
-rw-r--r--web/static/images/emoji/1f1e7-1f1f9.pngbin0 -> 2702 bytes
-rw-r--r--web/static/images/emoji/1f1e7-1f1fc.pngbin0 -> 303 bytes
-rw-r--r--web/static/images/emoji/1f1e7-1f1fe.pngbin0 -> 1709 bytes
-rw-r--r--web/static/images/emoji/1f1e7-1f1ff.pngbin0 -> 2138 bytes
-rw-r--r--web/static/images/emoji/1f1e8-1f1e6.pngbin0 -> 747 bytes
-rw-r--r--web/static/images/emoji/1f1e8-1f1e9.pngbin0 -> 1915 bytes
-rw-r--r--web/static/images/emoji/1f1e8-1f1eb.pngbin0 -> 611 bytes
-rw-r--r--web/static/images/emoji/1f1e8-1f1ec.pngbin0 -> 1149 bytes
-rw-r--r--web/static/images/emoji/1f1e8-1f1ed.pngbin0 -> 468 bytes
-rw-r--r--web/static/images/emoji/1f1e8-1f1ee.pngbin0 -> 361 bytes
-rw-r--r--web/static/images/emoji/1f1e8-1f1f1.pngbin0 -> 691 bytes
-rw-r--r--web/static/images/emoji/1f1e8-1f1f2.pngbin0 -> 619 bytes
-rw-r--r--web/static/images/emoji/1f1e8-1f1f3.pngbin0 -> 697 bytes
-rw-r--r--web/static/images/emoji/1f1e8-1f1f4.pngbin0 -> 405 bytes
-rw-r--r--web/static/images/emoji/1f1e8-1f1f7.pngbin0 -> 298 bytes
-rw-r--r--web/static/images/emoji/1f1e8-1f1fa.pngbin0 -> 1074 bytes
-rw-r--r--web/static/images/emoji/1f1e8-1f1fb.pngbin0 -> 959 bytes
-rw-r--r--web/static/images/emoji/1f1e8-1f1fe.pngbin0 -> 1183 bytes
-rw-r--r--web/static/images/emoji/1f1e8-1f1ff.pngbin0 -> 889 bytes
-rw-r--r--web/static/images/emoji/1f1e9-1f1ea.pngbin0 -> 407 bytes
-rw-r--r--web/static/images/emoji/1f1e9-1f1ef.pngbin0 -> 1155 bytes
-rw-r--r--web/static/images/emoji/1f1e9-1f1f0.pngbin0 -> 310 bytes
-rw-r--r--web/static/images/emoji/1f1e9-1f1f2.pngbin0 -> 1481 bytes
-rw-r--r--web/static/images/emoji/1f1e9-1f1f4.pngbin0 -> 927 bytes
-rw-r--r--web/static/images/emoji/1f1e9-1f1ff.pngbin0 -> 1052 bytes
-rw-r--r--web/static/images/emoji/1f1ea-1f1e8.pngbin0 -> 1587 bytes
-rw-r--r--web/static/images/emoji/1f1ea-1f1ea.pngbin0 -> 407 bytes
-rw-r--r--web/static/images/emoji/1f1ea-1f1ec.pngbin0 -> 843 bytes
-rw-r--r--web/static/images/emoji/1f1ea-1f1ed.pngbin0 -> 1068 bytes
-rw-r--r--web/static/images/emoji/1f1ea-1f1f7.pngbin0 -> 1973 bytes
-rw-r--r--web/static/images/emoji/1f1ea-1f1f8.pngbin0 -> 1197 bytes
-rw-r--r--web/static/images/emoji/1f1ea-1f1f9.pngbin0 -> 1280 bytes
-rw-r--r--web/static/images/emoji/1f1eb-1f1ee.pngbin0 -> 312 bytes
-rw-r--r--web/static/images/emoji/1f1eb-1f1ef.pngbin0 -> 2293 bytes
-rw-r--r--web/static/images/emoji/1f1eb-1f1f0.pngbin0 -> 2245 bytes
-rw-r--r--web/static/images/emoji/1f1eb-1f1f2.pngbin0 -> 744 bytes
-rw-r--r--web/static/images/emoji/1f1eb-1f1f4.pngbin0 -> 328 bytes
-rw-r--r--web/static/images/emoji/1f1eb-1f1f7.pngbin0 -> 432 bytes
-rw-r--r--web/static/images/emoji/1f1ec-1f1e6.pngbin0 -> 407 bytes
-rw-r--r--web/static/images/emoji/1f1ec-1f1e7.pngbin0 -> 2050 bytes
-rw-r--r--web/static/images/emoji/1f1ec-1f1e9.pngbin0 -> 1441 bytes
-rw-r--r--web/static/images/emoji/1f1ec-1f1ea.pngbin0 -> 876 bytes
-rw-r--r--web/static/images/emoji/1f1ec-1f1ed.pngbin0 -> 639 bytes
-rw-r--r--web/static/images/emoji/1f1ec-1f1ee.pngbin0 -> 2223 bytes
-rw-r--r--web/static/images/emoji/1f1ec-1f1f1.pngbin0 -> 818 bytes
-rw-r--r--web/static/images/emoji/1f1ec-1f1f2.pngbin0 -> 419 bytes
-rw-r--r--web/static/images/emoji/1f1ec-1f1f3.pngbin0 -> 363 bytes
-rw-r--r--web/static/images/emoji/1f1ec-1f1f6.pngbin0 -> 1239 bytes
-rw-r--r--web/static/images/emoji/1f1ec-1f1f7.pngbin0 -> 363 bytes
-rw-r--r--web/static/images/emoji/1f1ec-1f1f9.pngbin0 -> 1365 bytes
-rw-r--r--web/static/images/emoji/1f1ec-1f1fa.pngbin0 -> 1531 bytes
-rw-r--r--web/static/images/emoji/1f1ec-1f1fc.pngbin0 -> 719 bytes
-rw-r--r--web/static/images/emoji/1f1ec-1f1fe.pngbin0 -> 1323 bytes
-rw-r--r--web/static/images/emoji/1f1ed-1f1f0.pngbin0 -> 1191 bytes
-rw-r--r--web/static/images/emoji/1f1ed-1f1f3.pngbin0 -> 699 bytes
-rw-r--r--web/static/images/emoji/1f1ed-1f1f7.pngbin0 -> 1615 bytes
-rw-r--r--web/static/images/emoji/1f1ed-1f1f9.pngbin0 -> 1721 bytes
-rw-r--r--web/static/images/emoji/1f1ed-1f1fa.pngbin0 -> 407 bytes
-rw-r--r--web/static/images/emoji/1f1ee-1f1e9.pngbin0 -> 400 bytes
-rw-r--r--web/static/images/emoji/1f1ee-1f1ea.pngbin0 -> 359 bytes
-rw-r--r--web/static/images/emoji/1f1ee-1f1f1.pngbin0 -> 714 bytes
-rw-r--r--web/static/images/emoji/1f1ee-1f1f3.pngbin0 -> 954 bytes
-rw-r--r--web/static/images/emoji/1f1ee-1f1f6.pngbin0 -> 993 bytes
-rw-r--r--web/static/images/emoji/1f1ee-1f1f7.pngbin0 -> 874 bytes
-rw-r--r--web/static/images/emoji/1f1ee-1f1f8.pngbin0 -> 328 bytes
-rw-r--r--web/static/images/emoji/1f1ee-1f1f9.pngbin0 -> 367 bytes
-rw-r--r--web/static/images/emoji/1f1ef-1f1ea.pngbin0 -> 1983 bytes
-rw-r--r--web/static/images/emoji/1f1ef-1f1f2.pngbin0 -> 1727 bytes
-rw-r--r--web/static/images/emoji/1f1ef-1f1f4.pngbin0 -> 1156 bytes
-rw-r--r--web/static/images/emoji/1f1ef-1f1f5.pngbin0 -> 598 bytes
-rw-r--r--web/static/images/emoji/1f1f0-1f1ea.pngbin0 -> 1520 bytes
-rw-r--r--web/static/images/emoji/1f1f0-1f1ec.pngbin0 -> 1345 bytes
-rw-r--r--web/static/images/emoji/1f1f0-1f1ed.pngbin0 -> 1240 bytes
-rw-r--r--web/static/images/emoji/1f1f0-1f1ee.pngbin0 -> 2452 bytes
-rw-r--r--web/static/images/emoji/1f1f0-1f1f2.pngbin0 -> 1416 bytes
-rw-r--r--web/static/images/emoji/1f1f0-1f1f3.pngbin0 -> 2065 bytes
-rw-r--r--web/static/images/emoji/1f1f0-1f1f5.pngbin0 -> 856 bytes
-rw-r--r--web/static/images/emoji/1f1f0-1f1f7.pngbin0 -> 1235 bytes
-rw-r--r--web/static/images/emoji/1f1f0-1f1fc.pngbin0 -> 755 bytes
-rw-r--r--web/static/images/emoji/1f1f0-1f1fe.pngbin0 -> 2335 bytes
-rw-r--r--web/static/images/emoji/1f1f0-1f1ff.pngbin0 -> 1738 bytes
-rw-r--r--web/static/images/emoji/1f1f1-1f1e6.pngbin0 -> 601 bytes
-rw-r--r--web/static/images/emoji/1f1f1-1f1e7.pngbin0 -> 847 bytes
-rw-r--r--web/static/images/emoji/1f1f1-1f1e8.pngbin0 -> 961 bytes
-rw-r--r--web/static/images/emoji/1f1f1-1f1ee.pngbin0 -> 1054 bytes
-rw-r--r--web/static/images/emoji/1f1f1-1f1f0.pngbin0 -> 1702 bytes
-rw-r--r--web/static/images/emoji/1f1f1-1f1f7.pngbin0 -> 825 bytes
-rw-r--r--web/static/images/emoji/1f1f1-1f1f8.pngbin0 -> 869 bytes
-rw-r--r--web/static/images/emoji/1f1f1-1f1f9.pngbin0 -> 407 bytes
-rw-r--r--web/static/images/emoji/1f1f1-1f1fa.pngbin0 -> 407 bytes
-rw-r--r--web/static/images/emoji/1f1f1-1f1fb.pngbin0 -> 295 bytes
-rw-r--r--web/static/images/emoji/1f1f1-1f1fe.pngbin0 -> 836 bytes
-rw-r--r--web/static/images/emoji/1f1f2-1f1e6.pngbin0 -> 895 bytes
-rw-r--r--web/static/images/emoji/1f1f2-1f1e8.pngbin0 -> 400 bytes
-rw-r--r--web/static/images/emoji/1f1f2-1f1e9.pngbin0 -> 1324 bytes
-rw-r--r--web/static/images/emoji/1f1f2-1f1ea.pngbin0 -> 1903 bytes
-rw-r--r--web/static/images/emoji/1f1f2-1f1ec.pngbin0 -> 465 bytes
-rw-r--r--web/static/images/emoji/1f1f2-1f1ed.pngbin0 -> 2043 bytes
-rw-r--r--web/static/images/emoji/1f1f2-1f1f0.pngbin0 -> 1987 bytes
-rw-r--r--web/static/images/emoji/1f1f2-1f1f1.pngbin0 -> 361 bytes
-rw-r--r--web/static/images/emoji/1f1f2-1f1f2.pngbin0 -> 1027 bytes
-rw-r--r--web/static/images/emoji/1f1f2-1f1f3.pngbin0 -> 817 bytes
-rw-r--r--web/static/images/emoji/1f1f2-1f1f4.pngbin0 -> 1314 bytes
-rw-r--r--web/static/images/emoji/1f1f2-1f1f7.pngbin0 -> 881 bytes
-rw-r--r--web/static/images/emoji/1f1f2-1f1f8.pngbin0 -> 1901 bytes
-rw-r--r--web/static/images/emoji/1f1f2-1f1f9.pngbin0 -> 840 bytes
-rw-r--r--web/static/images/emoji/1f1f2-1f1fa.pngbin0 -> 408 bytes
-rw-r--r--web/static/images/emoji/1f1f2-1f1fb.pngbin0 -> 630 bytes
-rw-r--r--web/static/images/emoji/1f1f2-1f1fc.pngbin0 -> 907 bytes
-rw-r--r--web/static/images/emoji/1f1f2-1f1fd.pngbin0 -> 1282 bytes
-rw-r--r--web/static/images/emoji/1f1f2-1f1fe.pngbin0 -> 924 bytes
-rw-r--r--web/static/images/emoji/1f1f2-1f1ff.pngbin0 -> 1518 bytes
-rw-r--r--web/static/images/emoji/1f1f3-1f1e6.pngbin0 -> 2190 bytes
-rw-r--r--web/static/images/emoji/1f1f3-1f1e8.pngbin0 -> 1313 bytes
-rw-r--r--web/static/images/emoji/1f1f3-1f1ea.pngbin0 -> 707 bytes
-rw-r--r--web/static/images/emoji/1f1f3-1f1ec.pngbin0 -> 304 bytes
-rw-r--r--web/static/images/emoji/1f1f3-1f1ee.pngbin0 -> 838 bytes
-rw-r--r--web/static/images/emoji/1f1f3-1f1f1.pngbin0 -> 407 bytes
-rw-r--r--web/static/images/emoji/1f1f3-1f1f4.pngbin0 -> 328 bytes
-rw-r--r--web/static/images/emoji/1f1f3-1f1f5.pngbin0 -> 1507 bytes
-rw-r--r--web/static/images/emoji/1f1f3-1f1f7.pngbin0 -> 607 bytes
-rw-r--r--web/static/images/emoji/1f1f3-1f1fa.pngbin0 -> 1539 bytes
-rw-r--r--web/static/images/emoji/1f1f3-1f1ff.pngbin0 -> 1568 bytes
-rw-r--r--web/static/images/emoji/1f1f4-1f1f2.pngbin0 -> 871 bytes
-rw-r--r--web/static/images/emoji/1f1f5-1f1e6.pngbin0 -> 835 bytes
-rw-r--r--web/static/images/emoji/1f1f5-1f1ea.pngbin0 -> 304 bytes
-rw-r--r--web/static/images/emoji/1f1f5-1f1eb.pngbin0 -> 970 bytes
-rw-r--r--web/static/images/emoji/1f1f5-1f1ec.pngbin0 -> 1710 bytes
-rw-r--r--web/static/images/emoji/1f1f5-1f1ed.pngbin0 -> 1355 bytes
-rw-r--r--web/static/images/emoji/1f1f5-1f1f0.pngbin0 -> 952 bytes
-rw-r--r--web/static/images/emoji/1f1f5-1f1f1.pngbin0 -> 399 bytes
-rw-r--r--web/static/images/emoji/1f1f5-1f1f7.pngbin0 -> 1087 bytes
-rw-r--r--web/static/images/emoji/1f1f5-1f1f8.pngbin0 -> 864 bytes
-rw-r--r--web/static/images/emoji/1f1f5-1f1f9.pngbin0 -> 1570 bytes
-rw-r--r--web/static/images/emoji/1f1f5-1f1fc.pngbin0 -> 639 bytes
-rw-r--r--web/static/images/emoji/1f1f5-1f1fe.pngbin0 -> 1081 bytes
-rw-r--r--web/static/images/emoji/1f1f6-1f1e6.pngbin0 -> 818 bytes
-rw-r--r--web/static/images/emoji/1f1f7-1f1f4.pngbin0 -> 364 bytes
-rw-r--r--web/static/images/emoji/1f1f7-1f1f8.pngbin0 -> 1647 bytes
-rw-r--r--web/static/images/emoji/1f1f7-1f1fa.pngbin0 -> 407 bytes
-rw-r--r--web/static/images/emoji/1f1f7-1f1fc.pngbin0 -> 1038 bytes
-rw-r--r--web/static/images/emoji/1f1f8-1f1e6.pngbin0 -> 1910 bytes
-rw-r--r--web/static/images/emoji/1f1f8-1f1e7.pngbin0 -> 1731 bytes
-rw-r--r--web/static/images/emoji/1f1f8-1f1e8.pngbin0 -> 1639 bytes
-rw-r--r--web/static/images/emoji/1f1f8-1f1e9.pngbin0 -> 875 bytes
-rw-r--r--web/static/images/emoji/1f1f8-1f1ea.pngbin0 -> 310 bytes
-rw-r--r--web/static/images/emoji/1f1f8-1f1ec.pngbin0 -> 926 bytes
-rw-r--r--web/static/images/emoji/1f1f8-1f1ed.pngbin0 -> 2179 bytes
-rw-r--r--web/static/images/emoji/1f1f8-1f1ee.pngbin0 -> 930 bytes
-rw-r--r--web/static/images/emoji/1f1f8-1f1f0.pngbin0 -> 1111 bytes
-rw-r--r--web/static/images/emoji/1f1f8-1f1f1.pngbin0 -> 387 bytes
-rw-r--r--web/static/images/emoji/1f1f8-1f1f2.pngbin0 -> 2475 bytes
-rw-r--r--web/static/images/emoji/1f1f8-1f1f3.pngbin0 -> 654 bytes
-rw-r--r--web/static/images/emoji/1f1f8-1f1f4.pngbin0 -> 752 bytes
-rw-r--r--web/static/images/emoji/1f1f8-1f1f7.pngbin0 -> 575 bytes
-rw-r--r--web/static/images/emoji/1f1f8-1f1f9.pngbin0 -> 1118 bytes
-rw-r--r--web/static/images/emoji/1f1f8-1f1fb.pngbin0 -> 977 bytes
-rw-r--r--web/static/images/emoji/1f1f8-1f1fe.pngbin0 -> 811 bytes
-rw-r--r--web/static/images/emoji/1f1f8-1f1ff.pngbin0 -> 1094 bytes
-rw-r--r--web/static/images/emoji/1f1f9-1f1e9.pngbin0 -> 356 bytes
-rw-r--r--web/static/images/emoji/1f1f9-1f1ec.pngbin0 -> 733 bytes
-rw-r--r--web/static/images/emoji/1f1f9-1f1ed.pngbin0 -> 298 bytes
-rw-r--r--web/static/images/emoji/1f1f9-1f1ef.pngbin0 -> 775 bytes
-rw-r--r--web/static/images/emoji/1f1f9-1f1f1.pngbin0 -> 1488 bytes
-rw-r--r--web/static/images/emoji/1f1f9-1f1f2.pngbin0 -> 2713 bytes
-rw-r--r--web/static/images/emoji/1f1f9-1f1f3.pngbin0 -> 1086 bytes
-rw-r--r--web/static/images/emoji/1f1f9-1f1f4.pngbin0 -> 427 bytes
-rw-r--r--web/static/images/emoji/1f1f9-1f1f7.pngbin0 -> 849 bytes
-rw-r--r--web/static/images/emoji/1f1f9-1f1f9.pngbin0 -> 1721 bytes
-rw-r--r--web/static/images/emoji/1f1f9-1f1fb.pngbin0 -> 1705 bytes
-rw-r--r--web/static/images/emoji/1f1f9-1f1fc.pngbin0 -> 848 bytes
-rw-r--r--web/static/images/emoji/1f1f9-1f1ff.pngbin0 -> 1800 bytes
-rw-r--r--web/static/images/emoji/1f1fa-1f1e6.pngbin0 -> 400 bytes
-rw-r--r--web/static/images/emoji/1f1fa-1f1ec.pngbin0 -> 910 bytes
-rw-r--r--web/static/images/emoji/1f1fa-1f1f8.pngbin0 -> 1324 bytes
-rw-r--r--web/static/images/emoji/1f1fa-1f1fe.pngbin0 -> 1136 bytes
-rw-r--r--web/static/images/emoji/1f1fa-1f1ff.pngbin0 -> 918 bytes
-rw-r--r--web/static/images/emoji/1f1fb-1f1e6.pngbin0 -> 1366 bytes
-rw-r--r--web/static/images/emoji/1f1fb-1f1e8.pngbin0 -> 889 bytes
-rw-r--r--web/static/images/emoji/1f1fb-1f1ea.pngbin0 -> 913 bytes
-rw-r--r--web/static/images/emoji/1f1fb-1f1ee.pngbin0 -> 2547 bytes
-rw-r--r--web/static/images/emoji/1f1fb-1f1f3.pngbin0 -> 707 bytes
-rw-r--r--web/static/images/emoji/1f1fb-1f1fa.pngbin0 -> 1642 bytes
-rw-r--r--web/static/images/emoji/1f1fc-1f1eb.pngbin0 -> 347 bytes
-rw-r--r--web/static/images/emoji/1f1fc-1f1f8.pngbin0 -> 738 bytes
-rw-r--r--web/static/images/emoji/1f1fd-1f1f0.pngbin0 -> 1196 bytes
-rw-r--r--web/static/images/emoji/1f1fe-1f1ea.pngbin0 -> 406 bytes
-rw-r--r--web/static/images/emoji/1f1ff-1f1e6.pngbin0 -> 1651 bytes
-rw-r--r--web/static/images/emoji/1f1ff-1f1f2.pngbin0 -> 827 bytes
-rw-r--r--web/static/images/emoji/1f1ff-1f1fc.pngbin0 -> 1567 bytes
-rw-r--r--web/static/images/emoji/1f201.pngbin0 -> 579 bytes
-rw-r--r--web/static/images/emoji/1f202.pngbin0 -> 912 bytes
-rw-r--r--web/static/images/emoji/1f21a.pngbin0 -> 1313 bytes
-rw-r--r--web/static/images/emoji/1f22f.pngbin0 -> 1393 bytes
-rw-r--r--web/static/images/emoji/1f232.pngbin0 -> 1681 bytes
-rw-r--r--web/static/images/emoji/1f233.pngbin0 -> 1097 bytes
-rw-r--r--web/static/images/emoji/1f234.pngbin0 -> 1176 bytes
-rw-r--r--web/static/images/emoji/1f235.pngbin0 -> 1467 bytes
-rw-r--r--web/static/images/emoji/1f236.pngbin0 -> 1015 bytes
-rw-r--r--web/static/images/emoji/1f237.pngbin0 -> 920 bytes
-rw-r--r--web/static/images/emoji/1f238.pngbin0 -> 542 bytes
-rw-r--r--web/static/images/emoji/1f239.pngbin0 -> 931 bytes
-rw-r--r--web/static/images/emoji/1f23a.pngbin0 -> 994 bytes
-rw-r--r--web/static/images/emoji/1f250.pngbin0 -> 2036 bytes
-rw-r--r--web/static/images/emoji/1f251.pngbin0 -> 1301 bytes
-rw-r--r--web/static/images/emoji/1f300.pngbin0 -> 1579 bytes
-rw-r--r--web/static/images/emoji/1f301.pngbin0 -> 2847 bytes
-rw-r--r--web/static/images/emoji/1f302.pngbin0 -> 1594 bytes
-rw-r--r--web/static/images/emoji/1f303.pngbin0 -> 1875 bytes
-rw-r--r--web/static/images/emoji/1f304.pngbin0 -> 2567 bytes
-rw-r--r--web/static/images/emoji/1f305.pngbin0 -> 3151 bytes
-rw-r--r--web/static/images/emoji/1f306.pngbin0 -> 2691 bytes
-rw-r--r--web/static/images/emoji/1f307.pngbin0 -> 2120 bytes
-rw-r--r--web/static/images/emoji/1f308.pngbin0 -> 3007 bytes
-rw-r--r--web/static/images/emoji/1f309.pngbin0 -> 2941 bytes
-rw-r--r--web/static/images/emoji/1f30a.pngbin0 -> 2317 bytes
-rw-r--r--web/static/images/emoji/1f30b.pngbin0 -> 3024 bytes
-rw-r--r--web/static/images/emoji/1f30c.pngbin0 -> 3185 bytes
-rw-r--r--web/static/images/emoji/1f30d.pngbin0 -> 2318 bytes
-rw-r--r--web/static/images/emoji/1f30e.pngbin0 -> 2427 bytes
-rw-r--r--web/static/images/emoji/1f30f.pngbin0 -> 2509 bytes
-rw-r--r--web/static/images/emoji/1f310.pngbin0 -> 2519 bytes
-rw-r--r--web/static/images/emoji/1f311.pngbin0 -> 918 bytes
-rw-r--r--web/static/images/emoji/1f312.pngbin0 -> 1951 bytes
-rw-r--r--web/static/images/emoji/1f313.pngbin0 -> 1820 bytes
-rw-r--r--web/static/images/emoji/1f314.pngbin0 -> 1974 bytes
-rw-r--r--web/static/images/emoji/1f315.pngbin0 -> 1371 bytes
-rw-r--r--web/static/images/emoji/1f316.pngbin0 -> 2036 bytes
-rw-r--r--web/static/images/emoji/1f317.pngbin0 -> 1829 bytes
-rw-r--r--web/static/images/emoji/1f318.pngbin0 -> 1939 bytes
-rw-r--r--web/static/images/emoji/1f319.pngbin0 -> 1233 bytes
-rw-r--r--web/static/images/emoji/1f31a.pngbin0 -> 2518 bytes
-rw-r--r--web/static/images/emoji/1f31b.pngbin0 -> 1481 bytes
-rw-r--r--web/static/images/emoji/1f31c.pngbin0 -> 1684 bytes
-rw-r--r--web/static/images/emoji/1f31d.pngbin0 -> 2622 bytes
-rw-r--r--web/static/images/emoji/1f31e.pngbin0 -> 2002 bytes
-rw-r--r--web/static/images/emoji/1f31f.pngbin0 -> 2067 bytes
-rw-r--r--web/static/images/emoji/1f320.pngbin0 -> 2550 bytes
-rw-r--r--web/static/images/emoji/1f321.pngbin0 -> 834 bytes
-rw-r--r--web/static/images/emoji/1f327.pngbin0 -> 1663 bytes
-rw-r--r--web/static/images/emoji/1f328.pngbin0 -> 2930 bytes
-rw-r--r--web/static/images/emoji/1f329.pngbin0 -> 1056 bytes
-rw-r--r--web/static/images/emoji/1f32a.pngbin0 -> 2131 bytes
-rw-r--r--web/static/images/emoji/1f32b.pngbin0 -> 2799 bytes
-rw-r--r--web/static/images/emoji/1f32c.pngbin0 -> 3192 bytes
-rw-r--r--web/static/images/emoji/1f330.pngbin0 -> 2789 bytes
-rw-r--r--web/static/images/emoji/1f331.pngbin0 -> 1633 bytes
-rw-r--r--web/static/images/emoji/1f332.pngbin0 -> 1028 bytes
-rw-r--r--web/static/images/emoji/1f333.pngbin0 -> 3621 bytes
-rw-r--r--web/static/images/emoji/1f334.pngbin0 -> 2928 bytes
-rw-r--r--web/static/images/emoji/1f335.pngbin0 -> 2236 bytes
-rw-r--r--web/static/images/emoji/1f336.pngbin0 -> 2828 bytes
-rw-r--r--web/static/images/emoji/1f337.pngbin0 -> 1813 bytes
-rw-r--r--web/static/images/emoji/1f338.pngbin0 -> 3398 bytes
-rw-r--r--web/static/images/emoji/1f339.pngbin0 -> 1782 bytes
-rw-r--r--web/static/images/emoji/1f33a.pngbin0 -> 2466 bytes
-rw-r--r--web/static/images/emoji/1f33b.pngbin0 -> 3259 bytes
-rw-r--r--web/static/images/emoji/1f33c.pngbin0 -> 2061 bytes
-rw-r--r--web/static/images/emoji/1f33d.pngbin0 -> 2872 bytes
-rw-r--r--web/static/images/emoji/1f33e.pngbin0 -> 2154 bytes
-rw-r--r--web/static/images/emoji/1f33f.pngbin0 -> 2437 bytes
-rw-r--r--web/static/images/emoji/1f340.pngbin0 -> 1649 bytes
-rw-r--r--web/static/images/emoji/1f341.pngbin0 -> 2400 bytes
-rw-r--r--web/static/images/emoji/1f342.pngbin0 -> 2499 bytes
-rw-r--r--web/static/images/emoji/1f343.pngbin0 -> 2842 bytes
-rw-r--r--web/static/images/emoji/1f344.pngbin0 -> 1903 bytes
-rw-r--r--web/static/images/emoji/1f345.pngbin0 -> 1872 bytes
-rw-r--r--web/static/images/emoji/1f346.pngbin0 -> 1740 bytes
-rw-r--r--web/static/images/emoji/1f347.pngbin0 -> 1860 bytes
-rw-r--r--web/static/images/emoji/1f348.pngbin0 -> 2931 bytes
-rw-r--r--web/static/images/emoji/1f349.pngbin0 -> 2545 bytes
-rw-r--r--web/static/images/emoji/1f34a.pngbin0 -> 1823 bytes
-rw-r--r--web/static/images/emoji/1f34b.pngbin0 -> 1776 bytes
-rw-r--r--web/static/images/emoji/1f34c.pngbin0 -> 2206 bytes
-rw-r--r--web/static/images/emoji/1f34d.pngbin0 -> 3199 bytes
-rw-r--r--web/static/images/emoji/1f34e.pngbin0 -> 1554 bytes
-rw-r--r--web/static/images/emoji/1f34f.pngbin0 -> 1436 bytes
-rw-r--r--web/static/images/emoji/1f350.pngbin0 -> 1450 bytes
-rw-r--r--web/static/images/emoji/1f351.pngbin0 -> 1129 bytes
-rw-r--r--web/static/images/emoji/1f352.pngbin0 -> 2412 bytes
-rw-r--r--web/static/images/emoji/1f353.pngbin0 -> 2836 bytes
-rw-r--r--web/static/images/emoji/1f354.pngbin0 -> 2608 bytes
-rw-r--r--web/static/images/emoji/1f355.pngbin0 -> 3322 bytes
-rw-r--r--web/static/images/emoji/1f356.pngbin0 -> 1969 bytes
-rw-r--r--web/static/images/emoji/1f357.pngbin0 -> 1371 bytes
-rw-r--r--web/static/images/emoji/1f358.pngbin0 -> 2096 bytes
-rw-r--r--web/static/images/emoji/1f359.pngbin0 -> 3244 bytes
-rw-r--r--web/static/images/emoji/1f35a.pngbin0 -> 1855 bytes
-rw-r--r--web/static/images/emoji/1f35b.pngbin0 -> 2805 bytes
-rw-r--r--web/static/images/emoji/1f35c.pngbin0 -> 3894 bytes
-rw-r--r--web/static/images/emoji/1f35d.pngbin0 -> 3191 bytes
-rw-r--r--web/static/images/emoji/1f35e.pngbin0 -> 1687 bytes
-rw-r--r--web/static/images/emoji/1f35f.pngbin0 -> 3028 bytes
-rw-r--r--web/static/images/emoji/1f360.pngbin0 -> 1814 bytes
-rw-r--r--web/static/images/emoji/1f361.pngbin0 -> 2448 bytes
-rw-r--r--web/static/images/emoji/1f362.pngbin0 -> 2142 bytes
-rw-r--r--web/static/images/emoji/1f363.pngbin0 -> 2939 bytes
-rw-r--r--web/static/images/emoji/1f364.pngbin0 -> 2111 bytes
-rw-r--r--web/static/images/emoji/1f365.pngbin0 -> 2701 bytes
-rw-r--r--web/static/images/emoji/1f366.pngbin0 -> 2862 bytes
-rw-r--r--web/static/images/emoji/1f367.pngbin0 -> 2470 bytes
-rw-r--r--web/static/images/emoji/1f368.pngbin0 -> 1117 bytes
-rw-r--r--web/static/images/emoji/1f369.pngbin0 -> 2267 bytes
-rw-r--r--web/static/images/emoji/1f36a.pngbin0 -> 2178 bytes
-rw-r--r--web/static/images/emoji/1f36b.pngbin0 -> 2073 bytes
-rw-r--r--web/static/images/emoji/1f36c.pngbin0 -> 2075 bytes
-rw-r--r--web/static/images/emoji/1f36d.pngbin0 -> 2409 bytes
-rw-r--r--web/static/images/emoji/1f36e.pngbin0 -> 2601 bytes
-rw-r--r--web/static/images/emoji/1f36f.pngbin0 -> 2425 bytes
-rw-r--r--web/static/images/emoji/1f370.pngbin0 -> 3323 bytes
-rw-r--r--web/static/images/emoji/1f371.pngbin0 -> 3436 bytes
-rw-r--r--web/static/images/emoji/1f372.pngbin0 -> 3337 bytes
-rw-r--r--web/static/images/emoji/1f373.pngbin0 -> 2272 bytes
-rw-r--r--web/static/images/emoji/1f374.pngbin0 -> 1055 bytes
-rw-r--r--web/static/images/emoji/1f375.pngbin0 -> 3072 bytes
-rw-r--r--web/static/images/emoji/1f376.pngbin0 -> 2181 bytes
-rw-r--r--web/static/images/emoji/1f377.pngbin0 -> 1707 bytes
-rw-r--r--web/static/images/emoji/1f378.pngbin0 -> 1863 bytes
-rw-r--r--web/static/images/emoji/1f379.pngbin0 -> 2228 bytes
-rw-r--r--web/static/images/emoji/1f37a.pngbin0 -> 2213 bytes
-rw-r--r--web/static/images/emoji/1f37b.pngbin0 -> 3398 bytes
-rw-r--r--web/static/images/emoji/1f37c.pngbin0 -> 2485 bytes
-rw-r--r--web/static/images/emoji/1f37d.pngbin0 -> 2552 bytes
-rw-r--r--web/static/images/emoji/1f380.pngbin0 -> 1583 bytes
-rw-r--r--web/static/images/emoji/1f381.pngbin0 -> 2876 bytes
-rw-r--r--web/static/images/emoji/1f382.pngbin0 -> 3583 bytes
-rw-r--r--web/static/images/emoji/1f383.pngbin0 -> 2263 bytes
-rw-r--r--web/static/images/emoji/1f384.pngbin0 -> 1803 bytes
-rw-r--r--web/static/images/emoji/1f385.pngbin0 -> 3413 bytes
-rw-r--r--web/static/images/emoji/1f386.pngbin0 -> 3635 bytes
-rw-r--r--web/static/images/emoji/1f387.pngbin0 -> 2420 bytes
-rw-r--r--web/static/images/emoji/1f388.pngbin0 -> 1422 bytes
-rw-r--r--web/static/images/emoji/1f389.pngbin0 -> 3788 bytes
-rw-r--r--web/static/images/emoji/1f38a.pngbin0 -> 3925 bytes
-rw-r--r--web/static/images/emoji/1f38b.pngbin0 -> 1995 bytes
-rw-r--r--web/static/images/emoji/1f38c.pngbin0 -> 2047 bytes
-rw-r--r--web/static/images/emoji/1f38d.pngbin0 -> 1306 bytes
-rw-r--r--web/static/images/emoji/1f38e.pngbin0 -> 3118 bytes
-rw-r--r--web/static/images/emoji/1f38f.pngbin0 -> 1769 bytes
-rw-r--r--web/static/images/emoji/1f390.pngbin0 -> 1581 bytes
-rw-r--r--web/static/images/emoji/1f391.pngbin0 -> 2537 bytes
-rw-r--r--web/static/images/emoji/1f392.pngbin0 -> 918 bytes
-rw-r--r--web/static/images/emoji/1f393.pngbin0 -> 2038 bytes
-rw-r--r--web/static/images/emoji/1f394.pngbin0 -> 1318 bytes
-rw-r--r--web/static/images/emoji/1f395.pngbin0 -> 3171 bytes
-rw-r--r--web/static/images/emoji/1f396.pngbin0 -> 1125 bytes
-rw-r--r--web/static/images/emoji/1f397.pngbin0 -> 1510 bytes
-rw-r--r--web/static/images/emoji/1f398.pngbin0 -> 1625 bytes
-rw-r--r--web/static/images/emoji/1f399.pngbin0 -> 2054 bytes
-rw-r--r--web/static/images/emoji/1f39a.pngbin0 -> 793 bytes
-rw-r--r--web/static/images/emoji/1f39b.pngbin0 -> 2691 bytes
-rw-r--r--web/static/images/emoji/1f39c.pngbin0 -> 1305 bytes
-rw-r--r--web/static/images/emoji/1f39d.pngbin0 -> 1277 bytes
-rw-r--r--web/static/images/emoji/1f39e.pngbin0 -> 3307 bytes
-rw-r--r--web/static/images/emoji/1f39f.pngbin0 -> 3790 bytes
-rw-r--r--web/static/images/emoji/1f3a0.pngbin0 -> 2479 bytes
-rw-r--r--web/static/images/emoji/1f3a1.pngbin0 -> 2474 bytes
-rw-r--r--web/static/images/emoji/1f3a2.pngbin0 -> 2869 bytes
-rw-r--r--web/static/images/emoji/1f3a3.pngbin0 -> 2078 bytes
-rw-r--r--web/static/images/emoji/1f3a4.pngbin0 -> 2823 bytes
-rw-r--r--web/static/images/emoji/1f3a5.pngbin0 -> 1491 bytes
-rw-r--r--web/static/images/emoji/1f3a6.pngbin0 -> 1269 bytes
-rw-r--r--web/static/images/emoji/1f3a7.pngbin0 -> 1693 bytes
-rw-r--r--web/static/images/emoji/1f3a8.pngbin0 -> 2139 bytes
-rw-r--r--web/static/images/emoji/1f3a9.pngbin0 -> 1974 bytes
-rw-r--r--web/static/images/emoji/1f3aa.pngbin0 -> 2473 bytes
-rw-r--r--web/static/images/emoji/1f3ab.pngbin0 -> 771 bytes
-rw-r--r--web/static/images/emoji/1f3ac.pngbin0 -> 1703 bytes
-rw-r--r--web/static/images/emoji/1f3ad.pngbin0 -> 2773 bytes
-rw-r--r--web/static/images/emoji/1f3ae.pngbin0 -> 2065 bytes
-rw-r--r--web/static/images/emoji/1f3af.pngbin0 -> 3044 bytes
-rw-r--r--web/static/images/emoji/1f3b0.pngbin0 -> 1502 bytes
-rw-r--r--web/static/images/emoji/1f3b1.pngbin0 -> 2177 bytes
-rw-r--r--web/static/images/emoji/1f3b2.pngbin0 -> 2043 bytes
-rw-r--r--web/static/images/emoji/1f3b3.pngbin0 -> 2308 bytes
-rw-r--r--web/static/images/emoji/1f3b4.pngbin0 -> 1055 bytes
-rw-r--r--web/static/images/emoji/1f3b5.pngbin0 -> 1255 bytes
-rw-r--r--web/static/images/emoji/1f3b6.pngbin0 -> 1737 bytes
-rw-r--r--web/static/images/emoji/1f3b7.pngbin0 -> 2419 bytes
-rw-r--r--web/static/images/emoji/1f3b8.pngbin0 -> 2052 bytes
-rw-r--r--web/static/images/emoji/1f3b9.pngbin0 -> 998 bytes
-rw-r--r--web/static/images/emoji/1f3ba.pngbin0 -> 2813 bytes
-rw-r--r--web/static/images/emoji/1f3bb.pngbin0 -> 2418 bytes
-rw-r--r--web/static/images/emoji/1f3bc.pngbin0 -> 946 bytes
-rw-r--r--web/static/images/emoji/1f3bd.pngbin0 -> 1945 bytes
-rw-r--r--web/static/images/emoji/1f3be.pngbin0 -> 1894 bytes
-rw-r--r--web/static/images/emoji/1f3bf.pngbin0 -> 2259 bytes
-rw-r--r--web/static/images/emoji/1f3c0.pngbin0 -> 2673 bytes
-rw-r--r--web/static/images/emoji/1f3c1.pngbin0 -> 2277 bytes
-rw-r--r--web/static/images/emoji/1f3c2.pngbin0 -> 3121 bytes
-rw-r--r--web/static/images/emoji/1f3c3.pngbin0 -> 1219 bytes
-rw-r--r--web/static/images/emoji/1f3c4.pngbin0 -> 1973 bytes
-rw-r--r--web/static/images/emoji/1f3c5.pngbin0 -> 2656 bytes
-rw-r--r--web/static/images/emoji/1f3c6.pngbin0 -> 2662 bytes
-rw-r--r--web/static/images/emoji/1f3c7.pngbin0 -> 1739 bytes
-rw-r--r--web/static/images/emoji/1f3c8.pngbin0 -> 2786 bytes
-rw-r--r--web/static/images/emoji/1f3c9.pngbin0 -> 2012 bytes
-rw-r--r--web/static/images/emoji/1f3ca.pngbin0 -> 1866 bytes
-rw-r--r--web/static/images/emoji/1f3cb.pngbin0 -> 1415 bytes
-rw-r--r--web/static/images/emoji/1f3cc.pngbin0 -> 2075 bytes
-rw-r--r--web/static/images/emoji/1f3cd.pngbin0 -> 3611 bytes
-rw-r--r--web/static/images/emoji/1f3ce.pngbin0 -> 3134 bytes
-rw-r--r--web/static/images/emoji/1f3d4.pngbin0 -> 2628 bytes
-rw-r--r--web/static/images/emoji/1f3d5.pngbin0 -> 2369 bytes
-rw-r--r--web/static/images/emoji/1f3d6.pngbin0 -> 2711 bytes
-rw-r--r--web/static/images/emoji/1f3d7.pngbin0 -> 2545 bytes
-rw-r--r--web/static/images/emoji/1f3d8.pngbin0 -> 2627 bytes
-rw-r--r--web/static/images/emoji/1f3d9.pngbin0 -> 2310 bytes
-rw-r--r--web/static/images/emoji/1f3da.pngbin0 -> 3253 bytes
-rw-r--r--web/static/images/emoji/1f3db.pngbin0 -> 1871 bytes
-rw-r--r--web/static/images/emoji/1f3dc.pngbin0 -> 2260 bytes
-rw-r--r--web/static/images/emoji/1f3dd.pngbin0 -> 2974 bytes
-rw-r--r--web/static/images/emoji/1f3de.pngbin0 -> 1722 bytes
-rw-r--r--web/static/images/emoji/1f3df.pngbin0 -> 4111 bytes
-rw-r--r--web/static/images/emoji/1f3e0.pngbin0 -> 1914 bytes
-rw-r--r--web/static/images/emoji/1f3e1.pngbin0 -> 3251 bytes
-rw-r--r--web/static/images/emoji/1f3e2.pngbin0 -> 771 bytes
-rw-r--r--web/static/images/emoji/1f3e3.pngbin0 -> 975 bytes
-rw-r--r--web/static/images/emoji/1f3e4.pngbin0 -> 1018 bytes
-rw-r--r--web/static/images/emoji/1f3e5.pngbin0 -> 918 bytes
-rw-r--r--web/static/images/emoji/1f3e6.pngbin0 -> 1185 bytes
-rw-r--r--web/static/images/emoji/1f3e7.pngbin0 -> 1852 bytes
-rw-r--r--web/static/images/emoji/1f3e8.pngbin0 -> 841 bytes
-rw-r--r--web/static/images/emoji/1f3e9.pngbin0 -> 1232 bytes
-rw-r--r--web/static/images/emoji/1f3ea.pngbin0 -> 1284 bytes
-rw-r--r--web/static/images/emoji/1f3eb.pngbin0 -> 1434 bytes
-rw-r--r--web/static/images/emoji/1f3ec.pngbin0 -> 1241 bytes
-rw-r--r--web/static/images/emoji/1f3ed.pngbin0 -> 1205 bytes
-rw-r--r--web/static/images/emoji/1f3ee.pngbin0 -> 1042 bytes
-rw-r--r--web/static/images/emoji/1f3ef.pngbin0 -> 755 bytes
-rw-r--r--web/static/images/emoji/1f3f0.pngbin0 -> 853 bytes
-rw-r--r--web/static/images/emoji/1f3f1.pngbin0 -> 2163 bytes
-rw-r--r--web/static/images/emoji/1f3f2.pngbin0 -> 2033 bytes
-rw-r--r--web/static/images/emoji/1f3f3.pngbin0 -> 2233 bytes
-rw-r--r--web/static/images/emoji/1f3f4.pngbin0 -> 2164 bytes
-rw-r--r--web/static/images/emoji/1f3f5.pngbin0 -> 2083 bytes
-rw-r--r--web/static/images/emoji/1f3f6.pngbin0 -> 2031 bytes
-rw-r--r--web/static/images/emoji/1f3f7.pngbin0 -> 2895 bytes
-rw-r--r--web/static/images/emoji/1f400.pngbin0 -> 1714 bytes
-rw-r--r--web/static/images/emoji/1f401.pngbin0 -> 1854 bytes
-rw-r--r--web/static/images/emoji/1f402.pngbin0 -> 2815 bytes
-rw-r--r--web/static/images/emoji/1f403.pngbin0 -> 2940 bytes
-rw-r--r--web/static/images/emoji/1f404.pngbin0 -> 1729 bytes
-rw-r--r--web/static/images/emoji/1f405.pngbin0 -> 4135 bytes
-rw-r--r--web/static/images/emoji/1f406.pngbin0 -> 3543 bytes
-rw-r--r--web/static/images/emoji/1f407.pngbin0 -> 1994 bytes
-rw-r--r--web/static/images/emoji/1f408.pngbin0 -> 3085 bytes
-rw-r--r--web/static/images/emoji/1f409.pngbin0 -> 2618 bytes
-rw-r--r--web/static/images/emoji/1f40a.pngbin0 -> 1649 bytes
-rw-r--r--web/static/images/emoji/1f40b.pngbin0 -> 2399 bytes
-rw-r--r--web/static/images/emoji/1f40c.pngbin0 -> 2699 bytes
-rw-r--r--web/static/images/emoji/1f40d.pngbin0 -> 2461 bytes
-rw-r--r--web/static/images/emoji/1f40e.pngbin0 -> 2255 bytes
-rw-r--r--web/static/images/emoji/1f40f.pngbin0 -> 2292 bytes
-rw-r--r--web/static/images/emoji/1f410.pngbin0 -> 1928 bytes
-rw-r--r--web/static/images/emoji/1f411.pngbin0 -> 1828 bytes
-rw-r--r--web/static/images/emoji/1f412.pngbin0 -> 2415 bytes
-rw-r--r--web/static/images/emoji/1f413.pngbin0 -> 2508 bytes
-rw-r--r--web/static/images/emoji/1f414.pngbin0 -> 2564 bytes
-rw-r--r--web/static/images/emoji/1f415.pngbin0 -> 2293 bytes
-rw-r--r--web/static/images/emoji/1f416.pngbin0 -> 2473 bytes
-rw-r--r--web/static/images/emoji/1f417.pngbin0 -> 3695 bytes
-rw-r--r--web/static/images/emoji/1f418.pngbin0 -> 1973 bytes
-rw-r--r--web/static/images/emoji/1f419.pngbin0 -> 2820 bytes
-rw-r--r--web/static/images/emoji/1f41a.pngbin0 -> 1478 bytes
-rw-r--r--web/static/images/emoji/1f41b.pngbin0 -> 2515 bytes
-rw-r--r--web/static/images/emoji/1f41c.pngbin0 -> 2110 bytes
-rw-r--r--web/static/images/emoji/1f41d.pngbin0 -> 2243 bytes
-rw-r--r--web/static/images/emoji/1f41e.pngbin0 -> 3039 bytes
-rw-r--r--web/static/images/emoji/1f41f.pngbin0 -> 2403 bytes
-rw-r--r--web/static/images/emoji/1f420.pngbin0 -> 2610 bytes
-rw-r--r--web/static/images/emoji/1f421.pngbin0 -> 3132 bytes
-rw-r--r--web/static/images/emoji/1f422.pngbin0 -> 2441 bytes
-rw-r--r--web/static/images/emoji/1f423.pngbin0 -> 2372 bytes
-rw-r--r--web/static/images/emoji/1f424.pngbin0 -> 2094 bytes
-rw-r--r--web/static/images/emoji/1f425.pngbin0 -> 1936 bytes
-rw-r--r--web/static/images/emoji/1f426.pngbin0 -> 2041 bytes
-rw-r--r--web/static/images/emoji/1f427.pngbin0 -> 2412 bytes
-rw-r--r--web/static/images/emoji/1f428.pngbin0 -> 2454 bytes
-rw-r--r--web/static/images/emoji/1f429.pngbin0 -> 2342 bytes
-rw-r--r--web/static/images/emoji/1f42a.pngbin0 -> 2022 bytes
-rw-r--r--web/static/images/emoji/1f42b.pngbin0 -> 2025 bytes
-rw-r--r--web/static/images/emoji/1f42c.pngbin0 -> 1980 bytes
-rw-r--r--web/static/images/emoji/1f42d.pngbin0 -> 2384 bytes
-rw-r--r--web/static/images/emoji/1f42e.pngbin0 -> 2464 bytes
-rw-r--r--web/static/images/emoji/1f42f.pngbin0 -> 4005 bytes
-rw-r--r--web/static/images/emoji/1f430.pngbin0 -> 2296 bytes
-rw-r--r--web/static/images/emoji/1f431.pngbin0 -> 3912 bytes
-rw-r--r--web/static/images/emoji/1f432.pngbin0 -> 2518 bytes
-rw-r--r--web/static/images/emoji/1f433.pngbin0 -> 2469 bytes
-rw-r--r--web/static/images/emoji/1f434.pngbin0 -> 2460 bytes
-rw-r--r--web/static/images/emoji/1f435.pngbin0 -> 2837 bytes
-rw-r--r--web/static/images/emoji/1f436.pngbin0 -> 2609 bytes
-rw-r--r--web/static/images/emoji/1f437.pngbin0 -> 3318 bytes
-rw-r--r--web/static/images/emoji/1f438.pngbin0 -> 2385 bytes
-rw-r--r--web/static/images/emoji/1f439.pngbin0 -> 3265 bytes
-rw-r--r--web/static/images/emoji/1f43a.pngbin0 -> 3589 bytes
-rw-r--r--web/static/images/emoji/1f43b.pngbin0 -> 2747 bytes
-rw-r--r--web/static/images/emoji/1f43c.pngbin0 -> 2580 bytes
-rw-r--r--web/static/images/emoji/1f43d.pngbin0 -> 1546 bytes
-rw-r--r--web/static/images/emoji/1f43e.pngbin0 -> 1451 bytes
-rw-r--r--web/static/images/emoji/1f43f.pngbin0 -> 3872 bytes
-rw-r--r--web/static/images/emoji/1f440.pngbin0 -> 2037 bytes
-rw-r--r--web/static/images/emoji/1f441.pngbin0 -> 2701 bytes
-rw-r--r--web/static/images/emoji/1f442.pngbin0 -> 1496 bytes
-rw-r--r--web/static/images/emoji/1f443.pngbin0 -> 1243 bytes
-rw-r--r--web/static/images/emoji/1f444.pngbin0 -> 1556 bytes
-rw-r--r--web/static/images/emoji/1f445.pngbin0 -> 1157 bytes
-rw-r--r--web/static/images/emoji/1f446.pngbin0 -> 1267 bytes
-rw-r--r--web/static/images/emoji/1f447.pngbin0 -> 1304 bytes
-rw-r--r--web/static/images/emoji/1f448.pngbin0 -> 615 bytes
-rw-r--r--web/static/images/emoji/1f449.pngbin0 -> 1294 bytes
-rw-r--r--web/static/images/emoji/1f44a.pngbin0 -> 1892 bytes
-rw-r--r--web/static/images/emoji/1f44b.pngbin0 -> 2210 bytes
-rw-r--r--web/static/images/emoji/1f44c.pngbin0 -> 1893 bytes
-rw-r--r--web/static/images/emoji/1f44d.pngbin0 -> 1714 bytes
-rw-r--r--web/static/images/emoji/1f44e.pngbin0 -> 1604 bytes
-rw-r--r--web/static/images/emoji/1f44f.pngbin0 -> 2203 bytes
-rw-r--r--web/static/images/emoji/1f450.pngbin0 -> 2210 bytes
-rw-r--r--web/static/images/emoji/1f451.pngbin0 -> 2520 bytes
-rw-r--r--web/static/images/emoji/1f452.pngbin0 -> 2769 bytes
-rw-r--r--web/static/images/emoji/1f453.pngbin0 -> 1784 bytes
-rw-r--r--web/static/images/emoji/1f454.pngbin0 -> 2115 bytes
-rw-r--r--web/static/images/emoji/1f455.pngbin0 -> 2017 bytes
-rw-r--r--web/static/images/emoji/1f456.pngbin0 -> 1298 bytes
-rw-r--r--web/static/images/emoji/1f457.pngbin0 -> 2033 bytes
-rw-r--r--web/static/images/emoji/1f458.pngbin0 -> 2913 bytes
-rw-r--r--web/static/images/emoji/1f459.pngbin0 -> 1885 bytes
-rw-r--r--web/static/images/emoji/1f45a.pngbin0 -> 1775 bytes
-rw-r--r--web/static/images/emoji/1f45b.pngbin0 -> 1678 bytes
-rw-r--r--web/static/images/emoji/1f45c.pngbin0 -> 1982 bytes
-rw-r--r--web/static/images/emoji/1f45d.pngbin0 -> 1593 bytes
-rw-r--r--web/static/images/emoji/1f45e.pngbin0 -> 1529 bytes
-rw-r--r--web/static/images/emoji/1f45f.pngbin0 -> 1369 bytes
-rw-r--r--web/static/images/emoji/1f460.pngbin0 -> 1804 bytes
-rw-r--r--web/static/images/emoji/1f461.pngbin0 -> 1683 bytes
-rw-r--r--web/static/images/emoji/1f462.pngbin0 -> 1411 bytes
-rw-r--r--web/static/images/emoji/1f463.pngbin0 -> 1766 bytes
-rw-r--r--web/static/images/emoji/1f464.pngbin0 -> 993 bytes
-rw-r--r--web/static/images/emoji/1f465.pngbin0 -> 1232 bytes
-rw-r--r--web/static/images/emoji/1f466.pngbin0 -> 1992 bytes
-rw-r--r--web/static/images/emoji/1f467.pngbin0 -> 1514 bytes
-rw-r--r--web/static/images/emoji/1f468-1f468-1f466-1f466.pngbin0 -> 3839 bytes
-rw-r--r--web/static/images/emoji/1f468-1f468-1f466.pngbin0 -> 3440 bytes
-rw-r--r--web/static/images/emoji/1f468-1f468-1f467-1f466.pngbin0 -> 4239 bytes
-rw-r--r--web/static/images/emoji/1f468-1f468-1f467-1f467.pngbin0 -> 4454 bytes
-rw-r--r--web/static/images/emoji/1f468-1f468-1f467.pngbin0 -> 3794 bytes
-rw-r--r--web/static/images/emoji/1f468-1f469-1f466-1f466.pngbin0 -> 4432 bytes
-rw-r--r--web/static/images/emoji/1f468-1f469-1f467-1f466.pngbin0 -> 4831 bytes
-rw-r--r--web/static/images/emoji/1f468-1f469-1f467-1f467.pngbin0 -> 5158 bytes
-rw-r--r--web/static/images/emoji/1f468-1f469-1f467.pngbin0 -> 4424 bytes
-rw-r--r--web/static/images/emoji/1f468-2764-1f468.pngbin0 -> 1773 bytes
-rw-r--r--web/static/images/emoji/1f468-2764-1f48b-1f468.pngbin0 -> 1604 bytes
-rw-r--r--web/static/images/emoji/1f468.pngbin0 -> 1303 bytes
-rw-r--r--web/static/images/emoji/1f469-1f469-1f466-1f466.pngbin0 -> 4760 bytes
-rw-r--r--web/static/images/emoji/1f469-1f469-1f466.pngbin0 -> 4524 bytes
-rw-r--r--web/static/images/emoji/1f469-1f469-1f467-1f466.pngbin0 -> 5200 bytes
-rw-r--r--web/static/images/emoji/1f469-1f469-1f467-1f467.pngbin0 -> 5472 bytes
-rw-r--r--web/static/images/emoji/1f469-1f469-1f467.pngbin0 -> 4932 bytes
-rw-r--r--web/static/images/emoji/1f469-2764-1f469.pngbin0 -> 4267 bytes
-rw-r--r--web/static/images/emoji/1f469-2764-1f48b-1f469.pngbin0 -> 2534 bytes
-rw-r--r--web/static/images/emoji/1f469.pngbin0 -> 1862 bytes
-rw-r--r--web/static/images/emoji/1f46a.pngbin0 -> 4120 bytes
-rw-r--r--web/static/images/emoji/1f46b.pngbin0 -> 2209 bytes
-rw-r--r--web/static/images/emoji/1f46c.pngbin0 -> 1670 bytes
-rw-r--r--web/static/images/emoji/1f46d.pngbin0 -> 2395 bytes
-rw-r--r--web/static/images/emoji/1f46e.pngbin0 -> 3057 bytes
-rw-r--r--web/static/images/emoji/1f46f.pngbin0 -> 2855 bytes
-rw-r--r--web/static/images/emoji/1f470.pngbin0 -> 3448 bytes
-rw-r--r--web/static/images/emoji/1f471.pngbin0 -> 1501 bytes
-rw-r--r--web/static/images/emoji/1f472.pngbin0 -> 1722 bytes
-rw-r--r--web/static/images/emoji/1f473.pngbin0 -> 2482 bytes
-rw-r--r--web/static/images/emoji/1f474.pngbin0 -> 1434 bytes
-rw-r--r--web/static/images/emoji/1f475.pngbin0 -> 1642 bytes
-rw-r--r--web/static/images/emoji/1f476.pngbin0 -> 2436 bytes
-rw-r--r--web/static/images/emoji/1f477.pngbin0 -> 2401 bytes
-rw-r--r--web/static/images/emoji/1f478.pngbin0 -> 3119 bytes
-rw-r--r--web/static/images/emoji/1f479.pngbin0 -> 4549 bytes
-rw-r--r--web/static/images/emoji/1f47a.pngbin0 -> 2789 bytes
-rw-r--r--web/static/images/emoji/1f47b.pngbin0 -> 1827 bytes
-rw-r--r--web/static/images/emoji/1f47c.pngbin0 -> 1826 bytes
-rw-r--r--web/static/images/emoji/1f47d.pngbin0 -> 2500 bytes
-rw-r--r--web/static/images/emoji/1f47e.pngbin0 -> 660 bytes
-rw-r--r--web/static/images/emoji/1f47f.pngbin0 -> 2467 bytes
-rw-r--r--web/static/images/emoji/1f480.pngbin0 -> 1689 bytes
-rw-r--r--web/static/images/emoji/1f481.pngbin0 -> 3314 bytes
-rw-r--r--web/static/images/emoji/1f482.pngbin0 -> 1491 bytes
-rw-r--r--web/static/images/emoji/1f483.pngbin0 -> 1554 bytes
-rw-r--r--web/static/images/emoji/1f484.pngbin0 -> 832 bytes
-rw-r--r--web/static/images/emoji/1f485.pngbin0 -> 2297 bytes
-rw-r--r--web/static/images/emoji/1f486.pngbin0 -> 3318 bytes
-rw-r--r--web/static/images/emoji/1f487.pngbin0 -> 3985 bytes
-rw-r--r--web/static/images/emoji/1f488.pngbin0 -> 1771 bytes
-rw-r--r--web/static/images/emoji/1f489.pngbin0 -> 1286 bytes
-rw-r--r--web/static/images/emoji/1f48a.pngbin0 -> 1010 bytes
-rw-r--r--web/static/images/emoji/1f48b.pngbin0 -> 1692 bytes
-rw-r--r--web/static/images/emoji/1f48c.pngbin0 -> 1878 bytes
-rw-r--r--web/static/images/emoji/1f48d.pngbin0 -> 2902 bytes
-rw-r--r--web/static/images/emoji/1f48e.pngbin0 -> 1769 bytes
-rw-r--r--web/static/images/emoji/1f48f.pngbin0 -> 3350 bytes
-rw-r--r--web/static/images/emoji/1f490.pngbin0 -> 3694 bytes
-rw-r--r--web/static/images/emoji/1f491.pngbin0 -> 3737 bytes
-rw-r--r--web/static/images/emoji/1f492.pngbin0 -> 2594 bytes
-rw-r--r--web/static/images/emoji/1f493.pngbin0 -> 1720 bytes
-rw-r--r--web/static/images/emoji/1f494.pngbin0 -> 1703 bytes
-rw-r--r--web/static/images/emoji/1f495.pngbin0 -> 1485 bytes
-rw-r--r--web/static/images/emoji/1f496.pngbin0 -> 1979 bytes
-rw-r--r--web/static/images/emoji/1f497.pngbin0 -> 2240 bytes
-rw-r--r--web/static/images/emoji/1f498.pngbin0 -> 2004 bytes
-rw-r--r--web/static/images/emoji/1f499.pngbin0 -> 1226 bytes
-rw-r--r--web/static/images/emoji/1f49a.pngbin0 -> 1207 bytes
-rw-r--r--web/static/images/emoji/1f49b.pngbin0 -> 1218 bytes
-rw-r--r--web/static/images/emoji/1f49c.pngbin0 -> 1217 bytes
-rw-r--r--web/static/images/emoji/1f49d.pngbin0 -> 2059 bytes
-rw-r--r--web/static/images/emoji/1f49e.pngbin0 -> 2193 bytes
-rw-r--r--web/static/images/emoji/1f49f.pngbin0 -> 1072 bytes
-rw-r--r--web/static/images/emoji/1f4a0.pngbin0 -> 1680 bytes
-rw-r--r--web/static/images/emoji/1f4a1.pngbin0 -> 2472 bytes
-rw-r--r--web/static/images/emoji/1f4a2.pngbin0 -> 1434 bytes
-rw-r--r--web/static/images/emoji/1f4a3.pngbin0 -> 2226 bytes
-rw-r--r--web/static/images/emoji/1f4a4.pngbin0 -> 1214 bytes
-rw-r--r--web/static/images/emoji/1f4a5.pngbin0 -> 2389 bytes
-rw-r--r--web/static/images/emoji/1f4a6.pngbin0 -> 1215 bytes
-rw-r--r--web/static/images/emoji/1f4a7.pngbin0 -> 1090 bytes
-rw-r--r--web/static/images/emoji/1f4a8.pngbin0 -> 1829 bytes
-rw-r--r--web/static/images/emoji/1f4a9.pngbin0 -> 3991 bytes
-rw-r--r--web/static/images/emoji/1f4aa.pngbin0 -> 1731 bytes
-rw-r--r--web/static/images/emoji/1f4ab.pngbin0 -> 1701 bytes
-rw-r--r--web/static/images/emoji/1f4ac.pngbin0 -> 1289 bytes
-rw-r--r--web/static/images/emoji/1f4ad.pngbin0 -> 1040 bytes
-rw-r--r--web/static/images/emoji/1f4ae.pngbin0 -> 2428 bytes
-rw-r--r--web/static/images/emoji/1f4af.pngbin0 -> 2196 bytes
-rw-r--r--web/static/images/emoji/1f4b0.pngbin0 -> 1953 bytes
-rw-r--r--web/static/images/emoji/1f4b1.pngbin0 -> 1625 bytes
-rw-r--r--web/static/images/emoji/1f4b2.pngbin0 -> 1134 bytes
-rw-r--r--web/static/images/emoji/1f4b3.pngbin0 -> 400 bytes
-rw-r--r--web/static/images/emoji/1f4b4.pngbin0 -> 1365 bytes
-rw-r--r--web/static/images/emoji/1f4b5.pngbin0 -> 1579 bytes
-rw-r--r--web/static/images/emoji/1f4b6.pngbin0 -> 1578 bytes
-rw-r--r--web/static/images/emoji/1f4b7.pngbin0 -> 1464 bytes
-rw-r--r--web/static/images/emoji/1f4b8.pngbin0 -> 2699 bytes
-rw-r--r--web/static/images/emoji/1f4b9.pngbin0 -> 1448 bytes
-rw-r--r--web/static/images/emoji/1f4ba.pngbin0 -> 2569 bytes
-rw-r--r--web/static/images/emoji/1f4bb.pngbin0 -> 1436 bytes
-rw-r--r--web/static/images/emoji/1f4bc.pngbin0 -> 1042 bytes
-rw-r--r--web/static/images/emoji/1f4bd.pngbin0 -> 1449 bytes
-rw-r--r--web/static/images/emoji/1f4be.pngbin0 -> 523 bytes
-rw-r--r--web/static/images/emoji/1f4bf.pngbin0 -> 1809 bytes
-rw-r--r--web/static/images/emoji/1f4c0.pngbin0 -> 1951 bytes
-rw-r--r--web/static/images/emoji/1f4c1.pngbin0 -> 1746 bytes
-rw-r--r--web/static/images/emoji/1f4c2.pngbin0 -> 1870 bytes
-rw-r--r--web/static/images/emoji/1f4c3.pngbin0 -> 1117 bytes
-rw-r--r--web/static/images/emoji/1f4c4.pngbin0 -> 840 bytes
-rw-r--r--web/static/images/emoji/1f4c5.pngbin0 -> 1365 bytes
-rw-r--r--web/static/images/emoji/1f4c6.pngbin0 -> 1241 bytes
-rw-r--r--web/static/images/emoji/1f4c7.pngbin0 -> 1350 bytes
-rw-r--r--web/static/images/emoji/1f4c8.pngbin0 -> 2165 bytes
-rw-r--r--web/static/images/emoji/1f4c9.pngbin0 -> 2131 bytes
-rw-r--r--web/static/images/emoji/1f4ca.pngbin0 -> 1671 bytes
-rw-r--r--web/static/images/emoji/1f4cb.pngbin0 -> 1031 bytes
-rw-r--r--web/static/images/emoji/1f4cc.pngbin0 -> 1868 bytes
-rw-r--r--web/static/images/emoji/1f4cd.pngbin0 -> 1675 bytes
-rw-r--r--web/static/images/emoji/1f4ce.pngbin0 -> 1802 bytes
-rw-r--r--web/static/images/emoji/1f4cf.pngbin0 -> 1905 bytes
-rw-r--r--web/static/images/emoji/1f4d0.pngbin0 -> 542 bytes
-rw-r--r--web/static/images/emoji/1f4d1.pngbin0 -> 1425 bytes
-rw-r--r--web/static/images/emoji/1f4d2.pngbin0 -> 2565 bytes
-rw-r--r--web/static/images/emoji/1f4d3.pngbin0 -> 1440 bytes
-rw-r--r--web/static/images/emoji/1f4d4.pngbin0 -> 1571 bytes
-rw-r--r--web/static/images/emoji/1f4d5.pngbin0 -> 1578 bytes
-rw-r--r--web/static/images/emoji/1f4d6.pngbin0 -> 1152 bytes
-rw-r--r--web/static/images/emoji/1f4d7.pngbin0 -> 1638 bytes
-rw-r--r--web/static/images/emoji/1f4d8.pngbin0 -> 1603 bytes
-rw-r--r--web/static/images/emoji/1f4d9.pngbin0 -> 1602 bytes
-rw-r--r--web/static/images/emoji/1f4da.pngbin0 -> 2505 bytes
-rw-r--r--web/static/images/emoji/1f4db.pngbin0 -> 1662 bytes
-rw-r--r--web/static/images/emoji/1f4dc.pngbin0 -> 1297 bytes
-rw-r--r--web/static/images/emoji/1f4dd.pngbin0 -> 2127 bytes
-rw-r--r--web/static/images/emoji/1f4de.pngbin0 -> 1774 bytes
-rw-r--r--web/static/images/emoji/1f4df.pngbin0 -> 1013 bytes
-rw-r--r--web/static/images/emoji/1f4e0.pngbin0 -> 987 bytes
-rw-r--r--web/static/images/emoji/1f4e1.pngbin0 -> 2662 bytes
-rw-r--r--web/static/images/emoji/1f4e2.pngbin0 -> 2119 bytes
-rw-r--r--web/static/images/emoji/1f4e3.pngbin0 -> 1134 bytes
-rw-r--r--web/static/images/emoji/1f4e4.pngbin0 -> 796 bytes
-rw-r--r--web/static/images/emoji/1f4e5.pngbin0 -> 774 bytes
-rw-r--r--web/static/images/emoji/1f4e6.pngbin0 -> 2021 bytes
-rw-r--r--web/static/images/emoji/1f4e7.pngbin0 -> 1703 bytes
-rw-r--r--web/static/images/emoji/1f4e8.pngbin0 -> 1548 bytes
-rw-r--r--web/static/images/emoji/1f4e9.pngbin0 -> 2151 bytes
-rw-r--r--web/static/images/emoji/1f4ea.pngbin0 -> 823 bytes
-rw-r--r--web/static/images/emoji/1f4eb.pngbin0 -> 836 bytes
-rw-r--r--web/static/images/emoji/1f4ec.pngbin0 -> 868 bytes
-rw-r--r--web/static/images/emoji/1f4ed.pngbin0 -> 809 bytes
-rw-r--r--web/static/images/emoji/1f4ee.pngbin0 -> 942 bytes
-rw-r--r--web/static/images/emoji/1f4ef.pngbin0 -> 1867 bytes
-rw-r--r--web/static/images/emoji/1f4f0.pngbin0 -> 2741 bytes
-rw-r--r--web/static/images/emoji/1f4f1.pngbin0 -> 874 bytes
-rw-r--r--web/static/images/emoji/1f4f2.pngbin0 -> 1242 bytes
-rw-r--r--web/static/images/emoji/1f4f3.pngbin0 -> 1408 bytes
-rw-r--r--web/static/images/emoji/1f4f4.pngbin0 -> 1223 bytes
-rw-r--r--web/static/images/emoji/1f4f5.pngbin0 -> 1923 bytes
-rw-r--r--web/static/images/emoji/1f4f6.pngbin0 -> 975 bytes
-rw-r--r--web/static/images/emoji/1f4f7.pngbin0 -> 1607 bytes
-rw-r--r--web/static/images/emoji/1f4f8.pngbin0 -> 2184 bytes
-rw-r--r--web/static/images/emoji/1f4f9.pngbin0 -> 906 bytes
-rw-r--r--web/static/images/emoji/1f4fa.pngbin0 -> 1661 bytes
-rw-r--r--web/static/images/emoji/1f4fb.pngbin0 -> 1628 bytes
-rw-r--r--web/static/images/emoji/1f4fc.pngbin0 -> 1165 bytes
-rw-r--r--web/static/images/emoji/1f4fd.pngbin0 -> 3118 bytes
-rw-r--r--web/static/images/emoji/1f4fe.pngbin0 -> 2571 bytes
-rw-r--r--web/static/images/emoji/1f500.pngbin0 -> 1548 bytes
-rw-r--r--web/static/images/emoji/1f501.pngbin0 -> 1459 bytes
-rw-r--r--web/static/images/emoji/1f502.pngbin0 -> 1578 bytes
-rw-r--r--web/static/images/emoji/1f503.pngbin0 -> 1353 bytes
-rw-r--r--web/static/images/emoji/1f504.pngbin0 -> 1482 bytes
-rw-r--r--web/static/images/emoji/1f505.pngbin0 -> 1407 bytes
-rw-r--r--web/static/images/emoji/1f506.pngbin0 -> 1607 bytes
-rw-r--r--web/static/images/emoji/1f507.pngbin0 -> 2662 bytes
-rw-r--r--web/static/images/emoji/1f508.pngbin0 -> 2119 bytes
-rw-r--r--web/static/images/emoji/1f509.pngbin0 -> 1878 bytes
-rw-r--r--web/static/images/emoji/1f50a.pngbin0 -> 2331 bytes
-rw-r--r--web/static/images/emoji/1f50b.pngbin0 -> 946 bytes
-rw-r--r--web/static/images/emoji/1f50c.pngbin0 -> 1480 bytes
-rw-r--r--web/static/images/emoji/1f50d.pngbin0 -> 2385 bytes
-rw-r--r--web/static/images/emoji/1f50e.pngbin0 -> 2407 bytes
-rw-r--r--web/static/images/emoji/1f50f.pngbin0 -> 1592 bytes
-rw-r--r--web/static/images/emoji/1f510.pngbin0 -> 1563 bytes
-rw-r--r--web/static/images/emoji/1f511.pngbin0 -> 1260 bytes
-rw-r--r--web/static/images/emoji/1f512.pngbin0 -> 780 bytes
-rw-r--r--web/static/images/emoji/1f513.pngbin0 -> 653 bytes
-rw-r--r--web/static/images/emoji/1f514.pngbin0 -> 1844 bytes
-rw-r--r--web/static/images/emoji/1f515.pngbin0 -> 2414 bytes
-rw-r--r--web/static/images/emoji/1f516.pngbin0 -> 1924 bytes
-rw-r--r--web/static/images/emoji/1f517.pngbin0 -> 1634 bytes
-rw-r--r--web/static/images/emoji/1f518.pngbin0 -> 1423 bytes
-rw-r--r--web/static/images/emoji/1f519.pngbin0 -> 1268 bytes
-rw-r--r--web/static/images/emoji/1f51a.pngbin0 -> 1452 bytes
-rw-r--r--web/static/images/emoji/1f51b.pngbin0 -> 1811 bytes
-rw-r--r--web/static/images/emoji/1f51c.pngbin0 -> 1715 bytes
-rw-r--r--web/static/images/emoji/1f51d.pngbin0 -> 564 bytes
-rw-r--r--web/static/images/emoji/1f51e.pngbin0 -> 2569 bytes
-rw-r--r--web/static/images/emoji/1f51f.pngbin0 -> 1372 bytes
-rw-r--r--web/static/images/emoji/1f520.pngbin0 -> 1760 bytes
-rw-r--r--web/static/images/emoji/1f521.pngbin0 -> 1718 bytes
-rw-r--r--web/static/images/emoji/1f522.pngbin0 -> 1360 bytes
-rw-r--r--web/static/images/emoji/1f523.pngbin0 -> 1763 bytes
-rw-r--r--web/static/images/emoji/1f524.pngbin0 -> 1502 bytes
-rw-r--r--web/static/images/emoji/1f525.pngbin0 -> 1906 bytes
-rw-r--r--web/static/images/emoji/1f526.pngbin0 -> 1373 bytes
-rw-r--r--web/static/images/emoji/1f527.pngbin0 -> 1546 bytes
-rw-r--r--web/static/images/emoji/1f528.pngbin0 -> 1612 bytes
-rw-r--r--web/static/images/emoji/1f529.pngbin0 -> 1162 bytes
-rw-r--r--web/static/images/emoji/1f52a.pngbin0 -> 1426 bytes
-rw-r--r--web/static/images/emoji/1f52b.pngbin0 -> 1661 bytes
-rw-r--r--web/static/images/emoji/1f52c.pngbin0 -> 1945 bytes
-rw-r--r--web/static/images/emoji/1f52d.pngbin0 -> 2246 bytes
-rw-r--r--web/static/images/emoji/1f52e.pngbin0 -> 2148 bytes
-rw-r--r--web/static/images/emoji/1f52f.pngbin0 -> 1714 bytes
-rw-r--r--web/static/images/emoji/1f530.pngbin0 -> 1307 bytes
-rw-r--r--web/static/images/emoji/1f531.pngbin0 -> 2153 bytes
-rw-r--r--web/static/images/emoji/1f532.pngbin0 -> 576 bytes
-rw-r--r--web/static/images/emoji/1f533.pngbin0 -> 526 bytes
-rw-r--r--web/static/images/emoji/1f534.pngbin0 -> 976 bytes
-rw-r--r--web/static/images/emoji/1f535.pngbin0 -> 985 bytes
-rw-r--r--web/static/images/emoji/1f536.pngbin0 -> 259 bytes
-rw-r--r--web/static/images/emoji/1f537.pngbin0 -> 251 bytes
-rw-r--r--web/static/images/emoji/1f538.pngbin0 -> 799 bytes
-rw-r--r--web/static/images/emoji/1f539.pngbin0 -> 775 bytes
-rw-r--r--web/static/images/emoji/1f53a.pngbin0 -> 870 bytes
-rw-r--r--web/static/images/emoji/1f53b.pngbin0 -> 837 bytes
-rw-r--r--web/static/images/emoji/1f53c.pngbin0 -> 825 bytes
-rw-r--r--web/static/images/emoji/1f53d.pngbin0 -> 778 bytes
-rw-r--r--web/static/images/emoji/1f546.pngbin0 -> 1117 bytes
-rw-r--r--web/static/images/emoji/1f547.pngbin0 -> 1169 bytes
-rw-r--r--web/static/images/emoji/1f548.pngbin0 -> 955 bytes
-rw-r--r--web/static/images/emoji/1f549.pngbin0 -> 2831 bytes
-rw-r--r--web/static/images/emoji/1f54a.pngbin0 -> 2134 bytes
-rw-r--r--web/static/images/emoji/1f550.pngbin0 -> 1853 bytes
-rw-r--r--web/static/images/emoji/1f551.pngbin0 -> 1866 bytes
-rw-r--r--web/static/images/emoji/1f552.pngbin0 -> 1759 bytes
-rw-r--r--web/static/images/emoji/1f553.pngbin0 -> 1914 bytes
-rw-r--r--web/static/images/emoji/1f554.pngbin0 -> 2017 bytes
-rw-r--r--web/static/images/emoji/1f555.pngbin0 -> 1676 bytes
-rw-r--r--web/static/images/emoji/1f556.pngbin0 -> 1853 bytes
-rw-r--r--web/static/images/emoji/1f557.pngbin0 -> 1897 bytes
-rw-r--r--web/static/images/emoji/1f558.pngbin0 -> 1741 bytes
-rw-r--r--web/static/images/emoji/1f559.pngbin0 -> 1877 bytes
-rw-r--r--web/static/images/emoji/1f55a.pngbin0 -> 1863 bytes
-rw-r--r--web/static/images/emoji/1f55b.pngbin0 -> 1890 bytes
-rw-r--r--web/static/images/emoji/1f55c.pngbin0 -> 1864 bytes
-rw-r--r--web/static/images/emoji/1f55d.pngbin0 -> 1733 bytes
-rw-r--r--web/static/images/emoji/1f55e.pngbin0 -> 1834 bytes
-rw-r--r--web/static/images/emoji/1f55f.pngbin0 -> 1920 bytes
-rw-r--r--web/static/images/emoji/1f560.pngbin0 -> 1867 bytes
-rw-r--r--web/static/images/emoji/1f561.pngbin0 -> 1731 bytes
-rw-r--r--web/static/images/emoji/1f562.pngbin0 -> 1874 bytes
-rw-r--r--web/static/images/emoji/1f563.pngbin0 -> 1811 bytes
-rw-r--r--web/static/images/emoji/1f564.pngbin0 -> 1733 bytes
-rw-r--r--web/static/images/emoji/1f565.pngbin0 -> 1988 bytes
-rw-r--r--web/static/images/emoji/1f566.pngbin0 -> 1833 bytes
-rw-r--r--web/static/images/emoji/1f567.pngbin0 -> 1789 bytes
-rw-r--r--web/static/images/emoji/1f568.pngbin0 -> 2071 bytes
-rw-r--r--web/static/images/emoji/1f569.pngbin0 -> 2414 bytes
-rw-r--r--web/static/images/emoji/1f56a.pngbin0 -> 2375 bytes
-rw-r--r--web/static/images/emoji/1f56b.pngbin0 -> 2224 bytes
-rw-r--r--web/static/images/emoji/1f56c.pngbin0 -> 2490 bytes
-rw-r--r--web/static/images/emoji/1f56d.pngbin0 -> 2765 bytes
-rw-r--r--web/static/images/emoji/1f56e.pngbin0 -> 4107 bytes
-rw-r--r--web/static/images/emoji/1f56f.pngbin0 -> 1870 bytes
-rw-r--r--web/static/images/emoji/1f570.pngbin0 -> 1856 bytes
-rw-r--r--web/static/images/emoji/1f571.pngbin0 -> 1996 bytes
-rw-r--r--web/static/images/emoji/1f572.pngbin0 -> 3051 bytes
-rw-r--r--web/static/images/emoji/1f573.pngbin0 -> 435 bytes
-rw-r--r--web/static/images/emoji/1f574.pngbin0 -> 1761 bytes
-rw-r--r--web/static/images/emoji/1f575.pngbin0 -> 2330 bytes
-rw-r--r--web/static/images/emoji/1f576.pngbin0 -> 1548 bytes
-rw-r--r--web/static/images/emoji/1f577.pngbin0 -> 2184 bytes
-rw-r--r--web/static/images/emoji/1f578.pngbin0 -> 2773 bytes
-rw-r--r--web/static/images/emoji/1f579.pngbin0 -> 1919 bytes
-rw-r--r--web/static/images/emoji/1f57b.pngbin0 -> 1227 bytes
-rw-r--r--web/static/images/emoji/1f57e.pngbin0 -> 1424 bytes
-rw-r--r--web/static/images/emoji/1f57f.pngbin0 -> 1811 bytes
-rw-r--r--web/static/images/emoji/1f581.pngbin0 -> 1640 bytes
-rw-r--r--web/static/images/emoji/1f582.pngbin0 -> 1516 bytes
-rw-r--r--web/static/images/emoji/1f583.pngbin0 -> 504 bytes
-rw-r--r--web/static/images/emoji/1f585.pngbin0 -> 829 bytes
-rw-r--r--web/static/images/emoji/1f586.pngbin0 -> 1559 bytes
-rw-r--r--web/static/images/emoji/1f587.pngbin0 -> 3222 bytes
-rw-r--r--web/static/images/emoji/1f588.pngbin0 -> 1761 bytes
-rw-r--r--web/static/images/emoji/1f589.pngbin0 -> 1772 bytes
-rw-r--r--web/static/images/emoji/1f58a.pngbin0 -> 1628 bytes
-rw-r--r--web/static/images/emoji/1f58b.pngbin0 -> 1666 bytes
-rw-r--r--web/static/images/emoji/1f58c.pngbin0 -> 1080 bytes
-rw-r--r--web/static/images/emoji/1f58d.pngbin0 -> 1398 bytes
-rw-r--r--web/static/images/emoji/1f58e.pngbin0 -> 2433 bytes
-rw-r--r--web/static/images/emoji/1f58f.pngbin0 -> 1508 bytes
-rw-r--r--web/static/images/emoji/1f590.pngbin0 -> 1539 bytes
-rw-r--r--web/static/images/emoji/1f591.pngbin0 -> 1487 bytes
-rw-r--r--web/static/images/emoji/1f592.pngbin0 -> 1222 bytes
-rw-r--r--web/static/images/emoji/1f593.pngbin0 -> 1253 bytes
-rw-r--r--web/static/images/emoji/1f594.pngbin0 -> 1254 bytes
-rw-r--r--web/static/images/emoji/1f595.pngbin0 -> 1673 bytes
-rw-r--r--web/static/images/emoji/1f596.pngbin0 -> 1757 bytes
-rw-r--r--web/static/images/emoji/1f597.pngbin0 -> 1495 bytes
-rw-r--r--web/static/images/emoji/1f598.pngbin0 -> 1122 bytes
-rw-r--r--web/static/images/emoji/1f599.pngbin0 -> 1118 bytes
-rw-r--r--web/static/images/emoji/1f59e.pngbin0 -> 1264 bytes
-rw-r--r--web/static/images/emoji/1f59f.pngbin0 -> 1250 bytes
-rw-r--r--web/static/images/emoji/1f5a5.pngbin0 -> 779 bytes
-rw-r--r--web/static/images/emoji/1f5a6.pngbin0 -> 2068 bytes
-rw-r--r--web/static/images/emoji/1f5a7.pngbin0 -> 1834 bytes
-rw-r--r--web/static/images/emoji/1f5a8.pngbin0 -> 1203 bytes
-rw-r--r--web/static/images/emoji/1f5a9.pngbin0 -> 637 bytes
-rw-r--r--web/static/images/emoji/1f5aa.pngbin0 -> 640 bytes
-rw-r--r--web/static/images/emoji/1f5ab.pngbin0 -> 522 bytes
-rw-r--r--web/static/images/emoji/1f5ad.pngbin0 -> 1536 bytes
-rw-r--r--web/static/images/emoji/1f5ae.pngbin0 -> 1422 bytes
-rw-r--r--web/static/images/emoji/1f5af.pngbin0 -> 1093 bytes
-rw-r--r--web/static/images/emoji/1f5b2.pngbin0 -> 2125 bytes
-rw-r--r--web/static/images/emoji/1f5b3.pngbin0 -> 1253 bytes
-rw-r--r--web/static/images/emoji/1f5b4.pngbin0 -> 3293 bytes
-rw-r--r--web/static/images/emoji/1f5b8.pngbin0 -> 1378 bytes
-rw-r--r--web/static/images/emoji/1f5b9.pngbin0 -> 810 bytes
-rw-r--r--web/static/images/emoji/1f5bc.pngbin0 -> 1989 bytes
-rw-r--r--web/static/images/emoji/1f5bd.pngbin0 -> 1478 bytes
-rw-r--r--web/static/images/emoji/1f5be.pngbin0 -> 1504 bytes
-rw-r--r--web/static/images/emoji/1f5c0.pngbin0 -> 330 bytes
-rw-r--r--web/static/images/emoji/1f5c1.pngbin0 -> 675 bytes
-rw-r--r--web/static/images/emoji/1f5c2.pngbin0 -> 565 bytes
-rw-r--r--web/static/images/emoji/1f5c3.pngbin0 -> 1905 bytes
-rw-r--r--web/static/images/emoji/1f5c4.pngbin0 -> 572 bytes
-rw-r--r--web/static/images/emoji/1f5c6.pngbin0 -> 1199 bytes
-rw-r--r--web/static/images/emoji/1f5c7.pngbin0 -> 2201 bytes
-rw-r--r--web/static/images/emoji/1f5c9.pngbin0 -> 2317 bytes
-rw-r--r--web/static/images/emoji/1f5ca.pngbin0 -> 3120 bytes
-rw-r--r--web/static/images/emoji/1f5ce.pngbin0 -> 1034 bytes
-rw-r--r--web/static/images/emoji/1f5cf.pngbin0 -> 828 bytes
-rw-r--r--web/static/images/emoji/1f5d0.pngbin0 -> 1494 bytes
-rw-r--r--web/static/images/emoji/1f5d1.pngbin0 -> 2983 bytes
-rw-r--r--web/static/images/emoji/1f5d2.pngbin0 -> 1159 bytes
-rw-r--r--web/static/images/emoji/1f5d3.pngbin0 -> 1131 bytes
-rw-r--r--web/static/images/emoji/1f5d4.pngbin0 -> 878 bytes
-rw-r--r--web/static/images/emoji/1f5d8.pngbin0 -> 1575 bytes
-rw-r--r--web/static/images/emoji/1f5d9.pngbin0 -> 777 bytes
-rw-r--r--web/static/images/emoji/1f5dc.pngbin0 -> 1979 bytes
-rw-r--r--web/static/images/emoji/1f5dd.pngbin0 -> 1252 bytes
-rw-r--r--web/static/images/emoji/1f5de.pngbin0 -> 2746 bytes
-rw-r--r--web/static/images/emoji/1f5e0.pngbin0 -> 1748 bytes
-rw-r--r--web/static/images/emoji/1f5e1.pngbin0 -> 1602 bytes
-rw-r--r--web/static/images/emoji/1f5e2.pngbin0 -> 1214 bytes
-rw-r--r--web/static/images/emoji/1f5e3.pngbin0 -> 1305 bytes
-rw-r--r--web/static/images/emoji/1f5e8.pngbin0 -> 697 bytes
-rw-r--r--web/static/images/emoji/1f5e9.pngbin0 -> 945 bytes
-rw-r--r--web/static/images/emoji/1f5ea.pngbin0 -> 1205 bytes
-rw-r--r--web/static/images/emoji/1f5eb.pngbin0 -> 1360 bytes
-rw-r--r--web/static/images/emoji/1f5ec.pngbin0 -> 1003 bytes
-rw-r--r--web/static/images/emoji/1f5ed.pngbin0 -> 998 bytes
-rw-r--r--web/static/images/emoji/1f5ee.pngbin0 -> 1236 bytes
-rw-r--r--web/static/images/emoji/1f5ef.pngbin0 -> 1220 bytes
-rw-r--r--web/static/images/emoji/1f5f0.pngbin0 -> 987 bytes
-rw-r--r--web/static/images/emoji/1f5f1.pngbin0 -> 1543 bytes
-rw-r--r--web/static/images/emoji/1f5f2.pngbin0 -> 984 bytes
-rw-r--r--web/static/images/emoji/1f5f3.pngbin0 -> 2371 bytes
-rw-r--r--web/static/images/emoji/1f5f4.pngbin0 -> 1526 bytes
-rw-r--r--web/static/images/emoji/1f5f5.pngbin0 -> 1739 bytes
-rw-r--r--web/static/images/emoji/1f5f8.pngbin0 -> 1047 bytes
-rw-r--r--web/static/images/emoji/1f5f9.pngbin0 -> 1336 bytes
-rw-r--r--web/static/images/emoji/1f5fa.pngbin0 -> 2473 bytes
-rw-r--r--web/static/images/emoji/1f5fb.pngbin0 -> 1484 bytes
-rw-r--r--web/static/images/emoji/1f5fc.pngbin0 -> 1288 bytes
-rw-r--r--web/static/images/emoji/1f5fd.pngbin0 -> 1370 bytes
-rw-r--r--web/static/images/emoji/1f5fe.pngbin0 -> 1468 bytes
-rw-r--r--web/static/images/emoji/1f5ff.pngbin0 -> 1909 bytes
-rw-r--r--web/static/images/emoji/1f600.pngbin0 -> 2255 bytes
-rw-r--r--web/static/images/emoji/1f601.pngbin0 -> 2001 bytes
-rw-r--r--web/static/images/emoji/1f602.pngbin0 -> 2673 bytes
-rw-r--r--web/static/images/emoji/1f603.pngbin0 -> 2473 bytes
-rw-r--r--web/static/images/emoji/1f604.pngbin0 -> 1997 bytes
-rw-r--r--web/static/images/emoji/1f605.pngbin0 -> 2188 bytes
-rw-r--r--web/static/images/emoji/1f606.pngbin0 -> 2047 bytes
-rw-r--r--web/static/images/emoji/1f607.pngbin0 -> 2466 bytes
-rw-r--r--web/static/images/emoji/1f608.pngbin0 -> 2408 bytes
-rw-r--r--web/static/images/emoji/1f609.pngbin0 -> 2184 bytes
-rw-r--r--web/static/images/emoji/1f60a.pngbin0 -> 2066 bytes
-rw-r--r--web/static/images/emoji/1f60b.pngbin0 -> 2111 bytes
-rw-r--r--web/static/images/emoji/1f60c.pngbin0 -> 1732 bytes
-rw-r--r--web/static/images/emoji/1f60d.pngbin0 -> 2295 bytes
-rw-r--r--web/static/images/emoji/1f60e.pngbin0 -> 2472 bytes
-rw-r--r--web/static/images/emoji/1f60f.pngbin0 -> 2071 bytes
-rw-r--r--web/static/images/emoji/1f610.pngbin0 -> 1763 bytes
-rw-r--r--web/static/images/emoji/1f611.pngbin0 -> 1291 bytes
-rw-r--r--web/static/images/emoji/1f612.pngbin0 -> 2061 bytes
-rw-r--r--web/static/images/emoji/1f613.pngbin0 -> 1830 bytes
-rw-r--r--web/static/images/emoji/1f614.pngbin0 -> 1809 bytes
-rw-r--r--web/static/images/emoji/1f615.pngbin0 -> 2073 bytes
-rw-r--r--web/static/images/emoji/1f616.pngbin0 -> 2350 bytes
-rw-r--r--web/static/images/emoji/1f617.pngbin0 -> 2064 bytes
-rw-r--r--web/static/images/emoji/1f618.pngbin0 -> 2511 bytes
-rw-r--r--web/static/images/emoji/1f619.pngbin0 -> 1677 bytes
-rw-r--r--web/static/images/emoji/1f61a.pngbin0 -> 2249 bytes
-rw-r--r--web/static/images/emoji/1f61b.pngbin0 -> 2398 bytes
-rw-r--r--web/static/images/emoji/1f61c.pngbin0 -> 2367 bytes
-rw-r--r--web/static/images/emoji/1f61d.pngbin0 -> 2480 bytes
-rw-r--r--web/static/images/emoji/1f61e.pngbin0 -> 1518 bytes
-rw-r--r--web/static/images/emoji/1f61f.pngbin0 -> 2535 bytes
-rw-r--r--web/static/images/emoji/1f620.pngbin0 -> 2315 bytes
-rw-r--r--web/static/images/emoji/1f621.pngbin0 -> 2361 bytes
-rw-r--r--web/static/images/emoji/1f622.pngbin0 -> 2920 bytes
-rw-r--r--web/static/images/emoji/1f623.pngbin0 -> 2073 bytes
-rw-r--r--web/static/images/emoji/1f624.pngbin0 -> 2819 bytes
-rw-r--r--web/static/images/emoji/1f625.pngbin0 -> 2688 bytes
-rw-r--r--web/static/images/emoji/1f626.pngbin0 -> 1931 bytes
-rw-r--r--web/static/images/emoji/1f627.pngbin0 -> 2554 bytes
-rw-r--r--web/static/images/emoji/1f628.pngbin0 -> 2313 bytes
-rw-r--r--web/static/images/emoji/1f629.pngbin0 -> 2251 bytes
-rw-r--r--web/static/images/emoji/1f62a.pngbin0 -> 2430 bytes
-rw-r--r--web/static/images/emoji/1f62b.pngbin0 -> 2406 bytes
-rw-r--r--web/static/images/emoji/1f62c.pngbin0 -> 2264 bytes
-rw-r--r--web/static/images/emoji/1f62d.pngbin0 -> 2850 bytes
-rw-r--r--web/static/images/emoji/1f62e.pngbin0 -> 1952 bytes
-rw-r--r--web/static/images/emoji/1f62f.pngbin0 -> 2503 bytes
-rw-r--r--web/static/images/emoji/1f630.pngbin0 -> 2366 bytes
-rw-r--r--web/static/images/emoji/1f631.pngbin0 -> 2777 bytes
-rw-r--r--web/static/images/emoji/1f632.pngbin0 -> 2206 bytes
-rw-r--r--web/static/images/emoji/1f633.pngbin0 -> 2712 bytes
-rw-r--r--web/static/images/emoji/1f634.pngbin0 -> 2326 bytes
-rw-r--r--web/static/images/emoji/1f635.pngbin0 -> 1946 bytes
-rw-r--r--web/static/images/emoji/1f636.pngbin0 -> 1713 bytes
-rw-r--r--web/static/images/emoji/1f637.pngbin0 -> 2188 bytes
-rw-r--r--web/static/images/emoji/1f638.pngbin0 -> 3141 bytes
-rw-r--r--web/static/images/emoji/1f639.pngbin0 -> 3538 bytes
-rw-r--r--web/static/images/emoji/1f63a.pngbin0 -> 3557 bytes
-rw-r--r--web/static/images/emoji/1f63b.pngbin0 -> 3430 bytes
-rw-r--r--web/static/images/emoji/1f63c.pngbin0 -> 3727 bytes
-rw-r--r--web/static/images/emoji/1f63d.pngbin0 -> 3165 bytes
-rw-r--r--web/static/images/emoji/1f63e.pngbin0 -> 3013 bytes
-rw-r--r--web/static/images/emoji/1f63f.pngbin0 -> 3727 bytes
-rw-r--r--web/static/images/emoji/1f640.pngbin0 -> 4005 bytes
-rw-r--r--web/static/images/emoji/1f641.pngbin0 -> 1926 bytes
-rw-r--r--web/static/images/emoji/1f642.pngbin0 -> 2002 bytes
-rw-r--r--web/static/images/emoji/1f645.pngbin0 -> 3133 bytes
-rw-r--r--web/static/images/emoji/1f646.pngbin0 -> 3833 bytes
-rw-r--r--web/static/images/emoji/1f647.pngbin0 -> 2416 bytes
-rw-r--r--web/static/images/emoji/1f648.pngbin0 -> 2829 bytes
-rw-r--r--web/static/images/emoji/1f649.pngbin0 -> 3411 bytes
-rw-r--r--web/static/images/emoji/1f64a.pngbin0 -> 3218 bytes
-rw-r--r--web/static/images/emoji/1f64b.pngbin0 -> 3497 bytes
-rw-r--r--web/static/images/emoji/1f64c.pngbin0 -> 2568 bytes
-rw-r--r--web/static/images/emoji/1f64d.pngbin0 -> 2884 bytes
-rw-r--r--web/static/images/emoji/1f64e.pngbin0 -> 2826 bytes
-rw-r--r--web/static/images/emoji/1f64f.pngbin0 -> 1502 bytes
-rw-r--r--web/static/images/emoji/1f680.pngbin0 -> 2656 bytes
-rw-r--r--web/static/images/emoji/1f681.pngbin0 -> 1653 bytes
-rw-r--r--web/static/images/emoji/1f682.pngbin0 -> 1978 bytes
-rw-r--r--web/static/images/emoji/1f683.pngbin0 -> 1636 bytes
-rw-r--r--web/static/images/emoji/1f684.pngbin0 -> 1699 bytes
-rw-r--r--web/static/images/emoji/1f685.pngbin0 -> 1626 bytes
-rw-r--r--web/static/images/emoji/1f686.pngbin0 -> 2622 bytes
-rw-r--r--web/static/images/emoji/1f687.pngbin0 -> 1877 bytes
-rw-r--r--web/static/images/emoji/1f688.pngbin0 -> 1091 bytes
-rw-r--r--web/static/images/emoji/1f689.pngbin0 -> 2338 bytes
-rw-r--r--web/static/images/emoji/1f68a.pngbin0 -> 2343 bytes
-rw-r--r--web/static/images/emoji/1f68b.pngbin0 -> 1220 bytes
-rw-r--r--web/static/images/emoji/1f68c.pngbin0 -> 2660 bytes
-rw-r--r--web/static/images/emoji/1f68d.pngbin0 -> 1268 bytes
-rw-r--r--web/static/images/emoji/1f68e.pngbin0 -> 2032 bytes
-rw-r--r--web/static/images/emoji/1f68f.pngbin0 -> 1566 bytes
-rw-r--r--web/static/images/emoji/1f690.pngbin0 -> 2543 bytes
-rw-r--r--web/static/images/emoji/1f691.pngbin0 -> 2293 bytes
-rw-r--r--web/static/images/emoji/1f692.pngbin0 -> 1695 bytes
-rw-r--r--web/static/images/emoji/1f693.pngbin0 -> 2249 bytes
-rw-r--r--web/static/images/emoji/1f694.pngbin0 -> 1886 bytes
-rw-r--r--web/static/images/emoji/1f695.pngbin0 -> 2469 bytes
-rw-r--r--web/static/images/emoji/1f696.pngbin0 -> 1978 bytes
-rw-r--r--web/static/images/emoji/1f697.pngbin0 -> 2216 bytes
-rw-r--r--web/static/images/emoji/1f698.pngbin0 -> 1986 bytes
-rw-r--r--web/static/images/emoji/1f699.pngbin0 -> 2239 bytes
-rw-r--r--web/static/images/emoji/1f69a.pngbin0 -> 2227 bytes
-rw-r--r--web/static/images/emoji/1f69b.pngbin0 -> 2279 bytes
-rw-r--r--web/static/images/emoji/1f69c.pngbin0 -> 3051 bytes
-rw-r--r--web/static/images/emoji/1f69d.pngbin0 -> 998 bytes
-rw-r--r--web/static/images/emoji/1f69e.pngbin0 -> 1802 bytes
-rw-r--r--web/static/images/emoji/1f69f.pngbin0 -> 1056 bytes
-rw-r--r--web/static/images/emoji/1f6a0.pngbin0 -> 1520 bytes
-rw-r--r--web/static/images/emoji/1f6a1.pngbin0 -> 993 bytes
-rw-r--r--web/static/images/emoji/1f6a2.pngbin0 -> 765 bytes
-rw-r--r--web/static/images/emoji/1f6a3.pngbin0 -> 1396 bytes
-rw-r--r--web/static/images/emoji/1f6a4.pngbin0 -> 1248 bytes
-rw-r--r--web/static/images/emoji/1f6a5.pngbin0 -> 1755 bytes
-rw-r--r--web/static/images/emoji/1f6a6.pngbin0 -> 1856 bytes
-rw-r--r--web/static/images/emoji/1f6a7.pngbin0 -> 1545 bytes
-rw-r--r--web/static/images/emoji/1f6a8.pngbin0 -> 3086 bytes
-rw-r--r--web/static/images/emoji/1f6a9.pngbin0 -> 407 bytes
-rw-r--r--web/static/images/emoji/1f6aa.pngbin0 -> 765 bytes
-rw-r--r--web/static/images/emoji/1f6ab.pngbin0 -> 2126 bytes
-rw-r--r--web/static/images/emoji/1f6ac.pngbin0 -> 1183 bytes
-rw-r--r--web/static/images/emoji/1f6ad.pngbin0 -> 1394 bytes
-rw-r--r--web/static/images/emoji/1f6ae.pngbin0 -> 1196 bytes
-rw-r--r--web/static/images/emoji/1f6af.pngbin0 -> 2115 bytes
-rw-r--r--web/static/images/emoji/1f6b0.pngbin0 -> 1431 bytes
-rw-r--r--web/static/images/emoji/1f6b1.pngbin0 -> 2254 bytes
-rw-r--r--web/static/images/emoji/1f6b2.pngbin0 -> 2300 bytes
-rw-r--r--web/static/images/emoji/1f6b3.pngbin0 -> 2663 bytes
-rw-r--r--web/static/images/emoji/1f6b4.pngbin0 -> 1714 bytes
-rw-r--r--web/static/images/emoji/1f6b5.pngbin0 -> 2015 bytes
-rw-r--r--web/static/images/emoji/1f6b6.pngbin0 -> 1132 bytes
-rw-r--r--web/static/images/emoji/1f6b7.pngbin0 -> 2290 bytes
-rw-r--r--web/static/images/emoji/1f6b8.pngbin0 -> 761 bytes
-rw-r--r--web/static/images/emoji/1f6b9.pngbin0 -> 943 bytes
-rw-r--r--web/static/images/emoji/1f6ba.pngbin0 -> 1077 bytes
-rw-r--r--web/static/images/emoji/1f6bb.pngbin0 -> 1580 bytes
-rw-r--r--web/static/images/emoji/1f6bc.pngbin0 -> 1162 bytes
-rw-r--r--web/static/images/emoji/1f6bd.pngbin0 -> 1355 bytes
-rw-r--r--web/static/images/emoji/1f6be.pngbin0 -> 1639 bytes
-rw-r--r--web/static/images/emoji/1f6bf.pngbin0 -> 2117 bytes
-rw-r--r--web/static/images/emoji/1f6c0.pngbin0 -> 2289 bytes
-rw-r--r--web/static/images/emoji/1f6c1.pngbin0 -> 1632 bytes
-rw-r--r--web/static/images/emoji/1f6c2.pngbin0 -> 1617 bytes
-rw-r--r--web/static/images/emoji/1f6c3.pngbin0 -> 1596 bytes
-rw-r--r--web/static/images/emoji/1f6c4.pngbin0 -> 751 bytes
-rw-r--r--web/static/images/emoji/1f6c5.pngbin0 -> 952 bytes
-rw-r--r--web/static/images/emoji/1f6c6.pngbin0 -> 1202 bytes
-rw-r--r--web/static/images/emoji/1f6c7.pngbin0 -> 1502 bytes
-rw-r--r--web/static/images/emoji/1f6c8.pngbin0 -> 1655 bytes
-rw-r--r--web/static/images/emoji/1f6c9.pngbin0 -> 1118 bytes
-rw-r--r--web/static/images/emoji/1f6ca.pngbin0 -> 1172 bytes
-rw-r--r--web/static/images/emoji/1f6cb.pngbin0 -> 2888 bytes
-rw-r--r--web/static/images/emoji/1f6cc.pngbin0 -> 710 bytes
-rw-r--r--web/static/images/emoji/1f6cd.pngbin0 -> 4175 bytes
-rw-r--r--web/static/images/emoji/1f6ce.pngbin0 -> 2598 bytes
-rw-r--r--web/static/images/emoji/1f6cf.pngbin0 -> 2764 bytes
-rw-r--r--web/static/images/emoji/1f6e0.pngbin0 -> 2844 bytes
-rw-r--r--web/static/images/emoji/1f6e1.pngbin0 -> 523 bytes
-rw-r--r--web/static/images/emoji/1f6e2.pngbin0 -> 1982 bytes
-rw-r--r--web/static/images/emoji/1f6e3.pngbin0 -> 1470 bytes
-rw-r--r--web/static/images/emoji/1f6e4.pngbin0 -> 2714 bytes
-rw-r--r--web/static/images/emoji/1f6e5.pngbin0 -> 866 bytes
-rw-r--r--web/static/images/emoji/1f6e6.pngbin0 -> 2017 bytes
-rw-r--r--web/static/images/emoji/1f6e7.pngbin0 -> 2031 bytes
-rw-r--r--web/static/images/emoji/1f6e8.pngbin0 -> 1898 bytes
-rw-r--r--web/static/images/emoji/1f6e9.pngbin0 -> 1910 bytes
-rw-r--r--web/static/images/emoji/1f6ea.pngbin0 -> 2135 bytes
-rw-r--r--web/static/images/emoji/1f6eb.pngbin0 -> 2127 bytes
-rw-r--r--web/static/images/emoji/1f6ec.pngbin0 -> 2355 bytes
-rw-r--r--web/static/images/emoji/1f6f0.pngbin0 -> 3871 bytes
-rw-r--r--web/static/images/emoji/1f6f1.pngbin0 -> 1984 bytes
-rw-r--r--web/static/images/emoji/1f6f2.pngbin0 -> 1953 bytes
-rw-r--r--web/static/images/emoji/1f6f3.pngbin0 -> 2283 bytes
-rw-r--r--web/static/images/emoji/203c.pngbin0 -> 1229 bytes
-rw-r--r--web/static/images/emoji/2049.pngbin0 -> 1682 bytes
-rw-r--r--web/static/images/emoji/2122.pngbin0 -> 1013 bytes
-rw-r--r--web/static/images/emoji/2139.pngbin0 -> 704 bytes
-rw-r--r--web/static/images/emoji/2194.pngbin0 -> 977 bytes
-rw-r--r--web/static/images/emoji/2195.pngbin0 -> 1005 bytes
-rw-r--r--web/static/images/emoji/2196.pngbin0 -> 990 bytes
-rw-r--r--web/static/images/emoji/2197.pngbin0 -> 957 bytes
-rw-r--r--web/static/images/emoji/2198.pngbin0 -> 932 bytes
-rw-r--r--web/static/images/emoji/2199.pngbin0 -> 955 bytes
-rw-r--r--web/static/images/emoji/21a9.pngbin0 -> 1079 bytes
-rw-r--r--web/static/images/emoji/21aa.pngbin0 -> 1153 bytes
-rw-r--r--web/static/images/emoji/231a.pngbin0 -> 1540 bytes
-rw-r--r--web/static/images/emoji/231b.pngbin0 -> 1684 bytes
-rw-r--r--web/static/images/emoji/23e9.pngbin0 -> 944 bytes
-rw-r--r--web/static/images/emoji/23ea.pngbin0 -> 966 bytes
-rw-r--r--web/static/images/emoji/23eb.pngbin0 -> 955 bytes
-rw-r--r--web/static/images/emoji/23ec.pngbin0 -> 994 bytes
-rw-r--r--web/static/images/emoji/23f0.pngbin0 -> 2412 bytes
-rw-r--r--web/static/images/emoji/23f3.pngbin0 -> 1612 bytes
-rw-r--r--web/static/images/emoji/24c2.pngbin0 -> 2025 bytes
-rw-r--r--web/static/images/emoji/25aa.pngbin0 -> 234 bytes
-rw-r--r--web/static/images/emoji/25ab.pngbin0 -> 225 bytes
-rw-r--r--web/static/images/emoji/25b6.pngbin0 -> 755 bytes
-rw-r--r--web/static/images/emoji/25c0.pngbin0 -> 814 bytes
-rw-r--r--web/static/images/emoji/25fb.pngbin0 -> 315 bytes
-rw-r--r--web/static/images/emoji/25fc.pngbin0 -> 335 bytes
-rw-r--r--web/static/images/emoji/25fd.pngbin0 -> 274 bytes
-rw-r--r--web/static/images/emoji/25fe.pngbin0 -> 220 bytes
-rw-r--r--web/static/images/emoji/2600.pngbin0 -> 1733 bytes
-rw-r--r--web/static/images/emoji/2601.pngbin0 -> 1055 bytes
-rw-r--r--web/static/images/emoji/260e.pngbin0 -> 2335 bytes
-rw-r--r--web/static/images/emoji/2611.pngbin0 -> 1017 bytes
-rw-r--r--web/static/images/emoji/2614.pngbin0 -> 2019 bytes
-rw-r--r--web/static/images/emoji/2615.pngbin0 -> 3002 bytes
-rw-r--r--web/static/images/emoji/261d.pngbin0 -> 1581 bytes
-rw-r--r--web/static/images/emoji/263a.pngbin0 -> 2350 bytes
-rw-r--r--web/static/images/emoji/2648.pngbin0 -> 1911 bytes
-rw-r--r--web/static/images/emoji/2649.pngbin0 -> 1932 bytes
-rw-r--r--web/static/images/emoji/264a.pngbin0 -> 1520 bytes
-rw-r--r--web/static/images/emoji/264b.pngbin0 -> 2441 bytes
-rw-r--r--web/static/images/emoji/264c.pngbin0 -> 1879 bytes
-rw-r--r--web/static/images/emoji/264d.pngbin0 -> 2093 bytes
-rw-r--r--web/static/images/emoji/264e.pngbin0 -> 1701 bytes
-rw-r--r--web/static/images/emoji/264f.pngbin0 -> 1359 bytes
-rw-r--r--web/static/images/emoji/2650.pngbin0 -> 906 bytes
-rw-r--r--web/static/images/emoji/2651.pngbin0 -> 1410 bytes
-rw-r--r--web/static/images/emoji/2652.pngbin0 -> 1598 bytes
-rw-r--r--web/static/images/emoji/2653.pngbin0 -> 1405 bytes
-rw-r--r--web/static/images/emoji/2660.pngbin0 -> 1071 bytes
-rw-r--r--web/static/images/emoji/2663.pngbin0 -> 1151 bytes
-rw-r--r--web/static/images/emoji/2665.pngbin0 -> 1067 bytes
-rw-r--r--web/static/images/emoji/2666.pngbin0 -> 719 bytes
-rw-r--r--web/static/images/emoji/2668.pngbin0 -> 2577 bytes
-rw-r--r--web/static/images/emoji/267b.pngbin0 -> 2009 bytes
-rw-r--r--web/static/images/emoji/267f.pngbin0 -> 1377 bytes
-rw-r--r--web/static/images/emoji/2693.pngbin0 -> 2074 bytes
-rw-r--r--web/static/images/emoji/26a0.pngbin0 -> 1360 bytes
-rw-r--r--web/static/images/emoji/26a1.pngbin0 -> 706 bytes
-rw-r--r--web/static/images/emoji/26aa.pngbin0 -> 839 bytes
-rw-r--r--web/static/images/emoji/26ab.pngbin0 -> 976 bytes
-rw-r--r--web/static/images/emoji/26bd.pngbin0 -> 1991 bytes
-rw-r--r--web/static/images/emoji/26be.pngbin0 -> 2723 bytes
-rw-r--r--web/static/images/emoji/26c4.pngbin0 -> 2380 bytes
-rw-r--r--web/static/images/emoji/26c5.pngbin0 -> 1407 bytes
-rw-r--r--web/static/images/emoji/26ce.pngbin0 -> 1262 bytes
-rw-r--r--web/static/images/emoji/26d4.pngbin0 -> 1496 bytes
-rw-r--r--web/static/images/emoji/26ea.pngbin0 -> 1931 bytes
-rw-r--r--web/static/images/emoji/26f2.pngbin0 -> 1706 bytes
-rw-r--r--web/static/images/emoji/26f3.pngbin0 -> 1809 bytes
-rw-r--r--web/static/images/emoji/26f5.pngbin0 -> 2353 bytes
-rw-r--r--web/static/images/emoji/26fa.pngbin0 -> 2461 bytes
-rw-r--r--web/static/images/emoji/26fd.pngbin0 -> 2054 bytes
-rw-r--r--web/static/images/emoji/2702.pngbin0 -> 2598 bytes
-rw-r--r--web/static/images/emoji/2705.pngbin0 -> 984 bytes
-rw-r--r--web/static/images/emoji/2708.pngbin0 -> 2874 bytes
-rw-r--r--web/static/images/emoji/2709.pngbin0 -> 1628 bytes
-rw-r--r--web/static/images/emoji/270a.pngbin0 -> 1984 bytes
-rw-r--r--web/static/images/emoji/270b.pngbin0 -> 756 bytes
-rw-r--r--web/static/images/emoji/270c.pngbin0 -> 1702 bytes
-rw-r--r--web/static/images/emoji/270f.pngbin0 -> 1830 bytes
-rw-r--r--web/static/images/emoji/2712.pngbin0 -> 1682 bytes
-rw-r--r--web/static/images/emoji/2714.pngbin0 -> 1066 bytes
-rw-r--r--web/static/images/emoji/2716.pngbin0 -> 940 bytes
-rw-r--r--web/static/images/emoji/2728.pngbin0 -> 1627 bytes
-rw-r--r--web/static/images/emoji/2733.pngbin0 -> 1663 bytes
-rw-r--r--web/static/images/emoji/2734.pngbin0 -> 1404 bytes
-rw-r--r--web/static/images/emoji/2744.pngbin0 -> 2545 bytes
-rw-r--r--web/static/images/emoji/2747.pngbin0 -> 2226 bytes
-rw-r--r--web/static/images/emoji/274c.pngbin0 -> 448 bytes
-rw-r--r--web/static/images/emoji/274e.pngbin0 -> 950 bytes
-rw-r--r--web/static/images/emoji/2753.pngbin0 -> 1126 bytes
-rw-r--r--web/static/images/emoji/2754.pngbin0 -> 1002 bytes
-rw-r--r--web/static/images/emoji/2755.pngbin0 -> 666 bytes
-rw-r--r--web/static/images/emoji/2757.pngbin0 -> 737 bytes
-rw-r--r--web/static/images/emoji/2764.pngbin0 -> 1236 bytes
-rw-r--r--web/static/images/emoji/2795.pngbin0 -> 400 bytes
-rw-r--r--web/static/images/emoji/2796.pngbin0 -> 324 bytes
-rw-r--r--web/static/images/emoji/2797.pngbin0 -> 704 bytes
-rw-r--r--web/static/images/emoji/27a1.pngbin0 -> 946 bytes
-rw-r--r--web/static/images/emoji/27b0.pngbin0 -> 1360 bytes
-rw-r--r--web/static/images/emoji/27bf.pngbin0 -> 1394 bytes
-rw-r--r--web/static/images/emoji/2934.pngbin0 -> 940 bytes
-rw-r--r--web/static/images/emoji/2935.pngbin0 -> 1019 bytes
-rw-r--r--web/static/images/emoji/2b05.pngbin0 -> 937 bytes
-rw-r--r--web/static/images/emoji/2b06.pngbin0 -> 973 bytes
-rw-r--r--web/static/images/emoji/2b07.pngbin0 -> 947 bytes
-rw-r--r--web/static/images/emoji/2b1b.pngbin0 -> 311 bytes
-rw-r--r--web/static/images/emoji/2b1c.pngbin0 -> 318 bytes
-rw-r--r--web/static/images/emoji/2b50.pngbin0 -> 1637 bytes
-rw-r--r--web/static/images/emoji/2b55.pngbin0 -> 2049 bytes
-rw-r--r--web/static/images/emoji/3030.pngbin0 -> 404 bytes
-rw-r--r--web/static/images/emoji/303d.pngbin0 -> 1165 bytes
-rw-r--r--web/static/images/emoji/3297.pngbin0 -> 2110 bytes
-rw-r--r--web/static/images/emoji/3299.pngbin0 -> 2603 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/8ball.pngbin4141 -> 2177 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/a.pngbin3154 -> 1202 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/ab.pngbin3859 -> 1419 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/abc.pngbin4247 -> 1502 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/abcd.pngbin4471 -> 1718 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/accept.pngbin4729 -> 1301 bytes
-rw-r--r--web/static/images/emoji/admission_tickets.pngbin0 -> 3790 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/aerial_tramway.pngbin3489 -> 993 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/airplane.pngbin4740 -> 2874 bytes
-rw-r--r--web/static/images/emoji/airplane_arriving.pngbin0 -> 2355 bytes
-rw-r--r--web/static/images/emoji/airplane_departure.pngbin0 -> 2127 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/alarm_clock.pngbin7062 -> 2412 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/alien.pngbin5457 -> 2500 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/ambulance.pngbin3708 -> 2293 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/anchor.pngbin4479 -> 2074 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/angel.pngbin6672 -> 1826 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/anger.pngbin3079 -> 1434 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/angry.pngbin5037 -> 2315 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/anguished.pngbin5091 -> 2554 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/ant.pngbin2851 -> 2110 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/apple.pngbin5630 -> 1554 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/aquarius.pngbin5096 -> 1598 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/aries.pngbin4343 -> 1911 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/arrow_backward.pngbin3180 -> 814 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/arrow_double_down.pngbin3179 -> 994 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/arrow_double_up.pngbin3611 -> 955 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/arrow_down.pngbin3006 -> 947 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/arrow_down_small.pngbin2889 -> 778 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/arrow_forward.pngbin3201 -> 755 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/arrow_heading_down.pngbin3521 -> 1019 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/arrow_heading_up.pngbin3520 -> 940 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/arrow_left.pngbin3041 -> 937 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/arrow_lower_left.pngbin3342 -> 955 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/arrow_lower_right.pngbin3334 -> 932 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/arrow_right.pngbin3022 -> 946 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/arrow_right_hook.pngbin3712 -> 1153 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/arrow_up.pngbin3073 -> 973 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/arrow_up_down.pngbin3542 -> 1005 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/arrow_up_small.pngbin3185 -> 825 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/arrow_upper_left.pngbin3227 -> 990 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/arrow_upper_right.pngbin3235 -> 957 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/arrows_clockwise.pngbin1399 -> 1353 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/arrows_counterclockwise.pngbin4816 -> 1482 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/art.pngbin6744 -> 2139 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/articulated_lorry.pngbin2938 -> 2279 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/astonished.pngbin6043 -> 2206 bytes
-rw-r--r--web/static/images/emoji/athletic_shoe.pngbin0 -> 1369 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/atm.pngbin4072 -> 1852 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/b.pngbin3025 -> 1019 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/baby.pngbin5921 -> 2436 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/baby_bottle.pngbin4461 -> 2485 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/baby_chick.pngbin3961 -> 2094 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/baby_symbol.pngbin2967 -> 1162 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/back.pngbin5434 -> 1268 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/baggage_claim.pngbin3502 -> 751 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/balloon.pngbin2300 -> 1422 bytes
-rw-r--r--web/static/images/emoji/ballot_box_with_ballot.pngbin0 -> 2371 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/ballot_box_with_check.pngbin1829 -> 1017 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/bamboo.pngbin4672 -> 1306 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/banana.pngbin3915 -> 2206 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/bangbang.pngbin1387 -> 1229 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/bank.pngbin5583 -> 1185 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/bar_chart.pngbin2449 -> 1671 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/barber.pngbin4252 -> 1771 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/baseball.pngbin6032 -> 2723 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/basketball.pngbin6386 -> 2673 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/bath.pngbin3210 -> 2289 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/bathtub.pngbin2784 -> 1632 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/battery.pngbin3812 -> 946 bytes
-rw-r--r--web/static/images/emoji/beach_with_umbrella.pngbin0 -> 2711 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/bear.pngbin5561 -> 2747 bytes
-rw-r--r--web/static/images/emoji/bed.pngbin0 -> 2764 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/bee.pngbin5851 -> 2243 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/beer.pngbin6097 -> 2213 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/beers.pngbin6591 -> 3398 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/beetle.pngbin5255 -> 3039 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/beginner.pngbin2761 -> 1307 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/bell.pngbin4859 -> 1844 bytes
-rw-r--r--web/static/images/emoji/bellhop_bell.pngbin0 -> 2598 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/bento.pngbin5730 -> 3436 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/bicyclist.pngbin6472 -> 1714 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/bike.pngbin4722 -> 2300 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/bikini.pngbin3890 -> 1885 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/bird.pngbin4878 -> 2041 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/birthday.pngbin5404 -> 3583 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/black_circle.pngbin2369 -> 976 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/black_joker.pngbin3877 -> 1806 bytes
-rw-r--r--web/static/images/emoji/black_large_square.pngbin0 -> 311 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/black_medium_small_square.pngbin3495 -> 220 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/black_medium_square.pngbin4035 -> 335 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/black_nib.pngbin2352 -> 1682 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/black_small_square.pngbin3061 -> 234 bytes
-rwxr-xr-xweb/static/images/emoji/black_square.pngbin1332 -> 0 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/black_square_button.pngbin1337 -> 576 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/blossom.pngbin4232 -> 2061 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/blowfish.pngbin3737 -> 3132 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/blue_book.pngbin5092 -> 1603 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/blue_car.pngbin4081 -> 2239 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/blue_heart.pngbin4094 -> 1226 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/blush.pngbin5188 -> 2066 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/boar.pngbin4840 -> 3695 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/boat.pngbin3833 -> 2353 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/bomb.pngbin5208 -> 2226 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/book.pngbin6050 -> 1152 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/bookmark.pngbin4649 -> 1924 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/bookmark_tabs.pngbin3150 -> 1425 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/books.pngbin6539 -> 2505 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/boom.pngbin3772 -> 2389 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/boot.pngbin3327 -> 1411 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/bouquet.pngbin6915 -> 3694 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/bow.pngbin5143 -> 2416 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/bowling.pngbin4184 -> 2308 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/bowtie.pngbin6478 -> 6478 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/boy.pngbin5946 -> 1992 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/bread.pngbin6214 -> 1687 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/bride_with_veil.pngbin8515 -> 3448 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/bridge_at_night.pngbin5137 -> 2941 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/briefcase.pngbin2698 -> 1042 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/broken_heart.pngbin4118 -> 1703 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/bug.pngbin5945 -> 2515 bytes
-rw-r--r--web/static/images/emoji/building_construction.pngbin0 -> 2545 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/bulb.pngbin4490 -> 2472 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/bullettrain_front.pngbin4992 -> 1626 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/bullettrain_side.pngbin3842 -> 1699 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/bus.pngbin4065 -> 2660 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/busstop.pngbin1676 -> 1566 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/bust_in_silhouette.pngbin2005 -> 993 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/busts_in_silhouette.pngbin3021 -> 1232 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/cactus.pngbin4509 -> 2236 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/cake.pngbin6129 -> 3323 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/calendar.pngbin2920 -> 1241 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/calling.pngbin4037 -> 1242 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/camel.pngbin4485 -> 2025 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/camera.pngbin4661 -> 1607 bytes
-rw-r--r--web/static/images/emoji/camera_with_flash.pngbin0 -> 2184 bytes
-rw-r--r--web/static/images/emoji/camping.pngbin0 -> 2369 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/cancer.pngbin5384 -> 2441 bytes
-rw-r--r--web/static/images/emoji/candle.pngbin0 -> 1870 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/candy.pngbin4502 -> 2075 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/capital_abcd.pngbin5136 -> 1760 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/capricorn.pngbin4670 -> 1410 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/car.pngbin4278 -> 2216 bytes
-rw-r--r--web/static/images/emoji/card_file_box.pngbin0 -> 1905 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/card_index.pngbin3749 -> 1350 bytes
-rw-r--r--web/static/images/emoji/card_index_dividers.pngbin0 -> 565 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/carousel_horse.pngbin5893 -> 2479 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/cat.pngbin5987 -> 3912 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/cat2.pngbin5644 -> 3085 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/cd.pngbin6718 -> 1809 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/chart.pngbin4331 -> 1448 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/chart_with_downwards_trend.pngbin2897 -> 2131 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/chart_with_upwards_trend.pngbin2930 -> 2165 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/checkered_flag.pngbin1675 -> 2277 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/cherries.pngbin5604 -> 2412 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/cherry_blossom.pngbin7174 -> 3398 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/chestnut.pngbin5875 -> 2789 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/chicken.pngbin3988 -> 2564 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/children_crossing.pngbin3460 -> 761 bytes
-rw-r--r--web/static/images/emoji/chipmunk.pngbin0 -> 3872 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/chocolate_bar.pngbin5249 -> 2073 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/christmas_tree.pngbin4721 -> 1803 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/church.pngbin4653 -> 1931 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/cinema.pngbin3573 -> 1269 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/circus_tent.pngbin4683 -> 2473 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/city_sunrise.pngbin4312 -> 2120 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/city_sunset.pngbin3841 -> 2691 bytes
-rw-r--r--web/static/images/emoji/cityscape.pngbin0 -> 2310 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/cl.pngbin3493 -> 1304 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/clap.pngbin7110 -> 2203 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/clapper.pngbin4192 -> 1703 bytes
-rw-r--r--web/static/images/emoji/classical_building.pngbin0 -> 1871 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/clipboard.pngbin4663 -> 1031 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/clock1.pngbin2590 -> 1853 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/clock10.pngbin2590 -> 1877 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/clock1030.pngbin2817 -> 1988 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/clock11.pngbin2587 -> 1863 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/clock1130.pngbin2854 -> 1833 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/clock12.pngbin2504 -> 1890 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/clock1230.pngbin2797 -> 1789 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/clock130.pngbin2837 -> 1864 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/clock2.pngbin2595 -> 1866 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/clock230.pngbin2853 -> 1733 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/clock3.pngbin2492 -> 1759 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/clock330.pngbin2739 -> 1834 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/clock4.pngbin2619 -> 1914 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/clock430.pngbin2803 -> 1920 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/clock5.pngbin2624 -> 2017 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/clock530.pngbin2832 -> 1867 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/clock6.pngbin2577 -> 1676 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/clock630.pngbin2730 -> 1731 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/clock7.pngbin2615 -> 1853 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/clock730.pngbin2794 -> 1874 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/clock8.pngbin2603 -> 1897 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/clock830.pngbin2792 -> 1811 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/clock9.pngbin2486 -> 1741 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/clock930.pngbin2746 -> 1733 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/closed_book.pngbin4847 -> 1578 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/closed_lock_with_key.pngbin5701 -> 1563 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/closed_umbrella.pngbin3868 -> 1594 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/cloud.pngbin3860 -> 1055 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/clubs.pngbin1685 -> 1151 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/cn.pngbin3634 -> 697 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/cocktail.pngbin2949 -> 1863 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/coffee.pngbin4306 -> 3002 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/cold_sweat.pngbin5972 -> 2366 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/collision.pngbin3772 -> 2389 bytes
-rw-r--r--web/static/images/emoji/compression.pngbin0 -> 1979 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/computer.pngbin1705 -> 1436 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/confetti_ball.pngbin5521 -> 3925 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/confounded.pngbin5857 -> 2350 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/confused.pngbin4633 -> 2073 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/congratulations.pngbin4881 -> 2110 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/construction.pngbin3700 -> 1545 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/construction_worker.pngbin6193 -> 2401 bytes
-rw-r--r--web/static/images/emoji/control_knobs.pngbin0 -> 2691 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/convenience_store.pngbin4073 -> 1284 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/cookie.pngbin8149 -> 2178 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/cool.pngbin4182 -> 1443 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/cop.pngbin7141 -> 3057 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/copyright.pngbin1579 -> 1702 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/corn.pngbin6694 -> 2872 bytes
-rw-r--r--web/static/images/emoji/couch_and_lamp.pngbin0 -> 2888 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/couple.pngbin7615 -> 2209 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/couple_with_heart.pngbin7370 -> 3737 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/couplekiss.pngbin7219 -> 3350 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/cow.pngbin5745 -> 2464 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/cow2.pngbin5303 -> 1729 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/credit_card.pngbin2648 -> 400 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/crescent_moon.pngbin3541 -> 1233 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/crocodile.pngbin6125 -> 1649 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/crossed_flags.pngbin4015 -> 2047 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/crown.pngbin5655 -> 2520 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/cry.pngbin5699 -> 2920 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/crying_cat_face.pngbin6682 -> 3727 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/crystal_ball.pngbin6236 -> 2148 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/cupid.pngbin5413 -> 2004 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/curly_loop.pngbin1129 -> 1360 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/currency_exchange.pngbin1959 -> 1625 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/curry.pngbin5336 -> 2805 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/custard.pngbin5810 -> 2601 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/customs.pngbin3899 -> 1596 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/cyclone.pngbin4890 -> 1579 bytes
-rw-r--r--web/static/images/emoji/dagger_knife.pngbin0 -> 1602 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/dancer.pngbin3726 -> 1554 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/dancers.pngbin7918 -> 2855 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/dango.pngbin4449 -> 2448 bytes
-rw-r--r--web/static/images/emoji/dark_sunglasses.pngbin0 -> 1548 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/dart.pngbin5437 -> 3044 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/dash.pngbin5448 -> 1829 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/date.pngbin2977 -> 1365 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/de.pngbin2640 -> 407 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/deciduous_tree.pngbin7263 -> 3621 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/department_store.pngbin5159 -> 1241 bytes
-rw-r--r--web/static/images/emoji/derelict_house_building.pngbin0 -> 3253 bytes
-rw-r--r--web/static/images/emoji/desert.pngbin0 -> 2260 bytes
-rw-r--r--web/static/images/emoji/desert_island.pngbin0 -> 2974 bytes
-rw-r--r--web/static/images/emoji/desktop_computer.pngbin0 -> 779 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/diamond_shape_with_a_dot_inside.pngbin5698 -> 1680 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/diamonds.pngbin2785 -> 719 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/disappointed.pngbin4764 -> 1518 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/disappointed_relieved.pngbin5648 -> 2688 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/dizzy.pngbin2990 -> 1701 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/dizzy_face.pngbin6278 -> 1946 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/do_not_litter.pngbin5277 -> 2115 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/dog.pngbin5945 -> 2609 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/dog2.pngbin5931 -> 2293 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/dollar.pngbin4622 -> 1579 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/dolls.pngbin7138 -> 3118 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/dolphin.pngbin4343 -> 1980 bytes
-rwxr-xr-xweb/static/images/emoji/donut.pngbin5209 -> 0 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/door.pngbin3310 -> 765 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/doughnut.pngbin5209 -> 2267 bytes
-rw-r--r--web/static/images/emoji/dove_of_peace.pngbin0 -> 2134 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/dragon.pngbin7749 -> 2618 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/dragon_face.pngbin6737 -> 2518 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/dress.pngbin3631 -> 2033 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/dromedary_camel.pngbin5139 -> 2022 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/droplet.pngbin3139 -> 1090 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/dvd.pngbin6993 -> 1951 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/e-mail.pngbin2128 -> 1703 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/ear.pngbin4335 -> 1496 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/ear_of_rice.pngbin4758 -> 2154 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/earth_africa.pngbin7164 -> 2318 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/earth_americas.pngbin7039 -> 2427 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/earth_asia.pngbin7303 -> 2509 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/egg.pngbin5211 -> 2272 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/eggplant.pngbin4672 -> 1740 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/eight.pngbin3844 -> 1266 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/eight_pointed_black_star.pngbin3271 -> 1404 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/eight_spoked_asterisk.pngbin4012 -> 1663 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/electric_plug.pngbin2758 -> 1480 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/elephant.pngbin5086 -> 1973 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/email.pngbin2697 -> 1628 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/end.pngbin1134 -> 1452 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/envelope.pngbin1655 -> 1628 bytes
-rw-r--r--web/static/images/emoji/envelope_with_arrow.pngbin0 -> 2151 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/es.pngbin4302 -> 1197 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/euro.pngbin3942 -> 1578 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/european_castle.pngbin5427 -> 853 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/european_post_office.pngbin4816 -> 1018 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/evergreen_tree.pngbin4924 -> 1028 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/exclamation.pngbin1175 -> 737 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/expressionless.pngbin4022 -> 1291 bytes
-rw-r--r--web/static/images/emoji/eye.pngbin0 -> 2701 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/eyeglasses.pngbin4929 -> 1784 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/eyes.pngbin4367 -> 2037 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/facepunch.pngbin4833 -> 1892 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/factory.pngbin5558 -> 1205 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/fallen_leaf.pngbin4890 -> 2499 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/family.pngbin7211 -> 4120 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/fast_forward.pngbin3105 -> 944 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/fax.pngbin4650 -> 987 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/fearful.pngbin5600 -> 2313 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/feelsgood.pngbin1150 -> 1150 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/feet.pngbin1529 -> 1451 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/ferris_wheel.pngbin6213 -> 2474 bytes
-rw-r--r--web/static/images/emoji/file_cabinet.pngbin0 -> 572 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/file_folder.pngbin4013 -> 1746 bytes
-rw-r--r--web/static/images/emoji/film_frames.pngbin0 -> 3307 bytes
-rw-r--r--web/static/images/emoji/film_projector.pngbin0 -> 3118 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/finnadie.pngbin1186 -> 1186 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/fire.pngbin3886 -> 1906 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/fire_engine.pngbin4862 -> 1695 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/fireworks.pngbin6269 -> 3635 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/first_quarter_moon.pngbin5967 -> 1820 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/first_quarter_moon_with_face.pngbin4280 -> 1481 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/fish.pngbin4721 -> 2403 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/fish_cake.pngbin5818 -> 2701 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/fishing_pole_and_fish.pngbin4470 -> 2078 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/fist.pngbin5880 -> 1984 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/five.pngbin3593 -> 1208 bytes
-rw-r--r--web/static/images/emoji/flag-ac.pngbin0 -> 2279 bytes
-rw-r--r--web/static/images/emoji/flag-ad.pngbin0 -> 1341 bytes
-rw-r--r--web/static/images/emoji/flag-ae.pngbin0 -> 442 bytes
-rw-r--r--web/static/images/emoji/flag-af.pngbin0 -> 1486 bytes
-rw-r--r--web/static/images/emoji/flag-ag.pngbin0 -> 1449 bytes
-rw-r--r--web/static/images/emoji/flag-ai.pngbin0 -> 1901 bytes
-rw-r--r--web/static/images/emoji/flag-al.pngbin0 -> 1505 bytes
-rw-r--r--web/static/images/emoji/flag-am.pngbin0 -> 399 bytes
-rw-r--r--web/static/images/emoji/flag-ao.pngbin0 -> 1375 bytes
-rw-r--r--web/static/images/emoji/flag-ar.pngbin0 -> 863 bytes
-rw-r--r--web/static/images/emoji/flag-at.pngbin0 -> 294 bytes
-rw-r--r--web/static/images/emoji/flag-au.pngbin0 -> 1730 bytes
-rw-r--r--web/static/images/emoji/flag-aw.pngbin0 -> 597 bytes
-rw-r--r--web/static/images/emoji/flag-az.pngbin0 -> 777 bytes
-rw-r--r--web/static/images/emoji/flag-ba.pngbin0 -> 1530 bytes
-rw-r--r--web/static/images/emoji/flag-bb.pngbin0 -> 728 bytes
-rw-r--r--web/static/images/emoji/flag-bd.pngbin0 -> 708 bytes
-rw-r--r--web/static/images/emoji/flag-be.pngbin0 -> 361 bytes
-rw-r--r--web/static/images/emoji/flag-bf.pngbin0 -> 782 bytes
-rw-r--r--web/static/images/emoji/flag-bg.pngbin0 -> 407 bytes
-rw-r--r--web/static/images/emoji/flag-bh.pngbin0 -> 792 bytes
-rw-r--r--web/static/images/emoji/flag-bi.pngbin0 -> 1979 bytes
-rw-r--r--web/static/images/emoji/flag-bj.pngbin0 -> 531 bytes
-rw-r--r--web/static/images/emoji/flag-bm.pngbin0 -> 2186 bytes
-rw-r--r--web/static/images/emoji/flag-bn.pngbin0 -> 2422 bytes
-rw-r--r--web/static/images/emoji/flag-bo.pngbin0 -> 950 bytes
-rw-r--r--web/static/images/emoji/flag-br.pngbin0 -> 1649 bytes
-rw-r--r--web/static/images/emoji/flag-bs.pngbin0 -> 802 bytes
-rw-r--r--web/static/images/emoji/flag-bt.pngbin0 -> 2702 bytes
-rw-r--r--web/static/images/emoji/flag-bw.pngbin0 -> 303 bytes
-rw-r--r--web/static/images/emoji/flag-by.pngbin0 -> 1709 bytes
-rw-r--r--web/static/images/emoji/flag-bz.pngbin0 -> 2138 bytes
-rw-r--r--web/static/images/emoji/flag-ca.pngbin0 -> 747 bytes
-rw-r--r--web/static/images/emoji/flag-cd.pngbin0 -> 1915 bytes
-rw-r--r--web/static/images/emoji/flag-cf.pngbin0 -> 611 bytes
-rw-r--r--web/static/images/emoji/flag-cg.pngbin0 -> 1149 bytes
-rw-r--r--web/static/images/emoji/flag-ch.pngbin0 -> 468 bytes
-rw-r--r--web/static/images/emoji/flag-ci.pngbin0 -> 361 bytes
-rw-r--r--web/static/images/emoji/flag-cl.pngbin0 -> 691 bytes
-rw-r--r--web/static/images/emoji/flag-cm.pngbin0 -> 619 bytes
-rw-r--r--web/static/images/emoji/flag-cn.pngbin0 -> 697 bytes
-rw-r--r--web/static/images/emoji/flag-co.pngbin0 -> 405 bytes
-rw-r--r--web/static/images/emoji/flag-cr.pngbin0 -> 298 bytes
-rw-r--r--web/static/images/emoji/flag-cu.pngbin0 -> 1074 bytes
-rw-r--r--web/static/images/emoji/flag-cv.pngbin0 -> 959 bytes
-rw-r--r--web/static/images/emoji/flag-cy.pngbin0 -> 1183 bytes
-rw-r--r--web/static/images/emoji/flag-cz.pngbin0 -> 889 bytes
-rw-r--r--web/static/images/emoji/flag-de.pngbin0 -> 407 bytes
-rw-r--r--web/static/images/emoji/flag-dj.pngbin0 -> 1155 bytes
-rw-r--r--web/static/images/emoji/flag-dk.pngbin0 -> 310 bytes
-rw-r--r--web/static/images/emoji/flag-dm.pngbin0 -> 1481 bytes
-rw-r--r--web/static/images/emoji/flag-do.pngbin0 -> 927 bytes
-rw-r--r--web/static/images/emoji/flag-dz.pngbin0 -> 1052 bytes
-rw-r--r--web/static/images/emoji/flag-ec.pngbin0 -> 1587 bytes
-rw-r--r--web/static/images/emoji/flag-ee.pngbin0 -> 407 bytes
-rw-r--r--web/static/images/emoji/flag-eg.pngbin0 -> 843 bytes
-rw-r--r--web/static/images/emoji/flag-eh.pngbin0 -> 1068 bytes
-rw-r--r--web/static/images/emoji/flag-er.pngbin0 -> 1973 bytes
-rw-r--r--web/static/images/emoji/flag-es.pngbin0 -> 1197 bytes
-rw-r--r--web/static/images/emoji/flag-et.pngbin0 -> 1280 bytes
-rw-r--r--web/static/images/emoji/flag-fi.pngbin0 -> 312 bytes
-rw-r--r--web/static/images/emoji/flag-fj.pngbin0 -> 2293 bytes
-rw-r--r--web/static/images/emoji/flag-fk.pngbin0 -> 2245 bytes
-rw-r--r--web/static/images/emoji/flag-fm.pngbin0 -> 744 bytes
-rw-r--r--web/static/images/emoji/flag-fo.pngbin0 -> 328 bytes
-rw-r--r--web/static/images/emoji/flag-fr.pngbin0 -> 432 bytes
-rw-r--r--web/static/images/emoji/flag-ga.pngbin0 -> 407 bytes
-rw-r--r--web/static/images/emoji/flag-gb.pngbin0 -> 2050 bytes
-rw-r--r--web/static/images/emoji/flag-gd.pngbin0 -> 1441 bytes
-rw-r--r--web/static/images/emoji/flag-ge.pngbin0 -> 876 bytes
-rw-r--r--web/static/images/emoji/flag-gh.pngbin0 -> 639 bytes
-rw-r--r--web/static/images/emoji/flag-gi.pngbin0 -> 2223 bytes
-rw-r--r--web/static/images/emoji/flag-gl.pngbin0 -> 818 bytes
-rw-r--r--web/static/images/emoji/flag-gm.pngbin0 -> 419 bytes
-rw-r--r--web/static/images/emoji/flag-gn.pngbin0 -> 363 bytes
-rw-r--r--web/static/images/emoji/flag-gq.pngbin0 -> 1239 bytes
-rw-r--r--web/static/images/emoji/flag-gr.pngbin0 -> 363 bytes
-rw-r--r--web/static/images/emoji/flag-gt.pngbin0 -> 1365 bytes
-rw-r--r--web/static/images/emoji/flag-gu.pngbin0 -> 1531 bytes
-rw-r--r--web/static/images/emoji/flag-gw.pngbin0 -> 719 bytes
-rw-r--r--web/static/images/emoji/flag-gy.pngbin0 -> 1323 bytes
-rw-r--r--web/static/images/emoji/flag-hk.pngbin0 -> 1191 bytes
-rw-r--r--web/static/images/emoji/flag-hn.pngbin0 -> 699 bytes
-rw-r--r--web/static/images/emoji/flag-hr.pngbin0 -> 1615 bytes
-rw-r--r--web/static/images/emoji/flag-ht.pngbin0 -> 1721 bytes
-rw-r--r--web/static/images/emoji/flag-hu.pngbin0 -> 407 bytes
-rw-r--r--web/static/images/emoji/flag-id.pngbin0 -> 400 bytes
-rw-r--r--web/static/images/emoji/flag-ie.pngbin0 -> 359 bytes
-rw-r--r--web/static/images/emoji/flag-il.pngbin0 -> 714 bytes
-rw-r--r--web/static/images/emoji/flag-in.pngbin0 -> 954 bytes
-rw-r--r--web/static/images/emoji/flag-iq.pngbin0 -> 993 bytes
-rw-r--r--web/static/images/emoji/flag-ir.pngbin0 -> 874 bytes
-rw-r--r--web/static/images/emoji/flag-is.pngbin0 -> 328 bytes
-rw-r--r--web/static/images/emoji/flag-it.pngbin0 -> 367 bytes
-rw-r--r--web/static/images/emoji/flag-je.pngbin0 -> 1983 bytes
-rw-r--r--web/static/images/emoji/flag-jm.pngbin0 -> 1727 bytes
-rw-r--r--web/static/images/emoji/flag-jo.pngbin0 -> 1156 bytes
-rw-r--r--web/static/images/emoji/flag-jp.pngbin0 -> 598 bytes
-rw-r--r--web/static/images/emoji/flag-ke.pngbin0 -> 1520 bytes
-rw-r--r--web/static/images/emoji/flag-kg.pngbin0 -> 1345 bytes
-rw-r--r--web/static/images/emoji/flag-kh.pngbin0 -> 1240 bytes
-rw-r--r--web/static/images/emoji/flag-ki.pngbin0 -> 2452 bytes
-rw-r--r--web/static/images/emoji/flag-km.pngbin0 -> 1416 bytes
-rw-r--r--web/static/images/emoji/flag-kn.pngbin0 -> 2065 bytes
-rw-r--r--web/static/images/emoji/flag-kp.pngbin0 -> 856 bytes
-rw-r--r--web/static/images/emoji/flag-kr.pngbin0 -> 1235 bytes
-rw-r--r--web/static/images/emoji/flag-kw.pngbin0 -> 755 bytes
-rw-r--r--web/static/images/emoji/flag-ky.pngbin0 -> 2335 bytes
-rw-r--r--web/static/images/emoji/flag-kz.pngbin0 -> 1738 bytes
-rw-r--r--web/static/images/emoji/flag-la.pngbin0 -> 601 bytes
-rw-r--r--web/static/images/emoji/flag-lb.pngbin0 -> 847 bytes
-rw-r--r--web/static/images/emoji/flag-lc.pngbin0 -> 961 bytes
-rw-r--r--web/static/images/emoji/flag-li.pngbin0 -> 1054 bytes
-rw-r--r--web/static/images/emoji/flag-lk.pngbin0 -> 1702 bytes
-rw-r--r--web/static/images/emoji/flag-lr.pngbin0 -> 825 bytes
-rw-r--r--web/static/images/emoji/flag-ls.pngbin0 -> 869 bytes
-rw-r--r--web/static/images/emoji/flag-lt.pngbin0 -> 407 bytes
-rw-r--r--web/static/images/emoji/flag-lu.pngbin0 -> 407 bytes
-rw-r--r--web/static/images/emoji/flag-lv.pngbin0 -> 295 bytes
-rw-r--r--web/static/images/emoji/flag-ly.pngbin0 -> 836 bytes
-rw-r--r--web/static/images/emoji/flag-ma.pngbin0 -> 895 bytes
-rw-r--r--web/static/images/emoji/flag-mc.pngbin0 -> 400 bytes
-rw-r--r--web/static/images/emoji/flag-md.pngbin0 -> 1324 bytes
-rw-r--r--web/static/images/emoji/flag-me.pngbin0 -> 1903 bytes
-rw-r--r--web/static/images/emoji/flag-mg.pngbin0 -> 465 bytes
-rw-r--r--web/static/images/emoji/flag-mh.pngbin0 -> 2043 bytes
-rw-r--r--web/static/images/emoji/flag-mk.pngbin0 -> 1987 bytes
-rw-r--r--web/static/images/emoji/flag-ml.pngbin0 -> 361 bytes
-rw-r--r--web/static/images/emoji/flag-mm.pngbin0 -> 1027 bytes
-rw-r--r--web/static/images/emoji/flag-mn.pngbin0 -> 817 bytes
-rw-r--r--web/static/images/emoji/flag-mo.pngbin0 -> 1314 bytes
-rw-r--r--web/static/images/emoji/flag-mr.pngbin0 -> 881 bytes
-rw-r--r--web/static/images/emoji/flag-ms.pngbin0 -> 1901 bytes
-rw-r--r--web/static/images/emoji/flag-mt.pngbin0 -> 840 bytes
-rw-r--r--web/static/images/emoji/flag-mu.pngbin0 -> 408 bytes
-rw-r--r--web/static/images/emoji/flag-mv.pngbin0 -> 630 bytes
-rw-r--r--web/static/images/emoji/flag-mw.pngbin0 -> 907 bytes
-rw-r--r--web/static/images/emoji/flag-mx.pngbin0 -> 1282 bytes
-rw-r--r--web/static/images/emoji/flag-my.pngbin0 -> 924 bytes
-rw-r--r--web/static/images/emoji/flag-mz.pngbin0 -> 1518 bytes
-rw-r--r--web/static/images/emoji/flag-na.pngbin0 -> 2190 bytes
-rw-r--r--web/static/images/emoji/flag-nc.pngbin0 -> 1313 bytes
-rw-r--r--web/static/images/emoji/flag-ne.pngbin0 -> 707 bytes
-rw-r--r--web/static/images/emoji/flag-ng.pngbin0 -> 304 bytes
-rw-r--r--web/static/images/emoji/flag-ni.pngbin0 -> 838 bytes
-rw-r--r--web/static/images/emoji/flag-nl.pngbin0 -> 407 bytes
-rw-r--r--web/static/images/emoji/flag-no.pngbin0 -> 328 bytes
-rw-r--r--web/static/images/emoji/flag-np.pngbin0 -> 1507 bytes
-rw-r--r--web/static/images/emoji/flag-nr.pngbin0 -> 607 bytes
-rw-r--r--web/static/images/emoji/flag-nu.pngbin0 -> 1539 bytes
-rw-r--r--web/static/images/emoji/flag-nz.pngbin0 -> 1568 bytes
-rw-r--r--web/static/images/emoji/flag-om.pngbin0 -> 871 bytes
-rw-r--r--web/static/images/emoji/flag-pa.pngbin0 -> 835 bytes
-rw-r--r--web/static/images/emoji/flag-pe.pngbin0 -> 304 bytes
-rw-r--r--web/static/images/emoji/flag-pf.pngbin0 -> 970 bytes
-rw-r--r--web/static/images/emoji/flag-pg.pngbin0 -> 1710 bytes
-rw-r--r--web/static/images/emoji/flag-ph.pngbin0 -> 1355 bytes
-rw-r--r--web/static/images/emoji/flag-pk.pngbin0 -> 952 bytes
-rw-r--r--web/static/images/emoji/flag-pl.pngbin0 -> 399 bytes
-rw-r--r--web/static/images/emoji/flag-pr.pngbin0 -> 1087 bytes
-rw-r--r--web/static/images/emoji/flag-ps.pngbin0 -> 864 bytes
-rw-r--r--web/static/images/emoji/flag-pt.pngbin0 -> 1570 bytes
-rw-r--r--web/static/images/emoji/flag-pw.pngbin0 -> 639 bytes
-rw-r--r--web/static/images/emoji/flag-py.pngbin0 -> 1081 bytes
-rw-r--r--web/static/images/emoji/flag-qa.pngbin0 -> 818 bytes
-rw-r--r--web/static/images/emoji/flag-ro.pngbin0 -> 364 bytes
-rw-r--r--web/static/images/emoji/flag-rs.pngbin0 -> 1647 bytes
-rw-r--r--web/static/images/emoji/flag-ru.pngbin0 -> 407 bytes
-rw-r--r--web/static/images/emoji/flag-rw.pngbin0 -> 1038 bytes
-rw-r--r--web/static/images/emoji/flag-sa.pngbin0 -> 1910 bytes
-rw-r--r--web/static/images/emoji/flag-sb.pngbin0 -> 1731 bytes
-rw-r--r--web/static/images/emoji/flag-sc.pngbin0 -> 1639 bytes
-rw-r--r--web/static/images/emoji/flag-sd.pngbin0 -> 875 bytes
-rw-r--r--web/static/images/emoji/flag-se.pngbin0 -> 310 bytes
-rw-r--r--web/static/images/emoji/flag-sg.pngbin0 -> 926 bytes
-rw-r--r--web/static/images/emoji/flag-sh.pngbin0 -> 2179 bytes
-rw-r--r--web/static/images/emoji/flag-si.pngbin0 -> 930 bytes
-rw-r--r--web/static/images/emoji/flag-sk.pngbin0 -> 1111 bytes
-rw-r--r--web/static/images/emoji/flag-sl.pngbin0 -> 387 bytes
-rw-r--r--web/static/images/emoji/flag-sm.pngbin0 -> 2475 bytes
-rw-r--r--web/static/images/emoji/flag-sn.pngbin0 -> 654 bytes
-rw-r--r--web/static/images/emoji/flag-so.pngbin0 -> 752 bytes
-rw-r--r--web/static/images/emoji/flag-sr.pngbin0 -> 575 bytes
-rw-r--r--web/static/images/emoji/flag-st.pngbin0 -> 1118 bytes
-rw-r--r--web/static/images/emoji/flag-sv.pngbin0 -> 977 bytes
-rw-r--r--web/static/images/emoji/flag-sy.pngbin0 -> 811 bytes
-rw-r--r--web/static/images/emoji/flag-sz.pngbin0 -> 1094 bytes
-rw-r--r--web/static/images/emoji/flag-td.pngbin0 -> 356 bytes
-rw-r--r--web/static/images/emoji/flag-tg.pngbin0 -> 733 bytes
-rw-r--r--web/static/images/emoji/flag-th.pngbin0 -> 298 bytes
-rw-r--r--web/static/images/emoji/flag-tj.pngbin0 -> 775 bytes
-rw-r--r--web/static/images/emoji/flag-tl.pngbin0 -> 1488 bytes
-rw-r--r--web/static/images/emoji/flag-tm.pngbin0 -> 2713 bytes
-rw-r--r--web/static/images/emoji/flag-tn.pngbin0 -> 1086 bytes
-rw-r--r--web/static/images/emoji/flag-to.pngbin0 -> 427 bytes
-rw-r--r--web/static/images/emoji/flag-tr.pngbin0 -> 849 bytes
-rw-r--r--web/static/images/emoji/flag-tt.pngbin0 -> 1721 bytes
-rw-r--r--web/static/images/emoji/flag-tv.pngbin0 -> 1705 bytes
-rw-r--r--web/static/images/emoji/flag-tw.pngbin0 -> 848 bytes
-rw-r--r--web/static/images/emoji/flag-tz.pngbin0 -> 1800 bytes
-rw-r--r--web/static/images/emoji/flag-ua.pngbin0 -> 400 bytes
-rw-r--r--web/static/images/emoji/flag-ug.pngbin0 -> 910 bytes
-rw-r--r--web/static/images/emoji/flag-us.pngbin0 -> 1324 bytes
-rw-r--r--web/static/images/emoji/flag-uy.pngbin0 -> 1136 bytes
-rw-r--r--web/static/images/emoji/flag-uz.pngbin0 -> 918 bytes
-rw-r--r--web/static/images/emoji/flag-va.pngbin0 -> 1366 bytes
-rw-r--r--web/static/images/emoji/flag-vc.pngbin0 -> 889 bytes
-rw-r--r--web/static/images/emoji/flag-ve.pngbin0 -> 913 bytes
-rw-r--r--web/static/images/emoji/flag-vi.pngbin0 -> 2547 bytes
-rw-r--r--web/static/images/emoji/flag-vn.pngbin0 -> 707 bytes
-rw-r--r--web/static/images/emoji/flag-vu.pngbin0 -> 1642 bytes
-rw-r--r--web/static/images/emoji/flag-wf.pngbin0 -> 347 bytes
-rw-r--r--web/static/images/emoji/flag-ws.pngbin0 -> 738 bytes
-rw-r--r--web/static/images/emoji/flag-xk.pngbin0 -> 1196 bytes
-rw-r--r--web/static/images/emoji/flag-ye.pngbin0 -> 406 bytes
-rw-r--r--web/static/images/emoji/flag-za.pngbin0 -> 1651 bytes
-rw-r--r--web/static/images/emoji/flag-zm.pngbin0 -> 827 bytes
-rw-r--r--web/static/images/emoji/flag-zw.pngbin0 -> 1567 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/flags.pngbin6124 -> 1769 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/flashlight.pngbin5024 -> 1373 bytes
-rw-r--r--web/static/images/emoji/flipper.pngbin0 -> 1980 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/floppy_disk.pngbin3215 -> 523 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/flower_playing_cards.pngbin3434 -> 1055 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/flushed.pngbin5845 -> 2712 bytes
-rw-r--r--web/static/images/emoji/fog.pngbin0 -> 2799 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/foggy.pngbin4623 -> 2847 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/football.pngbin6712 -> 2786 bytes
-rw-r--r--web/static/images/emoji/footprints.pngbin0 -> 1766 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/fork_and_knife.pngbin3608 -> 1055 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/fountain.pngbin5087 -> 1706 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/four.pngbin3176 -> 891 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/four_leaf_clover.pngbin5995 -> 1649 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/fr.pngbin3398 -> 432 bytes
-rw-r--r--web/static/images/emoji/frame_with_picture.pngbin0 -> 1989 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/free.pngbin3605 -> 1078 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/fried_shrimp.pngbin7550 -> 2111 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/fries.pngbin6405 -> 3028 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/frog.pngbin4823 -> 2385 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/frowning.pngbin4733 -> 1931 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/fu.pngbin4687 -> 4687 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/fuelpump.pngbin4296 -> 2054 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/full_moon.pngbin6458 -> 1371 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/full_moon_with_face.pngbin7165 -> 2622 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/game_die.pngbin2956 -> 2043 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/gb.pngbin5894 -> 2050 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/gem.pngbin4855 -> 1769 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/gemini.pngbin4296 -> 1520 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/ghost.pngbin4513 -> 1827 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/gift.pngbin6712 -> 2876 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/gift_heart.pngbin6013 -> 2059 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/girl.pngbin6314 -> 1514 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/globe_with_meridians.pngbin5837 -> 2519 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/goat.pngbin4889 -> 1928 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/goberserk.pngbin1334 -> 1334 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/godmode.pngbin1042 -> 1042 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/golf.pngbin3548 -> 1809 bytes
-rw-r--r--web/static/images/emoji/golfer.pngbin0 -> 2075 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/grapes.pngbin5423 -> 1860 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/green_apple.pngbin6205 -> 1436 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/green_book.pngbin5090 -> 1638 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/green_heart.pngbin4432 -> 1207 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/grey_exclamation.pngbin790 -> 666 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/grey_question.pngbin1057 -> 1002 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/grimacing.pngbin5327 -> 2264 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/grin.pngbin5721 -> 2001 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/grinning.pngbin5550 -> 2255 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/guardsman.pngbin3587 -> 1491 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/guitar.pngbin4382 -> 2052 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/gun.pngbin3161 -> 1661 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/haircut.pngbin7100 -> 3985 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/hamburger.pngbin5706 -> 2608 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/hammer.pngbin3670 -> 1612 bytes
-rw-r--r--web/static/images/emoji/hammer_and_wrench.pngbin0 -> 2844 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/hamster.pngbin7221 -> 3265 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/hand.pngbin4161 -> 756 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/handbag.pngbin5449 -> 1982 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/hankey.pngbin4754 -> 3991 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/hash.pngbin3742 -> 1250 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/hatched_chick.pngbin5646 -> 1936 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/hatching_chick.pngbin5928 -> 2372 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/headphones.pngbin1910 -> 1693 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/hear_no_evil.pngbin6550 -> 3411 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/heart.pngbin3302 -> 1236 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/heart_decoration.pngbin3507 -> 1072 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/heart_eyes.pngbin5758 -> 2295 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/heart_eyes_cat.pngbin6176 -> 3430 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/heartbeat.pngbin4052 -> 1720 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/heartpulse.pngbin6269 -> 2240 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/hearts.pngbin2925 -> 1067 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/heavy_check_mark.pngbin924 -> 1066 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/heavy_division_sign.pngbin264 -> 704 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/heavy_dollar_sign.pngbin1150 -> 1134 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/heavy_exclamation_mark.pngbin1315 -> 737 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/heavy_minus_sign.pngbin176 -> 324 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/heavy_multiplication_x.pngbin591 -> 940 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/heavy_plus_sign.pngbin264 -> 400 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/helicopter.pngbin4100 -> 1653 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/herb.pngbin5889 -> 2437 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/hibiscus.pngbin8322 -> 2466 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/high_brightness.pngbin4060 -> 1607 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/high_heel.pngbin4557 -> 1804 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/hocho.pngbin2455 -> 1426 bytes
-rw-r--r--web/static/images/emoji/hole.pngbin0 -> 435 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/honey_pot.pngbin5830 -> 2425 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/honeybee.pngbin5851 -> 2243 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/horse.pngbin4582 -> 2460 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/horse_racing.pngbin5905 -> 1739 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/hospital.pngbin4887 -> 918 bytes
-rw-r--r--web/static/images/emoji/hot_pepper.pngbin0 -> 2828 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/hotel.pngbin5123 -> 841 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/hotsprings.pngbin3538 -> 2577 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/hourglass.pngbin4492 -> 1684 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/hourglass_flowing_sand.pngbin4291 -> 1612 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/house.pngbin3510 -> 1914 bytes
-rw-r--r--web/static/images/emoji/house_buildings.pngbin0 -> 2627 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/house_with_garden.pngbin6089 -> 3251 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/hurtrealbad.pngbin1456 -> 1456 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/hushed.pngbin4941 -> 2503 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/ice_cream.pngbin5469 -> 1117 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/icecream.pngbin4603 -> 2862 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/id.pngbin3905 -> 1167 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/ideograph_advantage.pngbin3088 -> 2036 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/imp.pngbin6621 -> 2467 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/inbox_tray.pngbin3700 -> 774 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/incoming_envelope.pngbin2206 -> 1548 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/information_desk_person.pngbin6605 -> 3314 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/information_source.pngbin3670 -> 704 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/innocent.pngbin7000 -> 2466 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/interrobang.pngbin2875 -> 1682 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/iphone.pngbin3499 -> 874 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/it.pngbin3495 -> 367 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/izakaya_lantern.pngbin4064 -> 1042 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/jack_o_lantern.pngbin5633 -> 2263 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/japan.pngbin4085 -> 1468 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/japanese_castle.pngbin4939 -> 755 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/japanese_goblin.pngbin5159 -> 2789 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/japanese_ogre.pngbin7147 -> 4549 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/jeans.pngbin3470 -> 1298 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/joy.pngbin6339 -> 2673 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/joy_cat.pngbin7190 -> 3538 bytes
-rw-r--r--web/static/images/emoji/joystick.pngbin0 -> 1919 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/jp.pngbin2827 -> 598 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/key.pngbin3452 -> 1260 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/keycap_ten.pngbin4095 -> 1372 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/kimono.pngbin4938 -> 2913 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/kiss.pngbin6276 -> 1692 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/kissing.pngbin4790 -> 2064 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/kissing_cat.pngbin6801 -> 3165 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/kissing_closed_eyes.pngbin5563 -> 2249 bytes
-rwxr-xr-xweb/static/images/emoji/kissing_face.pngbin5563 -> 0 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/kissing_heart.pngbin5767 -> 2511 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/kissing_smiling_eyes.pngbin4999 -> 1677 bytes
-rw-r--r--web/static/images/emoji/knife.pngbin0 -> 1426 bytes
-rw-r--r--web/static/images/emoji/knife_fork_plate.pngbin0 -> 2552 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/koala.pngbin5687 -> 2454 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/koko.pngbin2854 -> 579 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/kr.pngbin5105 -> 1235 bytes
-rw-r--r--web/static/images/emoji/label.pngbin0 -> 2895 bytes
-rw-r--r--web/static/images/emoji/lantern.pngbin0 -> 1042 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/large_blue_circle.pngbin4637 -> 985 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/large_blue_diamond.pngbin3790 -> 251 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/large_orange_diamond.pngbin3849 -> 259 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/last_quarter_moon.pngbin6149 -> 1829 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/last_quarter_moon_with_face.pngbin4328 -> 1684 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/laughing.pngbin6347 -> 2047 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/leaves.pngbin5571 -> 2842 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/ledger.pngbin5921 -> 2565 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/left_luggage.pngbin4025 -> 952 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/left_right_arrow.pngbin3413 -> 977 bytes
-rw-r--r--web/static/images/emoji/left_speech_bubble.pngbin0 -> 697 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/leftwards_arrow_with_hook.pngbin3775 -> 1079 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/lemon.pngbin6055 -> 1776 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/leo.pngbin4913 -> 1879 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/leopard.pngbin5348 -> 3543 bytes
-rw-r--r--web/static/images/emoji/level_slider.pngbin0 -> 793 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/libra.pngbin4218 -> 1701 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/light_rail.pngbin3792 -> 1091 bytes
-rw-r--r--web/static/images/emoji/lightning.pngbin0 -> 1056 bytes
-rw-r--r--web/static/images/emoji/lightning_cloud.pngbin0 -> 1056 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/link.pngbin2619 -> 1634 bytes
-rw-r--r--web/static/images/emoji/linked_paperclips.pngbin0 -> 3222 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/lips.pngbin3738 -> 1556 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/lipstick.pngbin3384 -> 832 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/lock.pngbin3676 -> 780 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/lock_with_ink_pen.pngbin4967 -> 1592 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/lollipop.pngbin5771 -> 2409 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/loop.pngbin3417 -> 1394 bytes
-rw-r--r--web/static/images/emoji/loud_sound.pngbin0 -> 2331 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/loudspeaker.pngbin6001 -> 2119 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/love_hotel.pngbin5941 -> 1232 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/love_letter.pngbin2467 -> 1878 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/low_brightness.pngbin2498 -> 1407 bytes
-rw-r--r--web/static/images/emoji/lower_left_ballpoint_pen.pngbin0 -> 1628 bytes
-rw-r--r--web/static/images/emoji/lower_left_crayon.pngbin0 -> 1398 bytes
-rw-r--r--web/static/images/emoji/lower_left_fountain_pen.pngbin0 -> 1666 bytes
-rw-r--r--web/static/images/emoji/lower_left_paintbrush.pngbin0 -> 1080 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/m.pngbin4734 -> 2025 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/mag.pngbin3040 -> 2385 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/mag_right.pngbin3629 -> 2407 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/mahjong.pngbin3309 -> 1211 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/mailbox.pngbin4196 -> 836 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/mailbox_closed.pngbin4360 -> 823 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/mailbox_with_mail.pngbin4581 -> 868 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/mailbox_with_no_mail.pngbin3101 -> 809 bytes
-rw-r--r--web/static/images/emoji/man-woman-boy.pngbin0 -> 4120 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/man.pngbin6023 -> 1303 bytes
-rw-r--r--web/static/images/emoji/man_and_woman_holding_hands.pngbin0 -> 2209 bytes
-rw-r--r--web/static/images/emoji/man_in_business_suit_levitating.pngbin0 -> 1761 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/man_with_gua_pi_mao.pngbin5324 -> 1722 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/man_with_turban.pngbin6528 -> 2482 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/mans_shoe.pngbin4749 -> 1529 bytes
-rw-r--r--web/static/images/emoji/mantelpiece_clock.pngbin0 -> 1856 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/maple_leaf.pngbin4450 -> 2400 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/mask.pngbin5235 -> 2188 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/massage.pngbin6036 -> 3318 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/meat_on_bone.pngbin5425 -> 1969 bytes
-rw-r--r--web/static/images/emoji/medal.pngbin0 -> 1125 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/mega.pngbin4680 -> 1134 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/melon.pngbin8233 -> 2931 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/memo.pngbin4945 -> 2127 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/mens.pngbin3368 -> 943 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/metal.pngbin3098 -> 3098 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/metro.pngbin3402 -> 1877 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/microphone.pngbin3680 -> 2823 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/microscope.pngbin4130 -> 1945 bytes
-rw-r--r--web/static/images/emoji/middle_finger.pngbin0 -> 1673 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/milky_way.pngbin5878 -> 3185 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/minibus.pngbin3113 -> 2543 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/minidisc.pngbin5594 -> 1449 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/mobile_phone_off.pngbin3521 -> 1223 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/money_with_wings.pngbin7584 -> 2699 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/moneybag.pngbin5500 -> 1953 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/monkey.pngbin4973 -> 2415 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/monkey_face.pngbin5348 -> 2837 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/monorail.pngbin4311 -> 998 bytes
-rw-r--r--web/static/images/emoji/moon.pngbin0 -> 1974 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/mortar_board.pngbin4164 -> 2038 bytes
-rw-r--r--web/static/images/emoji/motor_boat.pngbin0 -> 866 bytes
-rw-r--r--web/static/images/emoji/motorway.pngbin0 -> 1470 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/mount_fuji.pngbin5004 -> 1484 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/mountain_bicyclist.pngbin9511 -> 2015 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/mountain_cableway.pngbin4405 -> 1520 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/mountain_railway.pngbin7448 -> 1802 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/mouse.pngbin6625 -> 2384 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/mouse2.pngbin4087 -> 1854 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/movie_camera.pngbin4081 -> 1491 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/moyai.pngbin2166 -> 1909 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/muscle.pngbin4672 -> 1731 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/mushroom.pngbin4887 -> 1903 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/musical_keyboard.pngbin1944 -> 998 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/musical_note.pngbin3188 -> 1255 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/musical_score.pngbin1497 -> 946 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/mute.pngbin6635 -> 2662 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/nail_care.pngbin5814 -> 2297 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/name_badge.pngbin3985 -> 1662 bytes
-rw-r--r--web/static/images/emoji/national_park.pngbin0 -> 1722 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/neckbeard.pngbin6247 -> 6247 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/necktie.pngbin6116 -> 2115 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/negative_squared_cross_mark.pngbin3853 -> 950 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/neutral_face.pngbin4843 -> 1763 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/new.pngbin3927 -> 1431 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/new_moon.pngbin5276 -> 918 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/new_moon_with_face.pngbin6708 -> 2518 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/newspaper.pngbin5180 -> 2741 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/ng.pngbin4201 -> 1462 bytes
-rw-r--r--web/static/images/emoji/night_with_stars.pngbin0 -> 1875 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/nine.pngbin3776 -> 1267 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/no_bell.pngbin5944 -> 2414 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/no_bicycles.pngbin5661 -> 2663 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/no_entry.pngbin3514 -> 1496 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/no_entry_sign.pngbin3287 -> 2126 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/no_good.pngbin7034 -> 3133 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/no_mobile_phones.pngbin5083 -> 1923 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/no_mouth.pngbin4632 -> 1713 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/no_pedestrians.pngbin5485 -> 2290 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/no_smoking.pngbin4212 -> 1394 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/non-potable_water.pngbin5202 -> 2254 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/nose.pngbin3703 -> 1243 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/notebook.pngbin6001 -> 1440 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/notebook_with_decorative_cover.pngbin5329 -> 1571 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/notes.pngbin1536 -> 1737 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/nut_and_bolt.pngbin2169 -> 1162 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/o.pngbin2538 -> 2049 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/o2.pngbin3498 -> 1345 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/ocean.pngbin5777 -> 2317 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/octocat.pngbin3738 -> 3738 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/octopus.pngbin5779 -> 2820 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/oden.pngbin5543 -> 2142 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/office.pngbin5156 -> 771 bytes
-rw-r--r--web/static/images/emoji/oil_drum.pngbin0 -> 1982 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/ok.pngbin4158 -> 1609 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/ok_hand.pngbin4598 -> 1893 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/ok_woman.pngbin7527 -> 3833 bytes
-rw-r--r--web/static/images/emoji/old_key.pngbin0 -> 1252 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/older_man.pngbin6733 -> 1434 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/older_woman.pngbin5977 -> 1642 bytes
-rw-r--r--web/static/images/emoji/om_symbol.pngbin0 -> 2831 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/on.pngbin1472 -> 1811 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/oncoming_automobile.pngbin7469 -> 1986 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/oncoming_bus.pngbin5305 -> 1268 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/oncoming_police_car.pngbin5683 -> 1886 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/oncoming_taxi.pngbin6287 -> 1978 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/one.pngbin2825 -> 648 bytes
-rw-r--r--web/static/images/emoji/open_book.pngbin0 -> 1152 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/open_file_folder.pngbin4292 -> 1870 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/open_hands.pngbin4950 -> 2210 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/open_mouth.pngbin4519 -> 1952 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/ophiuchus.pngbin4434 -> 1262 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/orange_book.pngbin5085 -> 1602 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/outbox_tray.pngbin3683 -> 796 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/ox.pngbin5935 -> 2815 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/package.pngbin8449 -> 2021 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/page_facing_up.pngbin2178 -> 840 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/page_with_curl.pngbin3715 -> 1117 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/pager.pngbin4022 -> 1013 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/palm_tree.pngbin3663 -> 2928 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/panda_face.pngbin4814 -> 2580 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/paperclip.pngbin2478 -> 1802 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/parking.pngbin3083 -> 869 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/part_alternation_mark.pngbin2681 -> 1165 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/partly_sunny.pngbin5169 -> 1407 bytes
-rw-r--r--web/static/images/emoji/passenger_ship.pngbin0 -> 2283 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/passport_control.pngbin4018 -> 1617 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/paw_prints.pngbin2471 -> 1451 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/peach.pngbin5920 -> 1129 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/pear.pngbin6936 -> 1450 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/pencil.pngbin4945 -> 2127 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/pencil2.pngbin4348 -> 1830 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/penguin.pngbin4746 -> 2412 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/pensive.pngbin5062 -> 1809 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/performing_arts.pngbin6287 -> 2773 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/persevere.pngbin5519 -> 2073 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/person_frowning.pngbin4826 -> 2884 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/person_with_blond_hair.pngbin6622 -> 1501 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/person_with_pouting_face.pngbin5428 -> 2826 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/phone.pngbin5495 -> 2335 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/pig.pngbin5996 -> 3318 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/pig2.pngbin4797 -> 2473 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/pig_nose.pngbin4761 -> 1546 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/pill.pngbin5022 -> 1010 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/pineapple.pngbin5634 -> 3199 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/pisces.pngbin4441 -> 1405 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/pizza.pngbin5273 -> 3322 bytes
-rwxr-xr-xweb/static/images/emoji/plus1.pngbin5075 -> 0 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/point_down.pngbin3225 -> 1304 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/point_left.pngbin3085 -> 615 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/point_right.pngbin3079 -> 1294 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/point_up.pngbin3431 -> 1581 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/point_up_2.pngbin3181 -> 1267 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/police_car.pngbin3349 -> 2249 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/poodle.pngbin6852 -> 2342 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/poop.pngbin4754 -> 3991 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/post_office.pngbin5136 -> 975 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/postal_horn.pngbin4735 -> 1867 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/postbox.pngbin3388 -> 942 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/potable_water.pngbin3934 -> 1431 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/pouch.pngbin4642 -> 1593 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/poultry_leg.pngbin4200 -> 1371 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/pound.pngbin4235 -> 1464 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/pouting_cat.pngbin4918 -> 3013 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/pray.pngbin6203 -> 1502 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/princess.pngbin7920 -> 3119 bytes
-rw-r--r--web/static/images/emoji/printer.pngbin0 -> 1203 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/punch.pngbin4833 -> 1892 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/purple_heart.pngbin4295 -> 1217 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/purse.pngbin5033 -> 1678 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/pushpin.pngbin3793 -> 1868 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/put_litter_in_its_place.pngbin4091 -> 1196 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/question.pngbin1711 -> 1126 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/rabbit.pngbin5677 -> 2296 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/rabbit2.pngbin4425 -> 1994 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/racehorse.pngbin4735 -> 2255 bytes
-rw-r--r--web/static/images/emoji/racing_car.pngbin0 -> 3134 bytes
-rw-r--r--web/static/images/emoji/racing_motorcycle.pngbin0 -> 3611 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/radio.pngbin6150 -> 1628 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/radio_button.pngbin2198 -> 1423 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/rage.pngbin5410 -> 2361 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/rage1.pngbin1086 -> 1086 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/rage2.pngbin1098 -> 1098 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/rage3.pngbin1119 -> 1119 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/rage4.pngbin1270 -> 1270 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/railway_car.pngbin3648 -> 1636 bytes
-rw-r--r--web/static/images/emoji/railway_track.pngbin0 -> 2714 bytes
-rw-r--r--web/static/images/emoji/rain_cloud.pngbin0 -> 1663 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/rainbow.pngbin5314 -> 3007 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/raised_hand.pngbin4161 -> 756 bytes
-rw-r--r--web/static/images/emoji/raised_hand_with_fingers_splayed.pngbin0 -> 1539 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/raised_hands.pngbin5375 -> 2568 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/raising_hand.pngbin6177 -> 3497 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/ram.pngbin6531 -> 2292 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/ramen.pngbin6574 -> 3894 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/rat.pngbin5434 -> 1714 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/recycle.pngbin3704 -> 2009 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/red_car.pngbin4278 -> 2216 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/red_circle.pngbin3946 -> 976 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/registered.pngbin1613 -> 1573 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/relaxed.pngbin5455 -> 2350 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/relieved.pngbin5364 -> 1732 bytes
-rw-r--r--web/static/images/emoji/reminder_ribbon.pngbin0 -> 1510 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/repeat.pngbin4009 -> 1459 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/repeat_one.pngbin4287 -> 1578 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/restroom.pngbin4142 -> 1580 bytes
-rw-r--r--web/static/images/emoji/reversed_hand_with_middle_finger_extended.pngbin0 -> 1673 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/revolving_hearts.pngbin5472 -> 2193 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/rewind.pngbin3056 -> 966 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/ribbon.pngbin5581 -> 1583 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/rice.pngbin4645 -> 1855 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/rice_ball.pngbin5371 -> 3244 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/rice_cracker.pngbin7787 -> 2096 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/rice_scene.pngbin6261 -> 2537 bytes
-rw-r--r--web/static/images/emoji/right_anger_bubble.pngbin0 -> 1220 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/ring.pngbin5232 -> 2902 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/rocket.pngbin5388 -> 2656 bytes
-rw-r--r--web/static/images/emoji/rolled_up_newspaper.pngbin0 -> 2746 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/roller_coaster.pngbin5148 -> 2869 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/rooster.pngbin6168 -> 2508 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/rose.pngbin4202 -> 1782 bytes
-rw-r--r--web/static/images/emoji/rosette.pngbin0 -> 2083 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/rotating_light.pngbin6620 -> 3086 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/round_pushpin.pngbin1936 -> 1675 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/rowboat.pngbin5357 -> 1396 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/ru.pngbin3920 -> 407 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/rugby_football.pngbin7781 -> 2012 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/runner.pngbin3137 -> 1219 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/running.pngbin3137 -> 1219 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/running_shirt_with_sash.pngbin5701 -> 1945 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/sa.pngbin3556 -> 912 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/sagittarius.pngbin4505 -> 906 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/sailboat.pngbin3833 -> 2353 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/sake.pngbin5073 -> 2181 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/sandal.pngbin3974 -> 1683 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/santa.pngbin6271 -> 3413 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/satellite.pngbin4867 -> 2662 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/satisfied.pngbin6347 -> 2047 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/saxophone.pngbin4252 -> 2419 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/school.pngbin5446 -> 1434 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/school_satchel.pngbin5741 -> 918 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/scissors.pngbin3837 -> 2598 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/scorpius.pngbin4566 -> 1359 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/scream.pngbin6482 -> 2777 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/scream_cat.pngbin6844 -> 4005 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/scroll.pngbin6749 -> 1297 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/seat.pngbin6059 -> 2569 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/secret.pngbin5364 -> 2603 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/see_no_evil.pngbin6828 -> 2829 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/seedling.pngbin2190 -> 1633 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/seven.pngbin3055 -> 873 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/shaved_ice.pngbin5908 -> 2470 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/sheep.pngbin4732 -> 1828 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/shell.pngbin5115 -> 1478 bytes
-rw-r--r--web/static/images/emoji/shield.pngbin0 -> 523 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/ship.pngbin4233 -> 765 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/shipit.pngbin9351 -> 9351 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/shirt.pngbin4676 -> 2017 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/shit.pngbin4754 -> 3991 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/shoe.pngbin4799 -> 1529 bytes
-rw-r--r--web/static/images/emoji/shopping_bags.pngbin0 -> 4175 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/shower.pngbin7520 -> 2117 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/signal_strength.pngbin3231 -> 975 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/six.pngbin3791 -> 1325 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/six_pointed_star.pngbin4854 -> 1714 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/ski.pngbin4167 -> 2259 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/skull.pngbin2428 -> 1689 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/sleeping.pngbin5409 -> 2326 bytes
-rw-r--r--web/static/images/emoji/sleeping_accommodation.pngbin0 -> 710 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/sleepy.pngbin5837 -> 2430 bytes
-rw-r--r--web/static/images/emoji/sleuth_or_spy.pngbin0 -> 2330 bytes
-rw-r--r--web/static/images/emoji/slightly_frowning_face.pngbin0 -> 1926 bytes
-rw-r--r--web/static/images/emoji/slightly_smiling_face.pngbin0 -> 2002 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/slot_machine.pngbin4605 -> 1502 bytes
-rw-r--r--web/static/images/emoji/small_airplane.pngbin0 -> 1910 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/small_blue_diamond.pngbin1817 -> 775 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/small_orange_diamond.pngbin1944 -> 799 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/small_red_triangle.pngbin2054 -> 870 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/small_red_triangle_down.pngbin2157 -> 837 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/smile.pngbin5890 -> 1997 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/smile_cat.pngbin6117 -> 3141 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/smiley.pngbin5794 -> 2473 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/smiley_cat.pngbin6083 -> 3557 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/smiling_imp.pngbin7189 -> 2408 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/smirk.pngbin5307 -> 2071 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/smirk_cat.pngbin6062 -> 3727 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/smoking.pngbin2875 -> 1183 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/snail.pngbin6657 -> 2699 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/snake.pngbin4069 -> 2461 bytes
-rw-r--r--web/static/images/emoji/snow_capped_mountain.pngbin0 -> 2628 bytes
-rw-r--r--web/static/images/emoji/snow_cloud.pngbin0 -> 2930 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/snowboarder.pngbin5356 -> 3121 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/snowflake.pngbin5637 -> 2545 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/snowman.pngbin4658 -> 2380 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/sob.pngbin5709 -> 2850 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/soccer.pngbin4878 -> 1991 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/soon.pngbin1551 -> 1715 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/sos.pngbin4262 -> 1637 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/sound.pngbin5024 -> 1878 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/space_invader.pngbin4353 -> 660 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/spades.pngbin1719 -> 1071 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/spaghetti.pngbin6955 -> 3191 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/sparkle.pngbin8904 -> 2226 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/sparkler.pngbin5696 -> 2420 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/sparkles.pngbin2209 -> 1627 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/sparkling_heart.pngbin5357 -> 1979 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/speak_no_evil.pngbin5977 -> 3218 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/speaker.pngbin5173 -> 2119 bytes
-rw-r--r--web/static/images/emoji/speaking_head_in_silhouette.pngbin0 -> 1305 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/speech_balloon.pngbin2130 -> 1289 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/speedboat.pngbin3512 -> 1248 bytes
-rw-r--r--web/static/images/emoji/spider.pngbin0 -> 2184 bytes
-rw-r--r--web/static/images/emoji/spider_web.pngbin0 -> 2773 bytes
-rw-r--r--web/static/images/emoji/spiral_calendar_pad.pngbin0 -> 1131 bytes
-rw-r--r--web/static/images/emoji/spiral_note_pad.pngbin0 -> 1159 bytes
-rw-r--r--web/static/images/emoji/spock-hand.pngbin0 -> 1757 bytes
-rw-r--r--web/static/images/emoji/sports_medal.pngbin0 -> 2656 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/squirrel.pngbin9351 -> 9351 bytes
-rw-r--r--web/static/images/emoji/stadium.pngbin0 -> 4111 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/star.pngbin3628 -> 1637 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/star2.pngbin4068 -> 2067 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/stars.pngbin4366 -> 2550 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/station.pngbin4836 -> 2338 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/statue_of_liberty.pngbin6075 -> 1370 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/steam_locomotive.pngbin5159 -> 1978 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/stew.pngbin5365 -> 3337 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/straight_ruler.pngbin3797 -> 1905 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/strawberry.pngbin5477 -> 2836 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/stuck_out_tongue.pngbin5215 -> 2398 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/stuck_out_tongue_closed_eyes.pngbin5785 -> 2480 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/stuck_out_tongue_winking_eye.pngbin6007 -> 2367 bytes
-rw-r--r--web/static/images/emoji/studio_microphone.pngbin0 -> 2054 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/sun_with_face.pngbin7958 -> 2002 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/sunflower.pngbin6567 -> 3259 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/sunglasses.pngbin5730 -> 2472 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/sunny.pngbin3802 -> 1733 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/sunrise.pngbin3914 -> 3151 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/sunrise_over_mountains.pngbin6594 -> 2567 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/surfer.pngbin6259 -> 1973 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/sushi.pngbin5257 -> 2939 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/suspect.pngbin1016 -> 1016 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/suspension_railway.pngbin3937 -> 1056 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/sweat.pngbin5576 -> 1830 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/sweat_drops.pngbin4782 -> 1215 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/sweat_smile.pngbin6519 -> 2188 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/sweet_potato.pngbin5551 -> 1814 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/swimmer.pngbin4378 -> 1866 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/symbols.pngbin5434 -> 1763 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/syringe.pngbin3027 -> 1286 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/tada.pngbin5945 -> 3788 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/tanabata_tree.pngbin4296 -> 1995 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/tangerine.pngbin6645 -> 1823 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/taurus.pngbin4733 -> 1932 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/taxi.pngbin3744 -> 2469 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/tea.pngbin5954 -> 3072 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/telephone.pngbin5495 -> 2335 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/telephone_receiver.pngbin2001 -> 1774 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/telescope.pngbin3252 -> 2246 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/tennis.pngbin5976 -> 1894 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/tent.pngbin4482 -> 2461 bytes
-rw-r--r--web/static/images/emoji/thermometer.pngbin0 -> 834 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/thought_balloon.pngbin2521 -> 1040 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/three.pngbin3758 -> 1274 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/thumbsdown.pngbin5070 -> 1604 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/thumbsup.pngbin5075 -> 1714 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/ticket.pngbin3091 -> 771 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/tiger.pngbin6051 -> 4005 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/tiger2.pngbin5744 -> 4135 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/tired_face.pngbin6174 -> 2406 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/tm.pngbin842 -> 1013 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/toilet.pngbin1733 -> 1355 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/tokyo_tower.pngbin4802 -> 1288 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/tomato.pngbin5748 -> 1872 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/tongue.pngbin3662 -> 1157 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/top.pngbin3785 -> 564 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/tophat.pngbin3009 -> 1974 bytes
-rw-r--r--web/static/images/emoji/tornado.pngbin0 -> 2131 bytes
-rw-r--r--web/static/images/emoji/tornado_cloud.pngbin0 -> 2131 bytes
-rw-r--r--web/static/images/emoji/trackball.pngbin0 -> 2125 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/tractor.pngbin5671 -> 3051 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/traffic_light.pngbin3535 -> 1755 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/train.pngbin3905 -> 1220 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/train2.pngbin4817 -> 2622 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/tram.pngbin4869 -> 2343 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/triangular_flag_on_post.pngbin1399 -> 407 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/triangular_ruler.pngbin2706 -> 542 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/trident.pngbin4833 -> 2153 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/triumph.pngbin6164 -> 2819 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/trolleybus.pngbin4431 -> 2032 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/trollface.pngbin4901 -> 4901 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/trophy.pngbin5520 -> 2662 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/tropical_drink.pngbin4189 -> 2228 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/tropical_fish.pngbin5846 -> 2610 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/truck.pngbin3721 -> 2227 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/trumpet.pngbin4373 -> 2813 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/tshirt.pngbin4676 -> 2017 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/tulip.pngbin6065 -> 1813 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/turtle.pngbin5336 -> 2441 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/tv.pngbin5242 -> 1661 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/twisted_rightwards_arrows.pngbin4313 -> 1548 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/two.pngbin3518 -> 1105 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/two_hearts.pngbin3565 -> 1485 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/two_men_holding_hands.pngbin6994 -> 1670 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/two_women_holding_hands.pngbin7633 -> 2395 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/u5272.pngbin4533 -> 931 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/u5408.pngbin3890 -> 1176 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/u55b6.pngbin3411 -> 994 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/u6307.pngbin4103 -> 1393 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/u6708.pngbin3011 -> 920 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/u6709.pngbin3198 -> 1015 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/u6e80.pngbin4419 -> 1467 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/u7121.pngbin3942 -> 1313 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/u7533.pngbin3048 -> 542 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/u7981.pngbin5175 -> 1681 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/u7a7a.pngbin4180 -> 1097 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/uk.pngbin5894 -> 2050 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/umbrella.pngbin4745 -> 2019 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/unamused.pngbin5315 -> 2061 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/underage.pngbin5722 -> 2569 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/unlock.pngbin3551 -> 653 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/up.pngbin3721 -> 1292 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/us.pngbin6285 -> 1324 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/v.pngbin4669 -> 1702 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/vertical_traffic_light.pngbin3422 -> 1856 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/vhs.pngbin3145 -> 1165 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/vibration_mode.pngbin3906 -> 1408 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/video_camera.pngbin5090 -> 906 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/video_game.pngbin4947 -> 2065 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/violin.pngbin4915 -> 2418 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/virgo.pngbin4869 -> 2093 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/volcano.pngbin6167 -> 3024 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/vs.pngbin3424 -> 1560 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/walking.pngbin2468 -> 1132 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/waning_crescent_moon.pngbin5885 -> 1939 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/waning_gibbous_moon.pngbin6443 -> 2036 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/warning.pngbin3173 -> 1360 bytes
-rw-r--r--web/static/images/emoji/wastebasket.pngbin0 -> 2983 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/watch.pngbin5189 -> 1540 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/water_buffalo.pngbin4774 -> 2940 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/watermelon.pngbin5501 -> 2545 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/wave.pngbin5046 -> 2210 bytes
-rw-r--r--web/static/images/emoji/waving_black_flag.pngbin0 -> 2164 bytes
-rw-r--r--web/static/images/emoji/waving_white_flag.pngbin0 -> 2233 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/wavy_dash.pngbin696 -> 404 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/waxing_crescent_moon.pngbin6198 -> 1951 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/waxing_gibbous_moon.pngbin6357 -> 1974 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/wc.pngbin4088 -> 1639 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/weary.pngbin6279 -> 2251 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/wedding.pngbin5847 -> 2594 bytes
-rw-r--r--web/static/images/emoji/weight_lifter.pngbin0 -> 1415 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/whale.pngbin4940 -> 2469 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/whale2.pngbin5944 -> 2399 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/wheelchair.pngbin4224 -> 1377 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/white_check_mark.pngbin3445 -> 984 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/white_circle.pngbin2477 -> 839 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/white_flower.pngbin4391 -> 2428 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/white_large_square.pngbin1411 -> 318 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/white_medium_small_square.pngbin3598 -> 274 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/white_medium_square.pngbin4192 -> 315 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/white_small_square.pngbin3068 -> 225 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/white_square_button.pngbin1725 -> 526 bytes
-rw-r--r--web/static/images/emoji/wind_blowing_face.pngbin0 -> 3192 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/wind_chime.pngbin3487 -> 1581 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/wine_glass.pngbin3151 -> 1707 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/wink.pngbin5253 -> 2184 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/wolf.pngbin4845 -> 3589 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/woman.pngbin6895 -> 1862 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/womans_clothes.pngbin4075 -> 1775 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/womans_hat.pngbin8101 -> 2769 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/womens.pngbin3892 -> 1077 bytes
-rw-r--r--web/static/images/emoji/world_map.pngbin0 -> 2473 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/worried.pngbin5152 -> 2535 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/wrench.pngbin2775 -> 1546 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/x.pngbin2044 -> 448 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/yellow_heart.pngbin4414 -> 1218 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/yen.pngbin4989 -> 1365 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/yum.pngbin5886 -> 2111 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/zap.pngbin2233 -> 706 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/zero.pngbin3590 -> 1169 bytes
-rw-r--r--[-rwxr-xr-x]web/static/images/emoji/zzz.pngbin2027 -> 1214 bytes
-rw-r--r--web/static/js/babel-polyfill-6.1.18.js4412
-rw-r--r--web/static/js/babel-polyfill-6.1.18.min.js2
-rw-r--r--web/templates/channel.html10
-rw-r--r--web/templates/head.html1
2526 files changed, 5809 insertions, 1190 deletions
diff --git a/web/react/.eslintrc b/web/react/.eslintrc
index 935bb638a..baaf7eaa5 100644
--- a/web/react/.eslintrc
+++ b/web/react/.eslintrc
@@ -47,7 +47,7 @@
"no-irregular-whitespace": 2,
"no-unexpected-multiline": 2,
"no-unreachable": 2,
- "no-magic-numbers": [1, { "enforceConst": true, "detectObjects": true } ],
+ "no-magic-numbers": [1, { "ignore": [-1, 0, 1, 2], "enforceConst": true, "detectObjects": true } ],
"valid-typeof": 2,
"block-scoped-var": 2,
diff --git a/web/react/components/admin_console/admin_sidebar.jsx b/web/react/components/admin_console/admin_sidebar.jsx
index 076a07618..cc98c495e 100644
--- a/web/react/components/admin_console/admin_sidebar.jsx
+++ b/web/react/components/admin_console/admin_sidebar.jsx
@@ -5,6 +5,9 @@ import AdminSidebarHeader from './admin_sidebar_header.jsx';
import SelectTeamModal from './select_team_modal.jsx';
import * as Utils from '../../utils/utils.jsx';
+const Tooltip = ReactBootstrap.Tooltip;
+const OverlayTrigger = ReactBootstrap.OverlayTrigger;
+
export default class AdminSidebar extends React.Component {
constructor(props) {
super(props);
@@ -80,6 +83,12 @@ export default class AdminSidebar extends React.Component {
render() {
var count = '*';
var teams = 'Loading';
+ const removeTooltip = (
+ <Tooltip id='remove-team-tooltip'>{'Remove team from sidebar menu'}</Tooltip>
+ );
+ const addTeamTooltip = (
+ <Tooltip id='add-team-tooltip'>{'Add team from sidebar menu'}</Tooltip>
+ );
if (this.props.teams != null) {
count = '' + Object.keys(this.props.teams).length;
@@ -102,14 +111,19 @@ export default class AdminSidebar extends React.Component {
className={'nav__sub-menu-item ' + this.isSelected('team_users', team.id)}
>
{team.name}
+ <OverlayTrigger
+ delayShow={1000}
+ placement='top'
+ overlay={removeTooltip}
+ >
<span
className='menu-icon--right menu__close'
onClick={this.removeTeam.bind(this, team.id)}
style={{cursor: 'pointer'}}
- title='Remove team from sidebar menu'
>
- {'x'}
+ {'×'}
</span>
+ </OverlayTrigger>
</a>
</li>
<li>
@@ -245,15 +259,20 @@ export default class AdminSidebar extends React.Component {
<span className='icon fa fa-gear'></span>
<span>{'TEAMS (' + count + ')'}</span>
<span className='menu-icon--right'>
+ <OverlayTrigger
+ delayShow={1000}
+ placement='top'
+ overlay={addTeamTooltip}
+ >
<a
href='#'
onClick={this.showTeamSelect}
>
<i
className='fa fa-plus'
- title='Add team to sidebar menu'
></i>
</a>
+ </OverlayTrigger>
</span>
</h4>
</li>
diff --git a/web/react/components/admin_console/select_team_modal.jsx b/web/react/components/admin_console/select_team_modal.jsx
index 22189821b..858b6bbfe 100644
--- a/web/react/components/admin_console/select_team_modal.jsx
+++ b/web/react/components/admin_console/select_team_modal.jsx
@@ -57,7 +57,7 @@ export default class SelectTeamModal extends React.Component {
<select
ref='team'
size='10'
- style={{width: '100%'}}
+ className='form-control'
>
{options}
</select>
diff --git a/web/react/components/center_panel.jsx b/web/react/components/center_panel.jsx
index 3c6a36ad4..848e8952e 100644
--- a/web/react/components/center_panel.jsx
+++ b/web/react/components/center_panel.jsx
@@ -13,6 +13,8 @@ import PreferenceStore from '../stores/preference_store.jsx';
import ChannelStore from '../stores/channel_store.jsx';
import UserStore from '../stores/user_store.jsx';
+import * as Utils from '../utils/utils.jsx';
+
import Constants from '../utils/constants.jsx';
const TutorialSteps = Constants.TutorialSteps;
const Preferences = Constants.Preferences;
@@ -46,6 +48,8 @@ export default class CenterPanel extends React.Component {
this.setState({showPostFocus: ChannelStore.getPostMode() === ChannelStore.POST_MODE_FOCUS});
}
render() {
+ const channel = ChannelStore.getCurrent();
+ var handleClick = null;
let postsContainer;
let createPost;
if (this.state.showTutorialScreens) {
@@ -53,7 +57,24 @@ export default class CenterPanel extends React.Component {
createPost = null;
} else if (this.state.showPostFocus) {
postsContainer = <PostFocusView />;
- createPost = null;
+
+ handleClick = function clickHandler(e) {
+ e.preventDefault();
+ Utils.switchChannel(channel);
+ };
+
+ createPost = (
+ <div
+ id='archive-link-home'
+ >
+ <a
+ href=''
+ onClick={handleClick}
+ >
+ {'You are viewing the Archives. Click here to jump to recent messages.'}
+ </a>
+ </div>
+ );
} else {
postsContainer = <PostsViewContainer />;
createPost = (
diff --git a/web/react/components/command_list.jsx b/web/react/components/command_list.jsx
deleted file mode 100644
index 7fc0f79cf..000000000
--- a/web/react/components/command_list.jsx
+++ /dev/null
@@ -1,99 +0,0 @@
-// Copyright (c) 2015 Mattermost, Inc. All Rights Reserved.
-// See License.txt for license information.
-
-import * as client from '../utils/client.jsx';
-
-export default class CommandList extends React.Component {
- constructor(props) {
- super(props);
-
- this.handleClick = this.handleClick.bind(this);
- this.addFirstCommand = this.addFirstCommand.bind(this);
- this.isEmpty = this.isEmpty.bind(this);
- this.getSuggestedCommands = this.getSuggestedCommands.bind(this);
-
- this.state = {
- suggestions: [],
- cmd: ''
- };
- }
-
- handleClick(i) {
- this.props.addCommand(this.state.suggestions[i].suggestion);
- this.setState({suggestions: [], cmd: ''});
- }
-
- addFirstCommand() {
- if (this.state.suggestions.length === 0) {
- return;
- }
- this.handleClick(0);
- }
-
- isEmpty() {
- return this.state.suggestions.length === 0;
- }
-
- getSuggestedCommands(cmd) {
- if (!cmd || cmd.charAt(0) !== '/') {
- this.setState({suggestions: [], cmd: ''});
- return;
- }
-
- client.executeCommand(
- this.props.channelId,
- cmd,
- true,
- function success(data) {
- if (data.suggestions.length === 1 && data.suggestions[0].suggestion === cmd) {
- data.suggestions = [];
- }
- this.setState({suggestions: data.suggestions, cmd: cmd});
- }.bind(this),
- function fail() {
- }
- );
- }
-
- render() {
- if (this.state.suggestions.length === 0) {
- return (<div/>);
- }
-
- var suggestions = [];
-
- for (var i = 0; i < this.state.suggestions.length; i++) {
- if (this.state.suggestions[i].suggestion !== this.state.cmd) {
- suggestions.push(
- <div
- key={i}
- className='command-name'
- onClick={this.handleClick.bind(this, i)}
- >
- <div className='command__title'><strong>{this.state.suggestions[i].suggestion}</strong></div>
- <div className='command__desc'>{this.state.suggestions[i].description}</div>
- </div>
- );
- }
- }
-
- return (
- <div
- ref='mentionlist'
- className='command-box'
- style={{height: (suggestions.length * 56) + 2}}
- >
- {suggestions}
- </div>
- );
- }
-}
-
-CommandList.defaultProps = {
- channelId: null
-};
-
-CommandList.propTypes = {
- addCommand: React.PropTypes.func,
- channelId: React.PropTypes.string
-};
diff --git a/web/react/components/create_comment.jsx b/web/react/components/create_comment.jsx
index 8ceda1cf7..fac40e895 100644
--- a/web/react/components/create_comment.jsx
+++ b/web/react/components/create_comment.jsx
@@ -34,7 +34,6 @@ export default class CreateComment extends React.Component {
this.handleUploadError = this.handleUploadError.bind(this);
this.handleTextDrop = this.handleTextDrop.bind(this);
this.removePreview = this.removePreview.bind(this);
- this.handleSubmit = this.handleSubmit.bind(this);
this.getFileCount = this.getFileCount.bind(this);
this.handleResize = this.handleResize.bind(this);
this.onPreferenceChange = this.onPreferenceChange.bind(this);
@@ -335,6 +334,7 @@ export default class CreateComment extends React.Component {
messageText={this.state.messageText}
createMessage='Add a comment...'
initialText=''
+ supportsCommands={false}
id='reply_textbox'
ref='textbox'
/>
diff --git a/web/react/components/edit_post_modal.jsx b/web/react/components/edit_post_modal.jsx
index eb58fe721..be57fe7c3 100644
--- a/web/react/components/edit_post_modal.jsx
+++ b/web/react/components/edit_post_modal.jsx
@@ -160,6 +160,7 @@ export default class EditPostModal extends React.Component {
onKeyDown={this.handleKeyDown}
messageText={this.state.editText}
createMessage='Edit the post...'
+ supportsCommands={false}
id='edit_textbox'
ref='editbox'
/>
diff --git a/web/react/components/mention.jsx b/web/react/components/mention.jsx
deleted file mode 100644
index 44f6210e4..000000000
--- a/web/react/components/mention.jsx
+++ /dev/null
@@ -1,61 +0,0 @@
-// Copyright (c) 2015 Mattermost, Inc. All Rights Reserved.
-// See License.txt for license information.
-import UserStore from '../stores/user_store.jsx';
-import * as Utils from '../utils/utils.jsx';
-
-export default class Mention extends React.Component {
- constructor(props) {
- super(props);
-
- this.handleClick = this.handleClick.bind(this);
-
- this.state = null;
- }
- handleClick() {
- this.props.handleClick(this.props.username);
- }
- render() {
- var icon;
- var timestamp = UserStore.getCurrentUser().update_at;
- if (this.props.id === 'allmention' || this.props.id === 'channelmention') {
- icon = <span><i className='mention-img fa fa-users fa-2x'></i></span>;
- } else if (this.props.id == null) {
- icon = <span><i className='mention-img fa fa-users fa-2x'></i></span>;
- } else {
- icon = (
- <span>
- <img
- className='mention-img'
- src={'/api/v1/users/' + this.props.id + '/image?time=' + timestamp + '&' + Utils.getSessionIndex()}
- />
- </span>
- );
- }
- return (
- <div
- className={'mentions-name ' + this.props.isFocused}
- id={this.props.id + '_mentions'}
- onClick={this.handleClick}
- onMouseEnter={this.props.handleMouseEnter}
- >
- <div className='pull-left'>{icon}</div>
- <div className='pull-left mention-align'><span>@{this.props.username}</span><span className='mention-fullname'>{this.props.secondary_text}</span></div>
- </div>
- );
- }
-}
-
-Mention.defaultProps = {
- username: '',
- id: '',
- isFocused: '',
- secondary_text: ''
-};
-Mention.propTypes = {
- handleClick: React.PropTypes.func.isRequired,
- handleMouseEnter: React.PropTypes.func.isRequired,
- username: React.PropTypes.string,
- id: React.PropTypes.string,
- isFocused: React.PropTypes.string,
- secondary_text: React.PropTypes.string
-};
diff --git a/web/react/components/mention_list.jsx b/web/react/components/mention_list.jsx
deleted file mode 100644
index 297d5c719..000000000
--- a/web/react/components/mention_list.jsx
+++ /dev/null
@@ -1,276 +0,0 @@
-// Copyright (c) 2015 Mattermost, Inc. All Rights Reserved.
-// See License.txt for license information.
-
-import UserStore from '../stores/user_store.jsx';
-import SearchStore from '../stores/search_store.jsx';
-import AppDispatcher from '../dispatcher/app_dispatcher.jsx';
-import Mention from './mention.jsx';
-
-import Constants from '../utils/constants.jsx';
-import * as Utils from '../utils/utils.jsx';
-var ActionTypes = Constants.ActionTypes;
-
-var MAX_HEIGHT_LIST = 292;
-var MAX_ITEMS_IN_LIST = 25;
-var ITEM_HEIGHT = 36;
-
-export default class MentionList extends React.Component {
- constructor(props) {
- super(props);
-
- this.onListenerChange = this.onListenerChange.bind(this);
- this.handleClick = this.handleClick.bind(this);
- this.handleMouseEnter = this.handleMouseEnter.bind(this);
- this.getSelection = this.getSelection.bind(this);
- this.addCurrentMention = this.addCurrentMention.bind(this);
- this.addFirstMention = this.addFirstMention.bind(this);
- this.isEmpty = this.isEmpty.bind(this);
- this.scrollToMention = this.scrollToMention.bind(this);
- this.onScroll = this.onScroll.bind(this);
- this.onMentionListKey = this.onMentionListKey.bind(this);
- this.onClick = this.onClick.bind(this);
-
- this.state = {excludeUsers: [], mentionText: '-1', selectedMention: 0, selectedUsername: ''};
- }
- onScroll() {
- if ($('.mentions--top').length) {
- $('#reply_mention_tab .mentions--top').css({bottom: $(window).height() - $('.post-right__scroll #reply_textbox').offset().top});
- }
- }
- onMentionListKey(e) {
- if (!this.isEmpty() && this.state.mentionText !== '-1' && (e.which === 13 || e.which === 9)) {
- e.stopPropagation();
- e.preventDefault();
- this.addCurrentMention();
- } else if (!this.isEmpty() && this.state.mentionText !== '-1' && (e.which === 38 || e.which === 40)) {
- e.stopPropagation();
- e.preventDefault();
-
- if (e.which === 38) {
- if (this.getSelection(this.state.selectedMention - 1)) {
- this.setState({selectedMention: this.state.selectedMention - 1, selectedUsername: this.refs['mention' + (this.state.selectedMention - 1)].props.username});
- }
- } else if (e.which === 40) {
- if (this.getSelection(this.state.selectedMention + 1)) {
- this.setState({selectedMention: this.state.selectedMention + 1, selectedUsername: this.refs['mention' + (this.state.selectedMention + 1)].props.username});
- }
- }
-
- this.scrollToMention(e.which);
- }
- }
- onClick(e) {
- if (!($('#' + this.props.id).is(e.target) || $('#' + this.props.id).has(e.target).length ||
- ('mentionlist' in this.refs && $(ReactDOM.findDOMNode(this.refs.mentionlist)).has(e.target).length))) {
- this.setState({mentionText: '-1'});
- }
- }
- componentDidMount() {
- SearchStore.addMentionDataChangeListener(this.onListenerChange);
-
- $('.post-right__scroll').scroll(this.onScroll);
-
- $('body').on('keydown.mentionlist', '#' + this.props.id, this.onMentionListKey);
- $(document).click(this.onClick);
- }
- componentWillUnmount() {
- SearchStore.removeMentionDataChangeListener(this.onListenerChange);
- $('body').off('keydown.mentionlist', '#' + this.props.id);
- }
-
- /*
- * This component is poorly designed, nessesitating some state modification
- * in the componentDidUpdate function. This is generally discouraged as it
- * is a performance issue and breaks with good react design. This component
- * should be redesigned.
- */
- componentDidUpdate() {
- if (this.state.mentionText !== '-1') {
- if (this.state.selectedUsername !== '' && (!this.getSelection(this.state.selectedMention) || this.state.selectedUsername !== this.refs['mention' + this.state.selectedMention].props.username)) {
- var tempSelectedMention = -1;
- var foundMatch = false;
- while (tempSelectedMention < this.state.selectedMention && this.getSelection(++tempSelectedMention)) {
- if (this.state.selectedUsername === this.refs['mention' + tempSelectedMention].props.username) {
- this.setState({selectedMention: tempSelectedMention}); //eslint-disable-line react/no-did-update-set-state
- foundMatch = true;
- break;
- }
- }
- if (this.getSelection(0) && !foundMatch) {
- this.setState({selectedMention: 0, selectedUsername: this.refs.mention0.props.username}); //eslint-disable-line react/no-did-update-set-state
- }
- }
- } else if (this.state.selectedMention !== 0) {
- this.setState({selectedMention: 0, selectedUsername: ''}); //eslint-disable-line react/no-did-update-set-state
- }
- }
- onListenerChange(id, mentionText) {
- if (id !== this.props.id) {
- return;
- }
-
- var newState = this.state;
- if (mentionText != null) {
- newState.mentionText = mentionText;
- }
-
- this.setState(newState);
- }
- handleClick(name) {
- AppDispatcher.handleViewAction({
- type: ActionTypes.RECIEVED_ADD_MENTION,
- id: this.props.id,
- username: name
- });
-
- this.setState({mentionText: '-1'});
- }
- handleMouseEnter(listId) {
- this.setState({selectedMention: listId, selectedUsername: this.refs['mention' + listId].props.username});
- }
- getSelection(listId) {
- if (!this.refs['mention' + listId]) {
- return false;
- }
- return true;
- }
- addCurrentMention() {
- if (this.getSelection(this.state.selectedMention)) {
- this.refs['mention' + this.state.selectedMention].handleClick();
- } else {
- this.addFirstMention();
- }
- }
- addFirstMention() {
- if (!this.refs.mention0) {
- return;
- }
- this.refs.mention0.handleClick();
- }
- isEmpty() {
- return (!this.refs.mention0);
- }
- scrollToMention(keyPressed) {
- var direction;
- if (keyPressed === 38) {
- direction = 'up';
- } else {
- direction = 'down';
- }
- var scrollAmount = 0;
-
- if (direction === 'up') {
- scrollAmount = '-=' + ($('#' + this.refs['mention' + this.state.selectedMention].props.id + '_mentions').innerHeight() - 5);
- } else if (direction === 'down') {
- scrollAmount = '+=' + ($('#' + this.refs['mention' + this.state.selectedMention].props.id + '_mentions').innerHeight() - 5);
- }
-
- $('#mentionsbox').animate({
- scrollTop: scrollAmount
- }, 75);
- }
- render() {
- var mentionText = this.state.mentionText;
- if (mentionText === '-1') {
- return null;
- }
-
- var profiles = UserStore.getActiveOnlyProfiles();
- var users = [];
- for (let id in profiles) {
- if (profiles[id]) {
- users.push(profiles[id]);
- }
- }
-
- // var all = {};
- // all.username = 'all';
- // all.nickname = '';
- // all.secondary_text = 'Notifies everyone in the team';
- // all.id = 'allmention';
- // users.push(all);
-
- var channel = {};
- channel.username = 'channel';
- channel.nickname = '';
- channel.secondary_text = 'Notifies everyone in the channel';
- channel.id = 'channelmention';
- users.push(channel);
-
- users.sort(function sortByUsername(a, b) {
- if (a.username < b.username) {
- return -1;
- }
- if (a.username > b.username) {
- return 1;
- }
- return 0;
- });
- var mentions = [];
- var index = 0;
-
- for (var i = 0; i < users.length && index < MAX_ITEMS_IN_LIST; i++) {
- if ((users[i].first_name && users[i].first_name.lastIndexOf(mentionText, 0) === 0) ||
- (users[i].last_name && users[i].last_name.lastIndexOf(mentionText, 0) === 0) ||
- users[i].username.lastIndexOf(mentionText, 0) === 0) {
- let isFocused = '';
- if (this.state.selectedMention === index) {
- isFocused = 'mentions-focus';
- }
-
- if (!users[i].secondary_text) {
- users[i].secondary_text = Utils.getFullName(users[i]);
- }
-
- mentions[index] = (
- <Mention
- key={'mention_key_' + index}
- ref={'mention' + index}
- username={users[i].username}
- secondary_text={users[i].secondary_text}
- id={users[i].id}
- listId={index}
- isFocused={isFocused}
- handleMouseEnter={this.handleMouseEnter.bind(this, index)}
- handleClick={this.handleClick}
- />
- );
- index++;
- }
- }
-
- var numMentions = mentions.length;
-
- if (numMentions < 1) {
- return null;
- }
-
- var $mentionTab = $('#' + this.props.id);
- var maxHeight = Math.min(MAX_HEIGHT_LIST, $mentionTab.offset().top - 10);
- var style = {
- height: Math.min(maxHeight, (numMentions * ITEM_HEIGHT) + 4),
- width: $mentionTab.parent().width(),
- bottom: $(window).height() - $mentionTab.offset().top,
- left: $mentionTab.offset().left
- };
-
- return (
- <div
- className='mentions--top'
- style={style}
- >
- <div
- ref='mentionlist'
- className='mentions-box'
- id='mentionsbox'
- >
- {mentions}
- </div>
- </div>
- );
- }
-}
-
-MentionList.propTypes = {
- id: React.PropTypes.string
-};
diff --git a/web/react/components/post.jsx b/web/react/components/post.jsx
index 66d8c507a..b32656bfc 100644
--- a/web/react/components/post.jsx
+++ b/web/react/components/post.jsx
@@ -95,6 +95,10 @@ export default class Post extends React.Component {
return true;
}
+ if (nextProps.shouldHighlight !== this.props.shouldHighlight) {
+ return true;
+ }
+
return false;
}
getCommentCount(props) {
diff --git a/web/react/components/post_body.jsx b/web/react/components/post_body.jsx
index de8195f91..27f7ad2de 100644
--- a/web/react/components/post_body.jsx
+++ b/web/react/components/post_body.jsx
@@ -4,6 +4,7 @@
import FileAttachmentList from './file_attachment_list.jsx';
import UserStore from '../stores/user_store.jsx';
import * as Utils from '../utils/utils.jsx';
+import * as Emoji from '../utils/emoticons.jsx';
import Constants from '../utils/constants.jsx';
import * as TextFormatting from '../utils/text_formatting.jsx';
import twemoji from 'twemoji';
@@ -52,7 +53,11 @@ export default class PostBody extends React.Component {
}
parseEmojis() {
- twemoji.parse(ReactDOM.findDOMNode(this), {size: Constants.EMOJI_SIZE});
+ twemoji.parse(ReactDOM.findDOMNode(this), {
+ className: 'emoji twemoji',
+ base: '',
+ folder: Emoji.getImagePathForEmoticon()
+ });
}
componentWillMount() {
diff --git a/web/react/components/post_focus_view.jsx b/web/react/components/post_focus_view.jsx
index 5c6ad6c28..adcd78839 100644
--- a/web/react/components/post_focus_view.jsx
+++ b/web/react/components/post_focus_view.jsx
@@ -73,7 +73,7 @@ export default class PostFocusView extends React.Component {
getIntroMessage() {
return (
<div className='channel-intro'>
- <h4 className='channel-intro__title'>{'Beginning of Channel'}</h4>
+ <h4 className='channel-intro__title'>{'Beginning of Channel Archives'}</h4>
</div>
);
}
diff --git a/web/react/components/rhs_root_post.jsx b/web/react/components/rhs_root_post.jsx
index 3d3d9e13f..0dd969ad0 100644
--- a/web/react/components/rhs_root_post.jsx
+++ b/web/react/components/rhs_root_post.jsx
@@ -6,9 +6,9 @@ import UserProfile from './user_profile.jsx';
import UserStore from '../stores/user_store.jsx';
import * as TextFormatting from '../utils/text_formatting.jsx';
import * as utils from '../utils/utils.jsx';
+import * as Emoji from '../utils/emoticons.jsx';
import FileAttachmentList from './file_attachment_list.jsx';
import twemoji from 'twemoji';
-import Constants from '../utils/constants.jsx';
import PostBodyAdditionalContent from './post_body_additional_content.jsx';
import * as EventHelpers from '../dispatcher/event_helpers.jsx';
@@ -21,7 +21,11 @@ export default class RhsRootPost extends React.Component {
this.state = {};
}
parseEmojis() {
- twemoji.parse(ReactDOM.findDOMNode(this), {size: Constants.EMOJI_SIZE});
+ twemoji.parse(ReactDOM.findDOMNode(this), {
+ className: 'emoji twemoji',
+ base: '',
+ folder: Emoji.getImagePathForEmoticon()
+ });
}
componentDidMount() {
this.parseEmojis();
diff --git a/web/react/components/rhs_thread.jsx b/web/react/components/rhs_thread.jsx
index 61f138539..d111094e7 100644
--- a/web/react/components/rhs_thread.jsx
+++ b/web/react/components/rhs_thread.jsx
@@ -101,7 +101,6 @@ export default class RhsThread extends React.Component {
}
if (currentPosts.posts[currentPosts.order[0]].channel_id === currentSelected.posts[currentSelected.order[0]].channel_id) {
- currentSelected.posts = {};
for (var postId in currentPosts.posts) {
if (currentPosts.posts.hasOwnProperty(postId)) {
currentSelected.posts[postId] = currentPosts.posts[postId];
diff --git a/web/react/components/search_autocomplete.jsx b/web/react/components/search_autocomplete.jsx
deleted file mode 100644
index 4c0aa0166..000000000
--- a/web/react/components/search_autocomplete.jsx
+++ /dev/null
@@ -1,341 +0,0 @@
-// Copyright (c) 2015 Mattermost, Inc. All Rights Reserved.
-// See License.txt for license information.
-
-import ChannelStore from '../stores/channel_store.jsx';
-import Constants from '../utils/constants.jsx';
-const KeyCodes = Constants.KeyCodes;
-const Popover = ReactBootstrap.Popover;
-import UserStore from '../stores/user_store.jsx';
-import * as Utils from '../utils/utils.jsx';
-
-const patterns = new Map([
- ['channels', /\b(?:in|channel):\s*(\S*)$/i],
- ['users', /\bfrom:\s*(\S*)$/i]
-]);
-
-export default class SearchAutocomplete extends React.Component {
- constructor(props) {
- super(props);
-
- this.handleClick = this.handleClick.bind(this);
- this.handleDocumentClick = this.handleDocumentClick.bind(this);
- this.handleInputChange = this.handleInputChange.bind(this);
- this.handleKeyDown = this.handleKeyDown.bind(this);
-
- this.completeWord = this.completeWord.bind(this);
- this.getSelection = this.getSelection.bind(this);
- this.scrollToItem = this.scrollToItem.bind(this);
- this.updateSuggestions = this.updateSuggestions.bind(this);
-
- this.renderChannelSuggestion = this.renderChannelSuggestion.bind(this);
- this.renderUserSuggestion = this.renderUserSuggestion.bind(this);
-
- this.state = {
- show: false,
- mode: '',
- filter: '',
- selection: 0,
- suggestions: new Map()
- };
- }
-
- componentDidMount() {
- $(document).on('click', this.handleDocumentClick);
- }
-
- componentDidUpdate(prevProps, prevState) {
- const content = $(ReactDOM.findDOMNode(this.refs.searchPopover)).find('.popover-content');
-
- if (this.state.show && this.state.suggestions.length > 0) {
- if (!prevState.show) {
- content.perfectScrollbar();
- content.css('max-height', $(window).height() - 200);
- }
-
- // keep the keyboard selection visible when scrolling
- this.scrollToItem(this.getSelection());
- }
- }
-
- componentWillUnmount() {
- $(document).off('click', this.handleDocumentClick);
- }
-
- handleClick(value) {
- this.completeWord(value);
- }
-
- handleDocumentClick(e) {
- const container = $(ReactDOM.findDOMNode(this.refs.searchPopover));
-
- if (!(container.is(e.target) || container.has(e.target).length > 0)) {
- this.setState({
- show: false
- });
- }
- }
-
- handleInputChange(textbox, text) {
- const caret = Utils.getCaretPosition(textbox);
- const preText = text.substring(0, caret);
-
- let mode = '';
- let filter = '';
- for (const [modeForPattern, pattern] of patterns) {
- const result = pattern.exec(preText);
-
- if (result) {
- mode = modeForPattern;
- filter = result[1];
- break;
- }
- }
-
- if (mode !== this.state.mode || filter !== this.state.filter) {
- this.updateSuggestions(mode, filter);
- }
-
- this.setState({
- mode,
- filter,
- show: mode || filter
- });
- }
-
- handleKeyDown(e) {
- if (!this.state.show || this.state.suggestions.length === 0) {
- return;
- }
-
- if (e.which === KeyCodes.UP || e.which === KeyCodes.DOWN) {
- e.preventDefault();
-
- let selection = this.state.selection;
-
- if (e.which === KeyCodes.UP) {
- selection -= 1;
- } else {
- selection += 1;
- }
-
- if (selection >= 0 && selection < this.state.suggestions.length) {
- this.setState({
- selection
- });
- }
- } else if (e.which === KeyCodes.ENTER || e.which === KeyCodes.SPACE) {
- e.preventDefault();
-
- this.completeWord(this.getSelection());
- }
- }
-
- completeWord(value) {
- // add a space so that anything else typed doesn't interfere with the search flag
- this.props.completeWord(this.state.filter, value + ' ');
-
- this.setState({
- show: false,
- mode: '',
- filter: '',
- selection: 0
- });
- }
-
- getSelection() {
- if (this.state.suggestions.length > 0) {
- if (this.state.mode === 'channels') {
- return this.state.suggestions[this.state.selection].name;
- } else if (this.state.mode === 'users') {
- return this.state.suggestions[this.state.selection].username;
- }
- }
-
- return '';
- }
-
- scrollToItem(itemName) {
- const content = $(ReactDOM.findDOMNode(this.refs.searchPopover)).find('.popover-content');
- const visibleContentHeight = content[0].clientHeight;
- const actualContentHeight = content[0].scrollHeight;
-
- if (this.state.suggestions.length > 0 && visibleContentHeight < actualContentHeight) {
- const contentTop = content.scrollTop();
- const contentTopPadding = parseInt(content.css('padding-top'), 10);
- const contentBottomPadding = parseInt(content.css('padding-top'), 10);
-
- const item = $(this.refs[itemName]);
- const itemTop = item[0].offsetTop - parseInt(item.css('margin-top'), 10);
- const itemBottom = item[0].offsetTop + item.height() + parseInt(item.css('margin-bottom'), 10);
-
- if (itemTop - contentTopPadding < contentTop) {
- // the item is off the top of the visible space
- content.scrollTop(itemTop - contentTopPadding);
- } else if (itemBottom + contentTopPadding + contentBottomPadding > contentTop + visibleContentHeight) {
- // the item has gone off the bottom of the visible space
- content.scrollTop(itemBottom - visibleContentHeight + contentTopPadding + contentBottomPadding);
- }
- }
- }
-
- updateSuggestions(mode, filter) {
- let suggestions = [];
-
- if (mode === 'channels') {
- let channels = ChannelStore.getAll();
-
- if (filter) {
- channels = channels.filter((channel) => channel.name.startsWith(filter) && channel.type !== 'D');
- } else {
- // don't show direct channels
- channels = channels.filter((channel) => channel.type !== 'D');
- }
-
- channels.sort((a, b) => {
- // put public channels first and then sort alphabebetically
- if (a.type === b.type) {
- return a.name.localeCompare(b.name);
- } else if (a.type === Constants.OPEN_CHANNEL) {
- return -1;
- }
-
- return 1;
- });
-
- suggestions = channels;
- } else if (mode === 'users') {
- let users = UserStore.getActiveOnlyProfileList();
-
- if (filter) {
- users = users.filter((user) => user.username.startsWith(filter));
- }
-
- users.sort((a, b) => a.username.localeCompare(b.username));
-
- suggestions = users;
- }
-
- let selection = this.state.selection;
-
- // keep the same user/channel selected if it's still visible as a suggestion
- if (selection > 0 && this.state.suggestions.length > 0) {
- // we can't just use indexOf to find if the selection is still in the list since they are different javascript objects
- const currentSelectionId = this.state.suggestions[selection].id;
- let found = false;
-
- for (let i = 0; i < suggestions.length; i++) {
- if (suggestions[i].id === currentSelectionId) {
- selection = i;
- found = true;
-
- break;
- }
- }
-
- if (!found) {
- selection = 0;
- }
- } else {
- selection = 0;
- }
-
- this.setState({
- suggestions,
- selection
- });
- }
-
- renderChannelSuggestion(channel) {
- let className = 'search-autocomplete__item';
- if (channel.name === this.getSelection()) {
- className += ' selected';
- }
-
- return (
- <div
- key={channel.name}
- ref={channel.name}
- onClick={this.handleClick.bind(this, channel.name)}
- className={className}
- >
- {channel.name}
- </div>
- );
- }
-
- renderUserSuggestion(user) {
- let className = 'search-autocomplete__item';
- if (user.username === this.getSelection()) {
- className += ' selected';
- }
-
- return (
- <div
- key={user.username}
- ref={user.username}
- onClick={this.handleClick.bind(this, user.username)}
- className={className}
- >
- <img
- className='profile-img rounded'
- src={'/api/v1/users/' + user.id + '/image?time=' + user.update_at}
- />
- {user.username}
- </div>
- );
- }
-
- render() {
- if (!this.state.show || this.state.suggestions.length === 0) {
- return null;
- }
-
- let suggestions = [];
-
- if (this.state.mode === 'channels') {
- const publicChannels = this.state.suggestions.filter((channel) => channel.type === Constants.OPEN_CHANNEL);
- if (publicChannels.length > 0) {
- suggestions.push(
- <div
- key='public-channel-divider'
- className='search-autocomplete__divider'
- >
- <span>{'Public ' + Utils.getChannelTerm(Constants.OPEN_CHANNEL) + 's'}</span>
- </div>
- );
- suggestions = suggestions.concat(publicChannels.map(this.renderChannelSuggestion));
- }
-
- const privateChannels = this.state.suggestions.filter((channel) => channel.type === Constants.PRIVATE_CHANNEL);
- if (privateChannels.length > 0) {
- suggestions.push(
- <div
- key='private-channel-divider'
- className='search-autocomplete__divider'
- >
- <span>{'Private ' + Utils.getChannelTerm(Constants.PRIVATE_CHANNEL) + 's'}</span>
- </div>
- );
- suggestions = suggestions.concat(privateChannels.map(this.renderChannelSuggestion));
- }
- } else if (this.state.mode === 'users') {
- suggestions = this.state.suggestions.map(this.renderUserSuggestion);
- }
-
- return (
- <Popover
- ref='searchPopover'
- onShow={this.componentDidMount}
- id='search-autocomplete__popover'
- className='search-help-popover autocomplete visible'
- placement='bottom'
- >
- {suggestions}
- </Popover>
- );
- }
-}
-
-SearchAutocomplete.propTypes = {
- completeWord: React.PropTypes.func.isRequired
-};
diff --git a/web/react/components/search_bar.jsx b/web/react/components/search_bar.jsx
index 32f0f93bf..77c9e39b9 100644
--- a/web/react/components/search_bar.jsx
+++ b/web/react/components/search_bar.jsx
@@ -5,11 +5,14 @@ import * as client from '../utils/client.jsx';
import * as AsyncClient from '../utils/async_client.jsx';
import SearchStore from '../stores/search_store.jsx';
import AppDispatcher from '../dispatcher/app_dispatcher.jsx';
+import SuggestionBox from './suggestion/suggestion_box.jsx';
+import SearchChannelProvider from './suggestion/search_channel_provider.jsx';
+import SearchSuggestionList from './suggestion/search_suggestion_list.jsx';
+import SearchUserProvider from './suggestion/search_user_provider.jsx';
import * as utils from '../utils/utils.jsx';
import Constants from '../utils/constants.jsx';
var ActionTypes = Constants.ActionTypes;
var Popover = ReactBootstrap.Popover;
-import SearchAutocomplete from './search_autocomplete.jsx';
export default class SearchBar extends React.Component {
constructor() {
@@ -17,17 +20,17 @@ export default class SearchBar extends React.Component {
this.mounted = false;
this.onListenerChange = this.onListenerChange.bind(this);
- this.handleKeyDown = this.handleKeyDown.bind(this);
this.handleUserInput = this.handleUserInput.bind(this);
this.handleUserFocus = this.handleUserFocus.bind(this);
this.handleUserBlur = this.handleUserBlur.bind(this);
this.performSearch = this.performSearch.bind(this);
this.handleSubmit = this.handleSubmit.bind(this);
- this.completeWord = this.completeWord.bind(this);
const state = this.getSearchTermStateFromStores();
state.focused = false;
this.state = state;
+
+ this.suggestionProviders = [new SearchChannelProvider(), new SearchUserProvider()];
}
getSearchTermStateFromStores() {
var term = SearchStore.getSearchTerm() || '';
@@ -77,18 +80,11 @@ export default class SearchBar extends React.Component {
results: null
});
}
- handleKeyDown(e) {
- if (this.refs.autocomplete) {
- this.refs.autocomplete.handleKeyDown(e);
- }
- }
- handleUserInput(e) {
- var term = e.target.value;
+ handleUserInput(text) {
+ var term = text;
SearchStore.storeSearchTerm(term);
SearchStore.emitSearchTermChange(false);
this.setState({searchTerm: term});
-
- this.refs.autocomplete.handleInputChange(e.target, term);
}
handleUserBlur() {
this.setState({focused: false});
@@ -128,23 +124,6 @@ export default class SearchBar extends React.Component {
this.performSearch(this.state.searchTerm.trim());
}
- completeWord(partialWord, word) {
- const textbox = ReactDOM.findDOMNode(this.refs.search);
- let text = textbox.value;
-
- const caret = utils.getCaretPosition(textbox);
- const preText = text.substring(0, caret - partialWord.length);
- const postText = text.substring(caret);
- text = preText + word + postText;
-
- textbox.value = text;
- utils.setCaretPosition(textbox, preText.length + word.length);
-
- SearchStore.storeSearchTerm(text);
- SearchStore.emitSearchTermChange(false);
- this.setState({searchTerm: text});
- }
-
render() {
var isSearching = null;
if (this.state.isSearching) {
@@ -178,22 +157,18 @@ export default class SearchBar extends React.Component {
autoComplete='off'
>
<span className='glyphicon glyphicon-search sidebar__search-icon' />
- <input
- type='text'
+ <SuggestionBox
ref='search'
className='form-control search-bar'
placeholder='Search'
value={this.state.searchTerm}
onFocus={this.handleUserFocus}
onBlur={this.handleUserBlur}
- onChange={this.handleUserInput}
- onKeyDown={this.handleKeyDown}
+ onUserInput={this.handleUserInput}
+ listComponent={SearchSuggestionList}
+ providers={this.suggestionProviders}
/>
{isSearching}
- <SearchAutocomplete
- ref='autocomplete'
- completeWord={this.completeWord}
- />
<Popover
id='searchbar-help-popup'
placement='bottom'
diff --git a/web/react/components/search_results_item.jsx b/web/react/components/search_results_item.jsx
index da422fe1b..6e17cfe32 100644
--- a/web/react/components/search_results_item.jsx
+++ b/web/react/components/search_results_item.jsx
@@ -41,7 +41,6 @@ export default class SearchResultsItem extends React.Component {
return (
<div
className='search-item-container post'
- onClick={this.handleClick}
>
<div className='search-channel__name'>{channelName}</div>
<div className='post__content'>
@@ -60,6 +59,15 @@ export default class SearchResultsItem extends React.Component {
{utils.displayDate(this.props.post.create_at) + ' ' + utils.displayTime(this.props.post.create_at)}
</time>
</li>
+ <li>
+ <a
+ href='#'
+ className='search-item__jump'
+ onClick={this.handleClick}
+ >
+ {'[Jump]'}
+ </a>
+ </li>
</ul>
<div className='search-item-snippet'>
<span
diff --git a/web/react/components/suggestion/at_mention_provider.jsx b/web/react/components/suggestion/at_mention_provider.jsx
new file mode 100644
index 000000000..8c2893448
--- /dev/null
+++ b/web/react/components/suggestion/at_mention_provider.jsx
@@ -0,0 +1,100 @@
+// Copyright (c) 2015 Mattermost, Inc. All Rights Reserved.
+// See License.txt for license information.
+
+import SuggestionStore from '../../stores/suggestion_store.jsx';
+import UserStore from '../../stores/user_store.jsx';
+import * as Utils from '../../utils/utils.jsx';
+
+class AtMentionSuggestion extends React.Component {
+ render() {
+ const {item, isSelection, onClick} = this.props;
+
+ let username;
+ let description;
+ let icon;
+ if (item.username === 'all') {
+ username = 'all';
+ description = 'Notifies everyone in the team';
+ icon = <i className='mention-img fa fa-users fa-2x' />;
+ } else if (item.username === 'channel') {
+ username = 'channel';
+ description = 'Notifies everyone in the channel';
+ icon = <i className='mention-img fa fa-users fa-2x' />;
+ } else {
+ username = item.username;
+ description = Utils.getFullName(item);
+ icon = (
+ <img
+ className='mention-img'
+ src={'/api/v1/users/' + item.id + '/image?time=' + item.update_at + '&' + Utils.getSessionIndex()}
+ />
+ );
+ }
+
+ let className = 'mentions-name';
+ if (isSelection) {
+ className += ' suggestion--selected';
+ }
+
+ return (
+ <div
+ className={className}
+ onClick={onClick}
+ >
+ <div className='pull-left'>
+ {icon}
+ </div>
+ <div className='pull-left mention-align'>
+ <span>
+ {'@' + username}
+ </span>
+ <span className='mention-fullname'>
+ {description}
+ </span>
+ </div>
+ </div>
+ );
+ }
+}
+
+AtMentionSuggestion.propTypes = {
+ item: React.PropTypes.object.isRequired,
+ isSelection: React.PropTypes.bool,
+ onClick: React.PropTypes.func
+};
+
+export default class AtMentionProvider {
+ handlePretextChanged(suggestionId, pretext) {
+ const captured = (/@([a-z0-9\-\._]*)$/i).exec(pretext);
+ if (captured) {
+ const usernamePrefix = captured[1];
+
+ const users = UserStore.getProfiles();
+ let filtered = [];
+
+ for (const id of Object.keys(users)) {
+ const user = users[id];
+
+ if (user.username.startsWith(usernamePrefix)) {
+ filtered.push(user);
+ }
+ }
+
+ // add dummy users to represent the @all and @channel special mentions
+ if ('all'.startsWith(usernamePrefix)) {
+ filtered.push({username: 'all'});
+ }
+
+ if ('channel'.startsWith(usernamePrefix)) {
+ filtered.push({username: 'channel'});
+ }
+
+ filtered = filtered.sort((a, b) => a.username.localeCompare(b.username));
+
+ const mentions = filtered.map((user) => '@' + user.username);
+
+ SuggestionStore.setMatchedPretext(suggestionId, captured[0]);
+ SuggestionStore.addSuggestions(suggestionId, mentions, filtered, AtMentionSuggestion);
+ }
+ }
+}
diff --git a/web/react/components/suggestion/command_provider.jsx b/web/react/components/suggestion/command_provider.jsx
new file mode 100644
index 000000000..a2a446de2
--- /dev/null
+++ b/web/react/components/suggestion/command_provider.jsx
@@ -0,0 +1,47 @@
+// Copyright (c) 2015 Mattermost, Inc. All Rights Reserved.
+// See License.txt for license information.
+
+import * as AsyncClient from '../../utils/async_client.jsx';
+import SuggestionStore from '../../stores/suggestion_store.jsx';
+
+class CommandSuggestion extends React.Component {
+ render() {
+ const {item, isSelection, onClick} = this.props;
+
+ let className = 'command-name';
+ if (isSelection) {
+ className += ' suggestion--selected';
+ }
+
+ return (
+ <div
+ className={className}
+ onClick={onClick}
+ >
+ <div className='command__title'>
+ <string>{item.suggestion}</string>
+ </div>
+ <div className='command__desc'>
+ {item.description}
+ </div>
+ </div>
+ );
+ }
+}
+
+CommandSuggestion.propTypes = {
+ item: React.PropTypes.object.isRequired,
+ isSelection: React.PropTypes.bool,
+ onClick: React.PropTypes.func
+};
+
+export default class CommandProvider {
+ handlePretextChanged(suggestionId, pretext) {
+ if (pretext.startsWith('/')) {
+ SuggestionStore.setMatchedPretext(suggestionId, pretext);
+ SuggestionStore.setCompleteOnSpace(suggestionId, false);
+
+ AsyncClient.getSuggestedCommands(pretext, suggestionId, CommandSuggestion);
+ }
+ }
+}
diff --git a/web/react/components/suggestion/emoticon_provider.jsx b/web/react/components/suggestion/emoticon_provider.jsx
new file mode 100644
index 000000000..7dcb86442
--- /dev/null
+++ b/web/react/components/suggestion/emoticon_provider.jsx
@@ -0,0 +1,74 @@
+// Copyright (c) 2015 Mattermost, Inc. All Rights Reserved.
+// See License.txt for license information.
+
+import SuggestionStore from '../../stores/suggestion_store.jsx';
+import * as Emoticons from '../../utils/emoticons.jsx';
+
+const MAX_EMOTICON_SUGGESTIONS = 40;
+
+class EmoticonSuggestion extends React.Component {
+ render() {
+ const text = this.props.term;
+ const name = this.props.item;
+
+ let className = 'emoticon-suggestion';
+ if (this.props.isSelection) {
+ className += ' suggestion--selected';
+ }
+
+ return (
+ <div
+ className={className}
+ onClick={this.props.onClick}
+ >
+ <div className='pull-left'>
+ <img
+ alt={text}
+ className='emoticon-suggestion__image'
+ src={Emoticons.getImagePathForEmoticon(name)}
+ title={text}
+ />
+ </div>
+ <div className='pull-left'>
+ {text}
+ </div>
+ </div>
+ );
+ }
+}
+
+EmoticonSuggestion.propTypes = {
+ item: React.PropTypes.string.isRequired,
+ term: React.PropTypes.string.isRequired,
+ isSelection: React.PropTypes.bool,
+ onClick: React.PropTypes.func
+};
+
+export default class EmoticonProvider {
+ handlePretextChanged(suggestionId, pretext) {
+ const captured = (/(?:^|\s)(:([a-zA-Z0-9_+\-]*))$/g).exec(pretext);
+ if (captured) {
+ const text = captured[1];
+ const partialName = captured[2];
+
+ const terms = [];
+ const names = [];
+
+ for (const emoticon of Emoticons.emoticonMap.keys()) {
+ if (emoticon.indexOf(partialName) !== -1) {
+ terms.push(':' + emoticon + ':');
+ names.push(emoticon);
+
+ if (terms.length >= MAX_EMOTICON_SUGGESTIONS) {
+ break;
+ }
+ }
+ }
+
+ if (terms.length > 0) {
+ SuggestionStore.setMatchedPretext(suggestionId, text);
+ SuggestionStore.addSuggestions(suggestionId, terms, names, EmoticonSuggestion);
+ }
+ }
+ }
+}
diff --git a/web/react/components/suggestion/search_channel_provider.jsx b/web/react/components/suggestion/search_channel_provider.jsx
new file mode 100644
index 000000000..7547a9341
--- /dev/null
+++ b/web/react/components/suggestion/search_channel_provider.jsx
@@ -0,0 +1,69 @@
+// Copyright (c) 2015 Mattermost, Inc. All Rights Reserved.
+// See License.txt for license information.
+
+import ChannelStore from '../../stores/channel_store.jsx';
+import Constants from '../../utils/constants.jsx';
+import SuggestionStore from '../../stores/suggestion_store.jsx';
+
+class SearchChannelSuggestion extends React.Component {
+ render() {
+ const {item, isSelection, onClick} = this.props;
+
+ let className = 'search-autocomplete__item';
+ if (isSelection) {
+ className += ' selected';
+ }
+
+ return (
+ <div
+ onClick={onClick}
+ className={className}
+ >
+ {item.name}
+ </div>
+ );
+ }
+}
+
+SearchChannelSuggestion.propTypes = {
+ item: React.PropTypes.object.isRequired,
+ isSelection: React.PropTypes.bool,
+ onClick: React.PropTypes.func
+};
+
+export default class SearchChannelProvider {
+ handlePretextChanged(suggestionId, pretext) {
+ const captured = (/\b(?:in|channel):\s*(\S*)$/i).exec(pretext);
+ if (captured) {
+ const channelPrefix = captured[1];
+
+ const channels = ChannelStore.getAll();
+ const publicChannels = [];
+ const privateChannels = [];
+
+ for (const id of Object.keys(channels)) {
+ const channel = channels[id];
+
+ // don't show direct channels
+ if (channel.type !== Constants.DM_CHANNEL && channel.name.startsWith(channelPrefix)) {
+ if (channel.type === Constants.OPEN_CHANNEL) {
+ publicChannels.push(channel);
+ } else {
+ privateChannels.push(channel);
+ }
+ }
+ }
+
+ publicChannels.sort((a, b) => a.name.localeCompare(b.name));
+ const publicChannelNames = publicChannels.map((channel) => channel.name);
+
+ privateChannels.sort((a, b) => a.name.localeCompare(b.name));
+ const privateChannelNames = privateChannels.map((channel) => channel.name);
+
+ SuggestionStore.setMatchedPretext(suggestionId, channelPrefix);
+
+ SuggestionStore.addSuggestions(suggestionId, publicChannelNames, publicChannels, SearchChannelSuggestion);
+ SuggestionStore.addSuggestions(suggestionId, privateChannelNames, privateChannels, SearchChannelSuggestion);
+ }
+ }
+}
diff --git a/web/react/components/suggestion/search_suggestion_list.jsx b/web/react/components/suggestion/search_suggestion_list.jsx
new file mode 100644
index 000000000..542d28ddd
--- /dev/null
+++ b/web/react/components/suggestion/search_suggestion_list.jsx
@@ -0,0 +1,86 @@
+// Copyright (c) 2015 Mattermost, Inc. All Rights Reserved.
+// See License.txt for license information.
+
+import Constants from '../../utils/constants.jsx';
+import SuggestionList from './suggestion_list.jsx';
+import * as Utils from '../../utils/utils.jsx';
+
+export default class SearchSuggestionList extends SuggestionList {
+ componentDidUpdate(prevProps, prevState) {
+ if (this.state.items.length > 0 && prevState.items.length === 0) {
+ this.getContent().perfectScrollbar();
+ }
+ }
+
+ getContent() {
+ return $(ReactDOM.findDOMNode(this.refs.popover)).find('.popover-content');
+ }
+
+ renderChannelDivider(type) {
+ let text;
+ if (type === Constants.OPEN_CHANNEL) {
+ text = 'Public ' + Utils.getChannelTerm(type) + 's';
+ } else {
+ text = 'Private ' + Utils.getChannelTerm(type) + 's';
+ }
+
+ return (
+ <div
+ key={type + '-divider'}
+ className='search-autocomplete__divider'
+ >
+ <span>{text}</span>
+ </div>
+ );
+ }
+
+ render() {
+ if (this.state.items.length === 0 || !this.props.show) {
+ return null;
+ }
+
+ const items = [];
+ for (let i = 0; i < this.state.items.length; i++) {
+ const item = this.state.items[i];
+ const term = this.state.terms[i];
+ const isSelection = term === this.state.selection;
+
+ // ReactComponent names need to be upper case when used in JSX
+ const Component = this.state.components[i];
+
+ // temporary hack to add dividers between public and private channels in the search suggestion list
+ if (i === 0 || item.type !== this.state.items[i - 1].type) {
+ if (item.type === Constants.OPEN_CHANNEL) {
+ items.push(this.renderChannelDivider(Constants.OPEN_CHANNEL));
+ } else if (item.type === Constants.PRIVATE_CHANNEL) {
+ items.push(this.renderChannelDivider(Constants.PRIVATE_CHANNEL));
+ }
+ }
+
+ items.push(
+ <Component
+ key={term}
+ ref={term}
+ item={item}
+ isSelection={isSelection}
+ onClick={this.handleItemClick.bind(this, term)}
+ />
+ );
+ }
+
+ return (
+ <ReactBootstrap.Popover
+ ref='popover'
+ id='search-autocomplete__popover'
+ className='search-help-popover autocomplete visible'
+ placement='bottom'
+ >
+ {items}
+ </ReactBootstrap.Popover>
+ );
+ }
+}
+
+SearchSuggestionList.propTypes = {
+ ...SuggestionList.propTypes
+};
diff --git a/web/react/components/suggestion/search_user_provider.jsx b/web/react/components/suggestion/search_user_provider.jsx
new file mode 100644
index 000000000..cf2953937
--- /dev/null
+++ b/web/react/components/suggestion/search_user_provider.jsx
@@ -0,0 +1,62 @@
+// Copyright (c) 2015 Mattermost, Inc. All Rights Reserved.
+// See License.txt for license information.
+
+import SuggestionStore from '../../stores/suggestion_store.jsx';
+import UserStore from '../../stores/user_store.jsx';
+
+class SearchUserSuggestion extends React.Component {
+ render() {
+ const {item, isSelection, onClick} = this.props;
+
+ let className = 'search-autocomplete__item';
+ if (isSelection) {
+ className += ' selected';
+ }
+
+ return (
+ <div
+ className={className}
+ onClick={onClick}
+ >
+ <img
+ className='profile-img rounded'
+ src={'/api/v1/users/' + item.id + '/image?time=' + item.update_at}
+ />
+ {item.username}
+ </div>
+ );
+ }
+}
+
+SearchUserSuggestion.propTypes = {
+ item: React.PropTypes.object.isRequired,
+ isSelection: React.PropTypes.bool,
+ onClick: React.PropTypes.func
+};
+
+export default class SearchUserProvider {
+ handlePretextChanged(suggestionId, pretext) {
+ const captured = (/\bfrom:\s*(\S*)$/i).exec(pretext);
+ if (captured) {
+ const usernamePrefix = captured[1];
+
+ const users = UserStore.getProfiles();
+ let filtered = [];
+
+ for (const id of Object.keys(users)) {
+ const user = users[id];
+
+ if (user.username.startsWith(usernamePrefix)) {
+ filtered.push(user);
+ }
+ }
+
+ filtered = filtered.sort((a, b) => a.username.localeCompare(b.username));
+
+ const usernames = filtered.map((user) => user.username);
+
+ SuggestionStore.setMatchedPretext(suggestionId, usernamePrefix);
+ SuggestionStore.addSuggestions(suggestionId, usernames, filtered, SearchUserSuggestion);
+ }
+ }
+}
diff --git a/web/react/components/suggestion/suggestion_box.jsx b/web/react/components/suggestion/suggestion_box.jsx
new file mode 100644
index 000000000..4ca461e82
--- /dev/null
+++ b/web/react/components/suggestion/suggestion_box.jsx
@@ -0,0 +1,189 @@
+// Copyright (c) 2015 Mattermost, Inc. All Rights Reserved.
+// See License.txt for license information.
+
+import Constants from '../../utils/constants.jsx';
+import * as EventHelpers from '../../dispatcher/event_helpers.jsx';
+import SuggestionStore from '../../stores/suggestion_store.jsx';
+import * as Utils from '../../utils/utils.jsx';
+
+const KeyCodes = Constants.KeyCodes;
+
+export default class SuggestionBox extends React.Component {
+ constructor(props) {
+ super(props);
+
+ this.handleDocumentClick = this.handleDocumentClick.bind(this);
+ this.handleFocus = this.handleFocus.bind(this);
+
+ this.handleChange = this.handleChange.bind(this);
+ this.handleCompleteWord = this.handleCompleteWord.bind(this);
+ this.handleKeyDown = this.handleKeyDown.bind(this);
+ this.handlePretextChanged = this.handlePretextChanged.bind(this);
+
+ this.suggestionId = Utils.generateId();
+
+ this.state = {
+ focused: false
+ };
+ }
+
+ componentDidMount() {
+ SuggestionStore.registerSuggestionBox(this.suggestionId);
+ $(document).on('click', this.handleDocumentClick);
+
+ SuggestionStore.addCompleteWordListener(this.suggestionId, this.handleCompleteWord);
+ SuggestionStore.addPretextChangedListener(this.suggestionId, this.handlePretextChanged);
+ }
+
+ componentWillUnmount() {
+ SuggestionStore.removeCompleteWordListener(this.suggestionId, this.handleCompleteWord);
+ SuggestionStore.removePretextChangedListener(this.suggestionId, this.handlePretextChanged);
+
+ SuggestionStore.unregisterSuggestionBox(this.suggestionId);
+ $(document).off('click', this.handleDocumentClick);
+ }
+
+ getTextbox() {
+ // this is to support old code that looks at the input/textarea DOM nodes
+ return ReactDOM.findDOMNode(this.refs.textbox);
+ }
+
+ handleDocumentClick(e) {
+ if (!this.state.focused) {
+ return;
+ }
+
+ const container = $(ReactDOM.findDOMNode(this));
+ if (!(container.is(e.target) || container.has(e.target).length > 0)) {
+ // we can't just use blur for this because it fires and hides the children before
+ // their click handlers can be called
+ this.setState({
+ focused: false
+ });
+ }
+ }
+
+ handleFocus() {
+ this.setState({
+ focused: true
+ });
+
+ if (this.props.onFocus) {
+ this.props.onFocus();
+ }
+ }
+
+ handleChange(e) {
+ const textbox = ReactDOM.findDOMNode(this.refs.textbox);
+ const caret = Utils.getCaretPosition(textbox);
+ const pretext = textbox.value.substring(0, caret);
+
+ EventHelpers.emitSuggestionPretextChanged(this.suggestionId, pretext);
+
+ if (this.props.onUserInput) {
+ this.props.onUserInput(textbox.value);
+ }
+
+ if (this.props.onChange) {
+ this.props.onChange(e);
+ }
+ }
+
+ handleCompleteWord(term) {
+ const textbox = ReactDOM.findDOMNode(this.refs.textbox);
+ const caret = Utils.getCaretPosition(textbox);
+
+ const text = this.props.value;
+ const prefix = text.substring(0, caret - SuggestionStore.getMatchedPretext(this.suggestionId).length);
+ const suffix = text.substring(caret);
+
+ if (this.props.onUserInput) {
+ this.props.onUserInput(prefix + term + ' ' + suffix);
+ }
+
+ // set the caret position after the next rendering
+ window.requestAnimationFrame(() => {
+ Utils.setCaretPosition(textbox, prefix.length + term.length + 1);
+ });
+ }
+
+ handleKeyDown(e) {
+ if (SuggestionStore.hasSuggestions(this.suggestionId)) {
+ if (e.which === KeyCodes.UP) {
+ EventHelpers.emitSelectPreviousSuggestion(this.suggestionId);
+ e.preventDefault();
+ } else if (e.which === KeyCodes.DOWN) {
+ EventHelpers.emitSelectNextSuggestion(this.suggestionId);
+ e.preventDefault();
+ } else if (e.which === KeyCodes.ENTER || (e.which === KeyCodes.SPACE && SuggestionStore.shouldCompleteOnSpace(this.suggestionId))) {
+ EventHelpers.emitCompleteWordSuggestion(this.suggestionId);
+ e.preventDefault();
+ } else if (this.props.onKeyDown) {
+ this.props.onKeyDown(e);
+ }
+ } else if (this.props.onKeyDown) {
+ this.props.onKeyDown(e);
+ }
+ }
+
+ handlePretextChanged(pretext) {
+ for (const provider of this.props.providers) {
+ provider.handlePretextChanged(this.suggestionId, pretext);
+ }
+ }
+
+ render() {
+ const newProps = Object.assign({}, this.props, {
+ onFocus: this.handleFocus,
+ onChange: this.handleChange,
+ onKeyDown: this.handleKeyDown
+ });
+
+ let textbox = null;
+ if (this.props.type === 'input') {
+ textbox = (
+ <input
+ ref='textbox'
+ type='text'
+ {...newProps}
+ />
+ );
+ } else if (this.props.type === 'textarea') {
+ textbox = (
+ <textarea
+ ref='textbox'
+ {...newProps}
+ />
+ );
+ }
+
+ const SuggestionListComponent = this.props.listComponent;
+
+ return (
+ <div>
+ {textbox}
+ <SuggestionListComponent
+ suggestionId={this.suggestionId}
+ show={this.state.focused}
+ />
+ </div>
+ );
+ }
+}
+
+SuggestionBox.defaultProps = {
+ type: 'input'
+};
+
+SuggestionBox.propTypes = {
+ listComponent: React.PropTypes.func.isRequired,
+ type: React.PropTypes.oneOf(['input', 'textarea']).isRequired,
+ value: React.PropTypes.string.isRequired,
+ onUserInput: React.PropTypes.func,
+ providers: React.PropTypes.arrayOf(React.PropTypes.object),
+
+ // explicitly name any input event handlers we override and need to manually call
+ onChange: React.PropTypes.func,
+ onKeyDown: React.PropTypes.func,
+ onFocus: React.PropTypes.func
+};
diff --git a/web/react/components/suggestion/suggestion_list.jsx b/web/react/components/suggestion/suggestion_list.jsx
new file mode 100644
index 000000000..87021fd94
--- /dev/null
+++ b/web/react/components/suggestion/suggestion_list.jsx
@@ -0,0 +1,126 @@
+// Copyright (c) 2015 Mattermost, Inc. All Rights Reserved.
+// See License.txt for license information.
+
+import * as EventHelpers from '../../dispatcher/event_helpers.jsx';
+import SuggestionStore from '../../stores/suggestion_store.jsx';
+
+export default class SuggestionList extends React.Component {
+ constructor(props) {
+ super(props);
+
+ this.getContent = this.getContent.bind(this);
+
+ this.handleItemClick = this.handleItemClick.bind(this);
+ this.handleSuggestionsChanged = this.handleSuggestionsChanged.bind(this);
+
+ this.scrollToItem = this.scrollToItem.bind(this);
+
+ this.state = {
+ items: [],
+ terms: [],
+ components: [],
+ selection: ''
+ };
+ }
+
+ componentDidMount() {
+ SuggestionStore.addSuggestionsChangedListener(this.props.suggestionId, this.handleSuggestionsChanged);
+ }
+
+ componentWillUnmount() {
+ SuggestionStore.removeSuggestionsChangedListener(this.props.suggestionId, this.handleSuggestionsChanged);
+ }
+
+ getContent() {
+ return $(ReactDOM.findDOMNode(this.refs.content));
+ }
+
+ handleItemClick(term, e) {
+ EventHelpers.emitCompleteWordSuggestion(this.props.suggestionId, term);
+
+ e.preventDefault();
+ }
+
+ handleSuggestionsChanged() {
+ const selection = SuggestionStore.getSelection(this.props.suggestionId);
+
+ this.setState({
+ items: SuggestionStore.getItems(this.props.suggestionId),
+ terms: SuggestionStore.getTerms(this.props.suggestionId),
+ components: SuggestionStore.getComponents(this.props.suggestionId),
+ selection
+ });
+
+ if (selection) {
+ window.requestAnimationFrame(() => this.scrollToItem(this.state.selection));
+ }
+ }
+
+ scrollToItem(term) {
+ const content = this.getContent();
+ const visibleContentHeight = content[0].clientHeight;
+ const actualContentHeight = content[0].scrollHeight;
+
+ if (visibleContentHeight < actualContentHeight) {
+ const contentTop = content.scrollTop();
+ const contentTopPadding = parseInt(content.css('padding-top'), 10);
+ const contentBottomPadding = parseInt(content.css('padding-top'), 10);
+
+ const item = $(ReactDOM.findDOMNode(this.refs[term]));
+ const itemTop = item[0].offsetTop - parseInt(item.css('margin-top'), 10);
+ const itemBottomMargin = parseInt(item.css('margin-bottom'), 10) + parseInt(item.css('padding-bottom'), 10);
+ const itemBottom = item[0].offsetTop + item.height() + itemBottomMargin;
+
+ if (itemTop - contentTopPadding < contentTop) {
+ // the item is off the top of the visible space
+ content.scrollTop(itemTop - contentTopPadding);
+ } else if (itemBottom + contentTopPadding + contentBottomPadding > contentTop + visibleContentHeight) {
+ // the item has gone off the bottom of the visible space
+ content.scrollTop(itemBottom - visibleContentHeight + contentTopPadding + contentBottomPadding);
+ }
+ }
+ }
+
+ render() {
+ if (this.state.items.length === 0 || !this.props.show) {
+ return null;
+ }
+
+ const items = [];
+ for (let i = 0; i < this.state.items.length; i++) {
+ const item = this.state.items[i];
+ const term = this.state.terms[i];
+ const isSelection = term === this.state.selection;
+
+ // ReactComponent names need to be upper case when used in JSX
+ const Component = this.state.components[i];
+
+ items.push(
+ <Component
+ key={term}
+ ref={term}
+ item={item}
+ term={term}
+ isSelection={isSelection}
+ onClick={this.handleItemClick.bind(this, term)}
+ />
+ );
+ }
+
+ return (
+ <div className='suggestion-list suggestion-list--top'>
+ <div
+ ref='content'
+ className='suggestion-content suggestion-content--top'
+ >
+ {items}
+ </div>
+ </div>
+ );
+ }
+}
+
+SuggestionList.propTypes = {
+ suggestionId: React.PropTypes.string.isRequired,
+ show: React.PropTypes.bool.isRequired
+};
diff --git a/web/react/components/team_general_tab.jsx b/web/react/components/team_general_tab.jsx
index 795fad671..03715d585 100644
--- a/web/react/components/team_general_tab.jsx
+++ b/web/react/components/team_general_tab.jsx
@@ -437,6 +437,7 @@ export default class GeneralTab extends React.Component {
<input
className='form-control'
type='text'
+ maxLength='22'
onChange={this.updateName}
value={this.state.name}
/>
diff --git a/web/react/components/textbox.jsx b/web/react/components/textbox.jsx
index 10b3c0069..b29f304ab 100644
--- a/web/react/components/textbox.jsx
+++ b/web/react/components/textbox.jsx
@@ -1,16 +1,16 @@
// Copyright (c) 2015 Mattermost, Inc. All Rights Reserved.
// See License.txt for license information.
-import AppDispatcher from '../dispatcher/app_dispatcher.jsx';
-import SearchStore from '../stores/search_store.jsx';
-import CommandList from './command_list.jsx';
+import AtMentionProvider from './suggestion/at_mention_provider.jsx';
+import CommandProvider from './suggestion/command_provider.jsx';
+import EmoticonProvider from './suggestion/emoticon_provider.jsx';
+import SuggestionList from './suggestion/suggestion_list.jsx';
+import SuggestionBox from './suggestion/suggestion_box.jsx';
import ErrorStore from '../stores/error_store.jsx';
import * as TextFormatting from '../utils/text_formatting.jsx';
import * as Utils from '../utils/utils.jsx';
import Constants from '../utils/constants.jsx';
-const ActionTypes = Constants.ActionTypes;
-const KeyCodes = Constants.KeyCodes;
const PreReleaseFeatures = Constants.PRE_RELEASE_FEATURES;
export default class Textbox extends React.Component {
@@ -18,32 +18,22 @@ export default class Textbox extends React.Component {
super(props);
this.getStateFromStores = this.getStateFromStores.bind(this);
- this.onListenerChange = this.onListenerChange.bind(this);
this.onRecievedError = this.onRecievedError.bind(this);
- this.updateMentionTab = this.updateMentionTab.bind(this);
- this.handleChange = this.handleChange.bind(this);
this.handleKeyPress = this.handleKeyPress.bind(this);
this.handleKeyDown = this.handleKeyDown.bind(this);
- this.handleBackspace = this.handleBackspace.bind(this);
- this.checkForNewMention = this.checkForNewMention.bind(this);
- this.addMention = this.addMention.bind(this);
- this.addCommand = this.addCommand.bind(this);
this.resize = this.resize.bind(this);
this.handleFocus = this.handleFocus.bind(this);
this.handleBlur = this.handleBlur.bind(this);
- this.handlePaste = this.handlePaste.bind(this);
this.showPreview = this.showPreview.bind(this);
this.state = {
- mentionText: '-1',
- mentions: [],
connection: ''
};
- this.caret = -1;
- this.addedMention = false;
- this.doProcessMentions = false;
- this.mentions = [];
+ this.suggestionProviders = [new AtMentionProvider(), new EmoticonProvider()];
+ if (props.supportsCommands) {
+ this.suggestionProviders.push(new CommandProvider());
+ }
}
getStateFromStores() {
@@ -57,24 +47,15 @@ export default class Textbox extends React.Component {
}
componentDidMount() {
- SearchStore.addAddMentionListener(this.onListenerChange);
ErrorStore.addChangeListener(this.onRecievedError);
this.resize();
- this.updateMentionTab(null);
}
componentWillUnmount() {
- SearchStore.removeAddMentionListener(this.onListenerChange);
ErrorStore.removeChangeListener(this.onRecievedError);
}
- onListenerChange(id, username) {
- if (id === this.props.id) {
- this.addMention(username);
- }
- }
-
onRecievedError() {
const errorState = ErrorStore.getLastError();
@@ -86,158 +67,21 @@ export default class Textbox extends React.Component {
}
componentDidUpdate() {
- if (this.caret >= 0) {
- Utils.setCaretPosition(ReactDOM.findDOMNode(this.refs.message), this.caret);
- this.caret = -1;
- }
- if (this.doProcessMentions) {
- this.updateMentionTab(null);
- this.doProcessMentions = false;
- }
this.resize();
}
- componentWillReceiveProps(nextProps) {
- if (!this.addedMention) {
- this.checkForNewMention(nextProps.messageText);
- }
- const text = ReactDOM.findDOMNode(this.refs.message).value;
- if (nextProps.channelId !== this.props.channelId || nextProps.messageText !== text) {
- this.doProcessMentions = true;
- }
- this.addedMention = false;
- this.refs.commands.getSuggestedCommands(nextProps.messageText);
- }
-
- updateMentionTab(mentionText) {
- // using setTimeout so dispatch isn't called during an in progress dispatch
- setTimeout(() => {
- AppDispatcher.handleViewAction({
- type: ActionTypes.RECIEVED_MENTION_DATA,
- id: this.props.id,
- mention_text: mentionText
- });
- }, 1);
- }
-
- handleChange() {
- const text = ReactDOM.findDOMNode(this.refs.message).value;
- this.props.onUserInput(text);
- }
-
handleKeyPress(e) {
- const text = ReactDOM.findDOMNode(this.refs.message).value;
-
- if (!this.refs.commands.isEmpty() && text.indexOf('/') === 0 && e.which === 13) {
- this.refs.commands.addFirstCommand();
- e.preventDefault();
- return;
- }
-
- if (!this.doProcessMentions) {
- const caret = Utils.getCaretPosition(ReactDOM.findDOMNode(this.refs.message));
- const preText = text.substring(0, caret);
- const lastSpace = preText.lastIndexOf(' ');
- const lastAt = preText.lastIndexOf('@');
-
- if (caret > lastAt && lastSpace < lastAt) {
- this.doProcessMentions = true;
- }
- }
-
this.props.onKeyPress(e);
}
handleKeyDown(e) {
- if (Utils.getSelectedText(ReactDOM.findDOMNode(this.refs.message)) !== '') {
- this.doProcessMentions = true;
- }
-
- if (e.keyCode === KeyCodes.BACKSPACE) {
- this.handleBackspace(e);
- } else if (this.props.onKeyDown) {
+ if (this.props.onKeyDown) {
this.props.onKeyDown(e);
}
}
- handleBackspace() {
- const text = ReactDOM.findDOMNode(this.refs.message).value;
- if (text.indexOf('/') === 0) {
- this.refs.commands.getSuggestedCommands(text.substring(0, text.length - 1));
- }
-
- if (this.doProcessMentions) {
- return;
- }
-
- const caret = Utils.getCaretPosition(ReactDOM.findDOMNode(this.refs.message));
- const preText = text.substring(0, caret);
- const lastSpace = preText.lastIndexOf(' ');
- const lastAt = preText.lastIndexOf('@');
-
- if (caret > lastAt && (lastSpace > lastAt || lastSpace === -1)) {
- this.doProcessMentions = true;
- }
- }
-
- checkForNewMention(text) {
- const caret = Utils.getCaretPosition(ReactDOM.findDOMNode(this.refs.message));
-
- const preText = text.substring(0, caret);
-
- const atIndex = preText.lastIndexOf('@');
-
- // The @ character not typed, so nothing to do.
- if (atIndex === -1) {
- this.updateMentionTab('-1');
- return;
- }
-
- const lastCharSpace = preText.lastIndexOf(String.fromCharCode(160));
- const lastSpace = preText.lastIndexOf(' ');
-
- // If there is a space after the last @, nothing to do.
- if (lastSpace > atIndex || lastCharSpace > atIndex) {
- this.updateMentionTab('-1');
- return;
- }
-
- // Get the name typed so far.
- const name = preText.substring(atIndex + 1, preText.length).toLowerCase();
- this.updateMentionTab(name);
- }
-
- addMention(name) {
- const caret = Utils.getCaretPosition(ReactDOM.findDOMNode(this.refs.message));
-
- const text = this.props.messageText;
-
- const preText = text.substring(0, caret);
-
- const atIndex = preText.lastIndexOf('@');
-
- // The @ character not typed, so nothing to do.
- if (atIndex === -1) {
- return;
- }
-
- const prefix = text.substring(0, atIndex);
- const suffix = text.substring(caret, text.length);
- this.caret = prefix.length + name.length + 2;
- this.addedMention = true;
- this.doProcessMentions = true;
-
- this.props.onUserInput(`${prefix}@${name} ${suffix}`);
- }
-
- addCommand(cmd) {
- const elm = ReactDOM.findDOMNode(this.refs.message);
- elm.value = cmd;
- this.handleChange();
- }
-
resize() {
- const e = ReactDOM.findDOMNode(this.refs.message);
+ const e = this.refs.message.getTextbox();
const w = ReactDOM.findDOMNode(this.refs.wrapper);
const prevHeight = $(e).height();
@@ -272,23 +116,19 @@ export default class Textbox extends React.Component {
}
handleFocus() {
- const elm = ReactDOM.findDOMNode(this.refs.message);
+ const elm = this.refs.message.getTextbox();
if (elm.title === elm.value) {
elm.value = '';
}
}
handleBlur() {
- const elm = ReactDOM.findDOMNode(this.refs.message);
+ const elm = this.refs.message.getTextbox();
if (elm.value === '') {
elm.value = elm.title;
}
}
- handlePaste() {
- this.doProcessMentions = true;
- }
-
showPreview(e) {
e.preventDefault();
e.target.blur();
@@ -323,15 +163,11 @@ export default class Textbox extends React.Component {
ref='wrapper'
className='textarea-wrapper'
>
- <CommandList
- ref='commands'
- addCommand={this.addCommand}
- channelId={this.props.channelId}
- />
- <textarea
+ <SuggestionBox
id={this.props.id}
ref='message'
className={`form-control custom-textarea ${this.state.connection}`}
+ type='textarea'
spellCheck='true'
autoComplete='off'
autoCorrect='off'
@@ -339,14 +175,15 @@ export default class Textbox extends React.Component {
maxLength={Constants.MAX_POST_LEN}
placeholder={this.props.createMessage}
value={this.props.messageText}
- onInput={this.handleChange}
- onChange={this.handleChange}
+ onUserInput={this.props.onUserInput}
onKeyPress={this.handleKeyPress}
onKeyDown={this.handleKeyDown}
onFocus={this.handleFocus}
onBlur={this.handleBlur}
onPaste={this.handlePaste}
style={{visibility: this.state.preview ? 'hidden' : 'visible'}}
+ listComponent={SuggestionList}
+ providers={this.suggestionProviders}
/>
<div
ref='preview'
@@ -367,6 +204,10 @@ export default class Textbox extends React.Component {
}
}
+Textbox.defaultProps = {
+ supportsCommands: true
+};
+
Textbox.propTypes = {
id: React.PropTypes.string.isRequired,
channelId: React.PropTypes.string,
@@ -375,5 +216,6 @@ Textbox.propTypes = {
onKeyPress: React.PropTypes.func.isRequired,
onHeightChange: React.PropTypes.func,
createMessage: React.PropTypes.string.isRequired,
- onKeyDown: React.PropTypes.func
+ onKeyDown: React.PropTypes.func,
+ supportsCommands: React.PropTypes.bool.isRequired
};
diff --git a/web/react/components/user_settings/user_settings_notifications.jsx b/web/react/components/user_settings/user_settings_notifications.jsx
index e025bf670..f762405af 100644
--- a/web/react/components/user_settings/user_settings_notifications.jsx
+++ b/web/react/components/user_settings/user_settings_notifications.jsx
@@ -78,7 +78,9 @@ export default class NotificationsTab extends React.Component {
super(props);
this.handleSubmit = this.handleSubmit.bind(this);
+ this.handleCancel = this.handleCancel.bind(this);
this.updateSection = this.updateSection.bind(this);
+ this.updateState = this.updateState.bind(this);
this.onListenerChange = this.onListenerChange.bind(this);
this.handleNotifyRadio = this.handleNotifyRadio.bind(this);
this.handleEmailRadio = this.handleEmailRadio.bind(this);
@@ -128,10 +130,21 @@ export default class NotificationsTab extends React.Component {
}.bind(this)
);
}
+ handleCancel(e) {
+ this.updateState();
+ this.props.updateSection('');
+ e.preventDefault();
+ }
updateSection(section) {
- this.setState(getNotificationsStateFromStores());
+ this.updateState();
this.props.updateSection(section);
}
+ updateState() {
+ const newState = getNotificationsStateFromStores();
+ if (!Utils.areObjectsEqual(newState, this.state)) {
+ this.setState(newState);
+ }
+ }
componentDidMount() {
UserStore.addChangeListener(this.onListenerChange);
}
@@ -139,10 +152,7 @@ export default class NotificationsTab extends React.Component {
UserStore.removeChangeListener(this.onListenerChange);
}
onListenerChange() {
- var newState = getNotificationsStateFromStores();
- if (!Utils.areObjectsEqual(newState, this.state)) {
- this.setState(newState);
- }
+ this.updateState();
}
handleNotifyRadio(notifyLevel) {
this.setState({notifyLevel: notifyLevel});
@@ -245,11 +255,6 @@ export default class NotificationsTab extends React.Component {
</div>
);
- handleUpdateDesktopSection = function updateDesktopSection(e) {
- this.props.updateSection('');
- e.preventDefault();
- }.bind(this);
-
const extraInfo = <span>{'Desktop notifications are available on Firefox, Safari, and Chrome.'}</span>;
desktopSection = (
@@ -259,7 +264,7 @@ export default class NotificationsTab extends React.Component {
inputs={inputs}
submit={this.handleSubmit}
server_error={serverError}
- updateSection={handleUpdateDesktopSection}
+ updateSection={this.handleCancel}
/>
);
} else {
@@ -324,11 +329,6 @@ export default class NotificationsTab extends React.Component {
</div>
);
- handleUpdateSoundSection = function updateSoundSection(e) {
- this.props.updateSection('');
- e.preventDefault();
- }.bind(this);
-
const extraInfo = <span>{'Desktop notification sounds are available on Firefox, Safari, Chrome, Internet Explorer, and Edge.'}</span>;
soundSection = (
@@ -338,7 +338,7 @@ export default class NotificationsTab extends React.Component {
inputs={inputs}
submit={this.handleSubmit}
server_error={serverError}
- updateSection={handleUpdateSoundSection}
+ updateSection={this.handleCancel}
/>
);
} else {
@@ -405,18 +405,13 @@ export default class NotificationsTab extends React.Component {
</div>
);
- handleUpdateEmailSection = function updateEmailSection(e) {
- this.props.updateSection('');
- e.preventDefault();
- }.bind(this);
-
emailSection = (
<SettingItemMax
title='Email notifications'
inputs={inputs}
submit={this.handleSubmit}
server_error={serverError}
- updateSection={handleUpdateEmailSection}
+ updateSection={this.handleCancel}
/>
);
} else {
@@ -566,17 +561,13 @@ export default class NotificationsTab extends React.Component {
</div>
);
- handleUpdateKeysSection = function updateKeysSection(e) {
- this.props.updateSection('');
- e.preventDefault();
- }.bind(this);
keysSection = (
<SettingItemMax
title='Words that trigger mentions'
inputs={inputs}
submit={this.handleSubmit}
server_error={serverError}
- updateSection={handleUpdateKeysSection}
+ updateSection={this.handleCancel}
/>
);
} else {
@@ -653,7 +644,7 @@ export default class NotificationsTab extends React.Component {
ref='wrapper'
className='user-settings'
>
- <h3 className='tab-header'>Notifications</h3>
+ <h3 className='tab-header'>{'Notifications'}</h3>
<div className='divider-dark first'/>
{desktopSection}
<div className='divider-light'/>
diff --git a/web/react/dispatcher/event_helpers.jsx b/web/react/dispatcher/event_helpers.jsx
index 57b4eaa11..f792c610f 100644
--- a/web/react/dispatcher/event_helpers.jsx
+++ b/web/react/dispatcher/event_helpers.jsx
@@ -111,3 +111,33 @@ export function showRegisterAppModal() {
value: true
});
}
+
+export function emitSuggestionPretextChanged(suggestionId, pretext) {
+ AppDispatcher.handleViewAction({
+ type: ActionTypes.SUGGESTION_PRETEXT_CHANGED,
+ id: suggestionId,
+ pretext
+ });
+}
+
+export function emitSelectNextSuggestion(suggestionId) {
+ AppDispatcher.handleViewAction({
+ type: ActionTypes.SUGGESTION_SELECT_NEXT,
+ id: suggestionId
+ });
+}
+
+export function emitSelectPreviousSuggestion(suggestionId) {
+ AppDispatcher.handleViewAction({
+ type: ActionTypes.SUGGESTION_SELECT_PREVIOUS,
+ id: suggestionId
+ });
+}
+
+export function emitCompleteWordSuggestion(suggestionId, term = '') {
+ AppDispatcher.handleViewAction({
+ type: Constants.ActionTypes.SUGGESTION_COMPLETE_WORD,
+ id: suggestionId,
+ term
+ });
+}
diff --git a/web/react/pages/channel.jsx b/web/react/pages/channel.jsx
index b73dfdafe..49f0935a9 100644
--- a/web/react/pages/channel.jsx
+++ b/web/react/pages/channel.jsx
@@ -6,7 +6,6 @@ import ChannelLoader from '../components/channel_loader.jsx';
import ErrorBar from '../components/error_bar.jsx';
import ErrorStore from '../stores/error_store.jsx';
-import MentionList from '../components/mention_list.jsx';
import GetTeamInviteLinkModal from '../components/get_team_invite_link_modal.jsx';
import RenameChannelModal from '../components/rename_channel_modal.jsx';
import EditPostModal from '../components/edit_post_modal.jsx';
@@ -47,21 +46,6 @@ function setupChannelPage(props, team, channel) {
document.getElementById('channel_view')
);
- ReactDOM.render(
- <MentionList id='post_textbox' />,
- document.getElementById('post_mention_tab')
- );
-
- ReactDOM.render(
- <MentionList id='reply_textbox' />,
- document.getElementById('reply_mention_tab')
- );
-
- ReactDOM.render(
- <MentionList id='edit_textbox' />,
- document.getElementById('edit_mention_tab')
- );
-
//
// Modals
//
diff --git a/web/react/stores/search_store.jsx b/web/react/stores/search_store.jsx
index e8ab6a2ae..f932c379a 100644
--- a/web/react/stores/search_store.jsx
+++ b/web/react/stores/search_store.jsx
@@ -12,8 +12,6 @@ var ActionTypes = Constants.ActionTypes;
var CHANGE_EVENT = 'change';
var SEARCH_CHANGE_EVENT = 'search_change';
var SEARCH_TERM_CHANGE_EVENT = 'search_term_change';
-var MENTION_DATA_CHANGE_EVENT = 'mention_data_change';
-var ADD_MENTION_EVENT = 'add_mention';
var SHOW_SEARCH_EVENT = 'show_search';
class SearchStoreClass extends EventEmitter {
@@ -32,10 +30,6 @@ class SearchStoreClass extends EventEmitter {
this.addSearchTermChangeListener = this.addSearchTermChangeListener.bind(this);
this.removeSearchTermChangeListener = this.removeSearchTermChangeListener.bind(this);
- this.emitMentionDataChange = this.emitMentionDataChange.bind(this);
- this.addMentionDataChangeListener = this.addMentionDataChangeListener.bind(this);
- this.removeMentionDataChangeListener = this.removeMentionDataChangeListener.bind(this);
-
this.emitShowSearch = this.emitShowSearch.bind(this);
this.addShowSearchListener = this.addShowSearchListener.bind(this);
this.removeShowSearchListener = this.removeShowSearchListener.bind(this);
@@ -113,30 +107,6 @@ class SearchStoreClass extends EventEmitter {
return BrowserStore.getItem('search_term');
}
- emitMentionDataChange(id, mentionText) {
- this.emit(MENTION_DATA_CHANGE_EVENT, id, mentionText);
- }
-
- addMentionDataChangeListener(callback) {
- this.on(MENTION_DATA_CHANGE_EVENT, callback);
- }
-
- removeMentionDataChangeListener(callback) {
- this.removeListener(MENTION_DATA_CHANGE_EVENT, callback);
- }
-
- emitAddMention(id, username) {
- this.emit(ADD_MENTION_EVENT, id, username);
- }
-
- addAddMentionListener(callback) {
- this.on(ADD_MENTION_EVENT, callback);
- }
-
- removeAddMentionListener(callback) {
- this.removeListener(ADD_MENTION_EVENT, callback);
- }
-
storeSearchResults(results, isMentionSearch) {
BrowserStore.setItem('search_results', results);
BrowserStore.setItem('is_mention_search', Boolean(isMentionSearch));
@@ -157,12 +127,6 @@ SearchStore.dispatchToken = AppDispatcher.register((payload) => {
SearchStore.storeSearchTerm(action.term);
SearchStore.emitSearchTermChange(action.do_search, action.is_mention_search);
break;
- case ActionTypes.RECIEVED_MENTION_DATA:
- SearchStore.emitMentionDataChange(action.id, action.mention_text);
- break;
- case ActionTypes.RECIEVED_ADD_MENTION:
- SearchStore.emitAddMention(action.id, action.username);
- break;
case ActionTypes.SHOW_SEARCH:
SearchStore.emitShowSearch();
break;
diff --git a/web/react/stores/suggestion_store.jsx b/web/react/stores/suggestion_store.jsx
new file mode 100644
index 000000000..182f5810f
--- /dev/null
+++ b/web/react/stores/suggestion_store.jsx
@@ -0,0 +1,267 @@
+// Copyright (c) 2015 Mattermost, Inc. All Rights Reserved.
+// See License.txt for license information.
+
+import AppDispatcher from '../dispatcher/app_dispatcher.jsx';
+import Constants from '../utils/constants.jsx';
+import EventEmitter from 'events';
+
+const ActionTypes = Constants.ActionTypes;
+
+const COMPLETE_WORD_EVENT = 'complete_word';
+const PRETEXT_CHANGED_EVENT = 'pretext_changed';
+const SUGGESTIONS_CHANGED_EVENT = 'suggestions_changed';
+
+class SuggestionStore extends EventEmitter {
+ constructor() {
+ super();
+
+ this.addSuggestionsChangedListener = this.addSuggestionsChangedListener.bind(this);
+ this.removeSuggestionsChangedListener = this.removeSuggestionsChangedListener.bind(this);
+ this.emitSuggestionsChanged = this.emitSuggestionsChanged.bind(this);
+
+ this.addPretextChangedListener = this.addPretextChangedListener.bind(this);
+ this.removePretextChangedListener = this.removePretextChangedListener.bind(this);
+ this.emitPretextChanged = this.emitPretextChanged.bind(this);
+
+ this.addCompleteWordListener = this.addCompleteWordListener.bind(this);
+ this.removeCompleteWordListener = this.removeCompleteWordListener.bind(this);
+ this.emitCompleteWord = this.emitCompleteWord.bind(this);
+
+ this.handleEventPayload = this.handleEventPayload.bind(this);
+ this.dispatchToken = AppDispatcher.register(this.handleEventPayload);
+
+ // this.suggestions stores the state of all SuggestionBoxes by mapping their unique identifier to an
+ // object with the following fields:
+ // pretext: the text before the cursor
+ // matchedPretext: the text before the cursor that will be replaced if an autocomplete term is selected
+ // terms: a list of strings which the previously typed text may be replaced by
+ // items: a list of objects backing the terms which may be used in rendering
+ // components: a list of react components that can be used to render their corresponding item
+ // selection: the term currently selected by the keyboard
+ // completeOnSpace: whether or not space will trigger the term to be autocompleted
+ this.suggestions = new Map();
+ }
+
+ addSuggestionsChangedListener(id, callback) {
+ this.on(SUGGESTIONS_CHANGED_EVENT + id, callback);
+ }
+ removeSuggestionsChangedListener(id, callback) {
+ this.removeListener(SUGGESTIONS_CHANGED_EVENT + id, callback);
+ }
+ emitSuggestionsChanged(id) {
+ this.emit(SUGGESTIONS_CHANGED_EVENT + id);
+ }
+
+ addPretextChangedListener(id, callback) {
+ this.on(PRETEXT_CHANGED_EVENT + id, callback);
+ }
+ removePretextChangedListener(id, callback) {
+ this.removeListener(PRETEXT_CHANGED_EVENT + id, callback);
+ }
+ emitPretextChanged(id, pretext) {
+ this.emit(PRETEXT_CHANGED_EVENT + id, pretext);
+ }
+
+ addCompleteWordListener(id, callback) {
+ this.on(COMPLETE_WORD_EVENT + id, callback);
+ }
+ removeCompleteWordListener(id, callback) {
+ this.removeListener(COMPLETE_WORD_EVENT + id, callback);
+ }
+ emitCompleteWord(id, term) {
+ this.emit(COMPLETE_WORD_EVENT + id, term);
+ }
+
+ registerSuggestionBox(id) {
+ this.suggestions.set(id, {
+ pretext: '',
+ matchedPretext: '',
+ terms: [],
+ items: [],
+ components: [],
+ selection: '',
+ completeOnSpace: true
+ });
+ }
+
+ unregisterSuggestionBox(id) {
+ this.suggestions.delete(id);
+ }
+
+ clearSuggestions(id) {
+ const suggestion = this.suggestions.get(id);
+
+ suggestion.matchedPretext = '';
+ suggestion.terms = [];
+ suggestion.items = [];
+ suggestion.components = [];
+ suggestion.completeOnSpace = true;
+ }
+
+ clearSelection(id) {
+ const suggestion = this.suggestions.get(id);
+
+ suggestion.selection = '';
+ }
+
+ hasSuggestions(id) {
+ return this.suggestions.get(id).terms.length > 0;
+ }
+
+ setPretext(id, pretext) {
+ const suggestion = this.suggestions.get(id);
+
+ suggestion.pretext = pretext;
+ }
+
+ setMatchedPretext(id, matchedPretext) {
+ const suggestion = this.suggestions.get(id);
+
+ suggestion.matchedPretext = matchedPretext;
+ }
+
+ setCompleteOnSpace(id, completeOnSpace) {
+ const suggestion = this.suggestions.get(id);
+
+ suggestion.completeOnSpace = completeOnSpace;
+ }
+
+ addSuggestion(id, term, item, component) {
+ const suggestion = this.suggestions.get(id);
+
+ suggestion.terms.push(term);
+ suggestion.items.push(item);
+ suggestion.components.push(component);
+ }
+
+ addSuggestions(id, terms, items, component) {
+ const suggestion = this.suggestions.get(id);
+
+ suggestion.terms.push(...terms);
+ suggestion.items.push(...items);
+
+ for (let i = 0; i < terms.length; i++) {
+ suggestion.components.push(component);
+ }
+ }
+
+ // make sure that if suggestions exist, then one of them is selected. return true if the selection changes.
+ ensureSelectionExists(id) {
+ const suggestion = this.suggestions.get(id);
+
+ if (suggestion.terms.length > 0) {
+ // if the current selection is no longer in the map, select the first term in the list
+ if (!suggestion.selection || suggestion.terms.indexOf(suggestion.selection) === -1) {
+ suggestion.selection = suggestion.terms[0];
+
+ return true;
+ }
+ } else if (suggestion.selection) {
+ suggestion.selection = '';
+
+ return true;
+ }
+
+ return false;
+ }
+
+ getPretext(id) {
+ return this.suggestions.get(id).pretext;
+ }
+
+ getMatchedPretext(id) {
+ return this.suggestions.get(id).matchedPretext;
+ }
+
+ getItems(id) {
+ return this.suggestions.get(id).items;
+ }
+
+ getTerms(id) {
+ return this.suggestions.get(id).terms;
+ }
+
+ getComponents(id) {
+ return this.suggestions.get(id).components;
+ }
+
+ getSelection(id) {
+ return this.suggestions.get(id).selection;
+ }
+
+ shouldCompleteOnSpace(id) {
+ return this.suggestions.get(id).completeOnSpace;
+ }
+
+ selectNext(id) {
+ this.setSelectionByDelta(id, 1);
+ }
+
+ selectPrevious(id) {
+ this.setSelectionByDelta(id, -1);
+ }
+
+ setSelectionByDelta(id, delta) {
+ const suggestion = this.suggestions.get(id);
+
+ let selectionIndex = suggestion.terms.indexOf(suggestion.selection);
+
+ if (selectionIndex === -1) {
+ // this should never happen since selection should always be in terms
+ throw new Error('selection is not in terms');
+ }
+
+ selectionIndex += delta;
+
+ if (selectionIndex < 0) {
+ selectionIndex = 0;
+ } else if (selectionIndex > suggestion.terms.length - 1) {
+ selectionIndex = suggestion.terms.length - 1;
+ }
+
+ suggestion.selection = suggestion.terms[selectionIndex];
+ }
+
+ handleEventPayload(payload) {
+ const {type, id, ...other} = payload.action; // eslint-disable-line no-redeclare
+
+ switch (type) {
+ case ActionTypes.SUGGESTION_PRETEXT_CHANGED:
+ this.clearSuggestions(id);
+
+ this.setPretext(id, other.pretext);
+ this.emitPretextChanged(id, other.pretext);
+
+ this.ensureSelectionExists(id);
+ this.emitSuggestionsChanged(id);
+ break;
+ case ActionTypes.SUGGESTION_RECEIVED_SUGGESTIONS:
+ if (other.matchedPretext === this.getMatchedPretext(id)) {
+ // ensure the matched pretext hasn't changed so that we don't receive suggestions for outdated pretext
+ this.addSuggestions(id, other.terms, other.items, other.component);
+
+ this.ensureSelectionExists(id);
+ this.emitSuggestionsChanged(id);
+ }
+ break;
+ case ActionTypes.SUGGESTION_SELECT_NEXT:
+ this.selectNext(id);
+ this.emitSuggestionsChanged(id);
+ break;
+ case ActionTypes.SUGGESTION_SELECT_PREVIOUS:
+ this.selectPrevious(id);
+ this.emitSuggestionsChanged(id);
+ break;
+ case ActionTypes.SUGGESTION_COMPLETE_WORD:
+ this.emitCompleteWord(id, other.term || this.getSelection(id), this.getMatchedPretext(id));
+
+ this.setPretext(id, '');
+ this.clearSuggestions(id);
+ this.clearSelection(id);
+ this.emitSuggestionsChanged(id);
+ break;
+ }
+ }
+}
+
+export default new SuggestionStore();
diff --git a/web/react/utils/async_client.jsx b/web/react/utils/async_client.jsx
index 5df43b548..d97c7c3cb 100644
--- a/web/react/utils/async_client.jsx
+++ b/web/react/utils/async_client.jsx
@@ -741,3 +741,27 @@ export function savePreferences(preferences, success, error) {
}
);
}
+
+export function getSuggestedCommands(command, suggestionId, component) {
+ client.executeCommand(
+ '',
+ command,
+ true,
+ (data) => {
+ // pull out the suggested commands from the returned data
+ const terms = data.suggestions.map((suggestion) => suggestion.suggestion);
+
+ AppDispatcher.handleServerAction({
+ type: ActionTypes.SUGGESTION_RECEIVED_SUGGESTIONS,
+ id: suggestionId,
+ matchedPretext: command,
+ terms,
+ items: data.suggestions,
+ component
+ });
+ },
+ (err) => {
+ dispatchError(err, 'getCommandSuggestions');
+ }
+ );
+}
diff --git a/web/react/utils/constants.jsx b/web/react/utils/constants.jsx
index 0180d6dc5..8164095b9 100644
--- a/web/react/utils/constants.jsx
+++ b/web/react/utils/constants.jsx
@@ -24,6 +24,7 @@ export default {
RECIEVED_POST: null,
RECIEVED_EDIT_POST: null,
RECIEVED_SEARCH: null,
+ RECIEVED_SEARCH_TERM: null,
RECIEVED_POST_SELECTED: null,
RECIEVED_MENTION_DATA: null,
RECIEVED_ADD_MENTION: null,
@@ -50,7 +51,13 @@ export default {
TOGGLE_INVITE_MEMBER_MODAL: null,
TOGGLE_DELETE_POST_MODAL: null,
TOGGLE_GET_TEAM_INVITE_LINK_MODAL: null,
- TOGGLE_REGISTER_APP_MODAL: null
+ TOGGLE_REGISTER_APP_MODAL: null,
+
+ SUGGESTION_PRETEXT_CHANGED: null,
+ SUGGESTION_RECEIVED_SUGGESTIONS: null,
+ SUGGESTION_COMPLETE_WORD: null,
+ SUGGESTION_SELECT_NEXT: null,
+ SUGGESTION_SELECT_PREVIOUS: null
}),
PayloadSources: keyMirror({
diff --git a/web/react/utils/emoticons.jsx b/web/react/utils/emoticons.jsx
index bb948b6dc..ab04936c0 100644
--- a/web/react/utils/emoticons.jsx
+++ b/web/react/utils/emoticons.jsx
@@ -116,19 +116,19 @@ function initializeEmoticonMap() {
const out = new Map();
for (let i = 0; i < emoticonNames.length; i++) {
- out[emoticonNames[i]] = true;
+ out.set(emoticonNames[i], true);
}
return out;
}
-const emoticonMap = initializeEmoticonMap();
+export const emoticonMap = initializeEmoticonMap();
export function handleEmoticons(text, tokens) {
let output = text;
function replaceEmoticonWithToken(fullMatch, prefix, matchText, name) {
- if (emoticonMap[name]) {
+ if (emoticonMap.has(name)) {
const index = tokens.size;
const alias = `MM_EMOTICON${index}`;
@@ -154,6 +154,9 @@ export function handleEmoticons(text, tokens) {
return output;
}
-function getImagePathForEmoticon(name) {
- return `/static/images/emoji/${name}.png`;
+export function getImagePathForEmoticon(name) {
+ if (name) {
+ return `/static/images/emoji/${name}.png`;
+ }
+ return `/static/images/emoji`;
}
diff --git a/web/react/utils/utils.jsx b/web/react/utils/utils.jsx
index d2dd6cf38..788d8a45c 100644
--- a/web/react/utils/utils.jsx
+++ b/web/react/utils/utils.jsx
@@ -539,11 +539,11 @@ export function applyTheme(theme) {
if (theme.sidebarText) {
changeCss('.sidebar--left .nav-pills__container li>a, .sidebar--right, .settings-modal .nav-pills>li a, .sidebar--menu', 'color:' + changeOpacity(theme.sidebarText, 0.6), 1);
- changeCss('@media(max-width: 960px){.settings-modal .settings-table .nav>li>a', 'color:' + theme.sidebarText, 1);
+ changeCss('@media(max-width: 768px){.settings-modal .settings-table .nav>li>a', 'color:' + theme.sidebarText, 1);
changeCss('.sidebar--left .nav-pills__container li>h4, .sidebar--left .add-channel-btn', 'color:' + changeOpacity(theme.sidebarText, 0.6), 1);
changeCss('.sidebar--left .add-channel-btn:hover, .sidebar--left .add-channel-btn:focus', 'color:' + theme.sidebarText, 1);
changeCss('.sidebar--left .status path', 'fill:' + changeOpacity(theme.sidebarText, 0.5), 1);
- changeCss('@media(max-width: 960px){.settings-modal .settings-table .nav>li>a', 'border-color:' + changeOpacity(theme.sidebarText, 0.2), 2);
+ changeCss('@media(max-width: 768px){.settings-modal .settings-table .nav>li>a', 'border-color:' + changeOpacity(theme.sidebarText, 0.2), 2);
}
if (theme.sidebarUnreadText) {
@@ -552,7 +552,7 @@ export function applyTheme(theme) {
if (theme.sidebarTextHoverBg) {
changeCss('.sidebar--left .nav-pills__container li>a:hover, .sidebar--left .nav-pills__container li>a:focus, .settings-modal .nav-pills>li:hover a, .settings-modal .nav-pills>li:focus a', 'background:' + theme.sidebarTextHoverBg, 1);
- changeCss('@media(max-width: 960px){.settings-modal .settings-table .nav>li:hover a', 'background:' + theme.sidebarTextHoverBg, 1);
+ changeCss('@media(max-width: 768px){.settings-modal .settings-table .nav>li:hover a', 'background:' + theme.sidebarTextHoverBg, 1);
}
if (theme.sidebarTextActiveBorder) {
@@ -568,7 +568,7 @@ export function applyTheme(theme) {
changeCss('.sidebar--left .team__header, .sidebar--menu .team__header', 'background:' + theme.sidebarHeaderBg, 1);
changeCss('.modal .modal-header', 'background:' + theme.sidebarHeaderBg, 1);
changeCss('#navbar .navbar-default', 'background:' + theme.sidebarHeaderBg, 1);
- changeCss('@media(max-width: 960px){.search-bar__container', 'background:' + theme.sidebarHeaderBg, 1);
+ changeCss('@media(max-width: 768px){.search-bar__container', 'background:' + theme.sidebarHeaderBg, 1);
changeCss('.attachment .attachment__container', 'border-left-color:' + theme.sidebarHeaderBg, 1);
}
@@ -579,7 +579,7 @@ export function applyTheme(theme) {
changeCss('.modal .modal-header .modal-title, .modal .modal-header .modal-title .name, .modal .modal-header button.close', 'color:' + theme.sidebarHeaderTextColor, 1);
changeCss('#navbar .navbar-default .navbar-brand .heading', 'color:' + theme.sidebarHeaderTextColor, 1);
changeCss('#navbar .navbar-default .navbar-toggle .icon-bar, ', 'background:' + theme.sidebarHeaderTextColor, 1);
- changeCss('@media(max-width: 960px){.search-bar__container', 'color:' + theme.sidebarHeaderTextColor, 2);
+ changeCss('@media(max-width: 768px){.search-bar__container', 'color:' + theme.sidebarHeaderTextColor, 2);
}
if (theme.onlineIndicator) {
@@ -597,7 +597,7 @@ export function applyTheme(theme) {
}
if (theme.centerChannelBg) {
- changeCss('.app__content, .markdown__table, .markdown__table tbody tr, .command-box, .modal .modal-content, .mentions-name, .mentions--top .mentions-box', 'background:' + theme.centerChannelBg, 1);
+ changeCss('.app__content, .markdown__table, .markdown__table tbody tr, .suggestion-content, .modal .modal-content', 'background:' + theme.centerChannelBg, 1);
changeCss('#post-list .post-list-holder-by-time', 'background:' + theme.centerChannelBg, 1);
changeCss('#post-create', 'background:' + theme.centerChannelBg, 1);
changeCss('.date-separator .separator__text, .new-separator .separator__text', 'background:' + theme.centerChannelBg, 1);
@@ -607,7 +607,7 @@ export function applyTheme(theme) {
changeCss('.popover.right>.arrow:after, .tip-overlay.tip-overlay--sidebar .arrow, .tip-overlay.tip-overlay--header .arrow', 'border-right-color:' + theme.centerChannelBg, 1);
changeCss('.popover.left>.arrow:after', 'border-left-color:' + theme.centerChannelBg, 1);
changeCss('.popover.top>.arrow:after, .tip-overlay.tip-overlay--chat .arrow', 'border-top-color:' + theme.centerChannelBg, 1);
- changeCss('@media(min-width: 960px){.search-bar__container .search__form .search-bar, .form-control', 'background:' + theme.centerChannelBg, 1);
+ changeCss('@media(min-width: 768px){.search-bar__container .search__form .search-bar, .form-control', 'background:' + theme.centerChannelBg, 1);
changeCss('.attachment__content', 'background:' + theme.centerChannelBg, 1);
}
@@ -615,9 +615,9 @@ export function applyTheme(theme) {
changeCss('.sidebar--left, .sidebar--right .sidebar--right__header', 'border-color:' + changeOpacity(theme.centerChannelColor, 0.2), 1);
changeCss('.app__content, .post-create__container .post-create-body .btn-file, .post-create__container .post-create-footer .msg-typing, .command-name, .modal .modal-content, .dropdown-menu, .popover, .mentions-name, .tip-overlay', 'color:' + theme.centerChannelColor, 1);
changeCss('#post-create', 'color:' + theme.centerChannelColor, 2);
- changeCss('.mentions--top, .command-box', 'box-shadow:' + changeOpacity(theme.centerChannelColor, 0.2) + ' 1px -3px 12px', 3);
- changeCss('.mentions--top, .command-box', '-webkit-box-shadow:' + changeOpacity(theme.centerChannelColor, 0.2) + ' 1px -3px 12px', 2);
- changeCss('.mentions--top, .command-box', '-moz-box-shadow:' + changeOpacity(theme.centerChannelColor, 0.2) + ' 1px -3px 12px', 1);
+ changeCss('.mentions--top, .suggestion-list', 'box-shadow:' + changeOpacity(theme.centerChannelColor, 0.2) + ' 1px -3px 12px', 3);
+ changeCss('.mentions--top, .suggestion-list', '-webkit-box-shadow:' + changeOpacity(theme.centerChannelColor, 0.2) + ' 1px -3px 12px', 2);
+ changeCss('.mentions--top, .suggestion-list', '-moz-box-shadow:' + changeOpacity(theme.centerChannelColor, 0.2) + ' 1px -3px 12px', 1);
changeCss('.dropdown-menu, .popover ', 'box-shadow:' + changeOpacity(theme.centerChannelColor, 0.1) + ' 0px 6px 12px', 3);
changeCss('.dropdown-menu, .popover ', '-webkit-box-shadow:' + changeOpacity(theme.centerChannelColor, 0.1) + ' 0px 6px 12px', 2);
changeCss('.dropdown-menu, .popover ', '-moz-box-shadow:' + changeOpacity(theme.centerChannelColor, 0.1) + ' 0px 6px 12px', 1);
@@ -626,7 +626,7 @@ export function applyTheme(theme) {
changeCss('.markdown__table tbody tr:nth-child(2n)', 'background:' + changeOpacity(theme.centerChannelColor, 0.07), 1);
changeCss('.channel-header__info>div.dropdown .header-dropdown__icon', 'color:' + changeOpacity(theme.centerChannelColor, 0.8), 1);
changeCss('.channel-header #member_popover', 'color:' + changeOpacity(theme.centerChannelColor, 0.8), 1);
- changeCss('.custom-textarea, .custom-textarea:focus, .preview-container .preview-div, .post-image__column .post-image__details, .sidebar--right .sidebar-right__body, .markdown__table th, .markdown__table td, .command-box, .modal .modal-content, .settings-modal .settings-table .settings-content .divider-light, .webhooks__container, .dropdown-menu, .modal .modal-header, .popover, .mentions--top .mentions-box', 'border-color:' + changeOpacity(theme.centerChannelColor, 0.2), 1);
+ changeCss('.custom-textarea, .custom-textarea:focus, .preview-container .preview-div, .post-image__column .post-image__details, .sidebar--right .sidebar-right__body, .markdown__table th, .markdown__table td, .suggestion-content, .modal .modal-content, .settings-modal .settings-table .settings-content .divider-light, .webhooks__container, .dropdown-menu, .modal .modal-header, .popover', 'border-color:' + changeOpacity(theme.centerChannelColor, 0.2), 1);
changeCss('.popover.bottom>.arrow', 'border-bottom-color:' + changeOpacity(theme.centerChannelColor, 0.25), 1);
changeCss('.search-help-popover .search-autocomplete__divider span', 'color:' + changeOpacity(theme.centerChannelColor, 0.7), 1);
changeCss('.popover.right>.arrow', 'border-right-color:' + changeOpacity(theme.centerChannelColor, 0.25), 1);
@@ -638,7 +638,7 @@ export function applyTheme(theme) {
changeCss('.post-image__column', 'border-color:' + changeOpacity(theme.centerChannelColor, 0.2), 2);
changeCss('.post-image__column .post-image__details', 'color:' + theme.centerChannelColor, 2);
changeCss('.post-image__column a, .post-image__column a:hover, .post-image__column a:focus', 'color:' + theme.centerChannelColor, 1);
- changeCss('@media(min-width: 960px){.search-bar__container .search__form .search-bar, .form-control', 'color:' + theme.centerChannelColor, 2);
+ changeCss('@media(min-width: 768px){.search-bar__container .search__form .search-bar, .form-control', 'color:' + theme.centerChannelColor, 2);
changeCss('.input-group-addon, .search-bar__container .search__form, .form-control', 'border-color:' + changeOpacity(theme.centerChannelColor, 0.2), 1);
changeCss('.form-control:focus', 'border-color:' + changeOpacity(theme.centerChannelColor, 0.3), 1);
changeCss('.attachment .attachment__content', 'border-color:' + changeOpacity(theme.centerChannelColor, 0.3), 1);
@@ -652,7 +652,7 @@ export function applyTheme(theme) {
changeCss('@media(max-width: 1800px){.inner__wrap.move--left .post.post--comment.same--root', 'border-color:' + changeOpacity(theme.centerChannelColor, 0.07), 2);
changeCss('.post:hover, .modal .more-table tbody>tr:hover td, .settings-modal .settings-table .settings-content .section-min:hover', 'background:' + changeOpacity(theme.centerChannelColor, 0.07), 1);
changeCss('.date-separator.hovered--before:after, .date-separator.hovered--after:before, .new-separator.hovered--after:before, .new-separator.hovered--before:after', 'background:' + changeOpacity(theme.centerChannelColor, 0.07), 1);
- changeCss('.command-name:hover, .mentions-name:hover, .mentions-focus, .dropdown-menu>li>a:focus, .dropdown-menu>li>a:hover, .bot-indicator', 'background:' + changeOpacity(theme.centerChannelColor, 0.15), 1);
+ changeCss('.command-name:hover, .mentions-name:hover, .suggestion--selected, .dropdown-menu>li>a:focus, .dropdown-menu>li>a:hover, .bot-indicator', 'background:' + changeOpacity(theme.centerChannelColor, 0.15), 1);
changeCss('code', 'background:' + changeOpacity(theme.centerChannelColor, 0.1), 1);
changeCss('@media(min-width: 960px){.post.current--user:hover .post__body ', 'background: none;', 1);
changeCss('.sidebar--right', 'color:' + theme.centerChannelColor, 2);
@@ -1238,4 +1238,4 @@ export function getPostTerm(post) {
export function isFeatureEnabled(feature) {
return PreferenceStore.getPreference(Constants.Preferences.CATEGORY_ADVANCED_SETTINGS, Constants.FeatureTogglePrefix + feature.label, {value: 'false'}).value === 'true';
-}
+} \ No newline at end of file
diff --git a/web/sass-files/sass/partials/_admin-console.scss b/web/sass-files/sass/partials/_admin-console.scss
index 206d5bfca..af827a7f8 100644
--- a/web/sass-files/sass/partials/_admin-console.scss
+++ b/web/sass-files/sass/partials/_admin-console.scss
@@ -37,13 +37,22 @@
background: #333;
padding: 10px 10px;
margin: 1px 0 0;
+ .menu-icon--right {
+ top: 6px;
+ right: 12px;
+ }
}
}
.menu-icon--right {
- vertical-align: top;
- padding: 5px 10px;
- margin: -5px;
- float: right;
+ position: absolute;
+ right: 10px;
+ top: 3px;
+ font-size: 18px;
+ font-weight: 600;
+ width: 20px;
+ height: 20px;
+ line-height: 20px;
+ text-align: center;
.fa {
font-size: 13px;
right: -2px;
@@ -60,7 +69,7 @@
li {
> a {
font-size: 13px;
- padding: 5px 15px;
+ padding: 5px 35px 5px 15px;
background: transparent;
color: #bbb;
&:hover {
diff --git a/web/sass-files/sass/partials/_command-box.scss b/web/sass-files/sass/partials/_command-box.scss
deleted file mode 100644
index 184fb55eb..000000000
--- a/web/sass-files/sass/partials/_command-box.scss
+++ /dev/null
@@ -1,35 +0,0 @@
-.command-box {
- position: absolute;
- background-color: #fff;
- width: 100%;
- border: $border-gray;
- bottom: 38px;
- overflow: auto;
- z-index: 100;
- @extend %popover-box-shadow;
- .sidebar--right & {
- bottom: 100px;
- }
-}
-
-.command-name {
- position: relative;
- width: 100%;
- line-height: 24px;
- padding: 5px 10px 8px;
- z-index: 101;
- font-size: 0.95em;
- border-bottom: 1px solid #ddd;
- &:hover {
- background-color: #e8eaed;
- }
- .command__desc {
- margin-left: 5px;
- @include opacity(0.5);
- line-height: normal;
- }
-}
-
-.command-desc {
- color: #a7a8ab;
-} \ No newline at end of file
diff --git a/web/sass-files/sass/partials/_content.scss b/web/sass-files/sass/partials/_content.scss
index 44a959a9b..817817854 100644
--- a/web/sass-files/sass/partials/_content.scss
+++ b/web/sass-files/sass/partials/_content.scss
@@ -1,5 +1,5 @@
.inner__wrap {
- @include single-transition(transform, 0.5s, ease);
+ @include single-transition(all, 0.5s, ease);
&.move--left {
margin-right: 400px;
.search-bar__container {
@@ -30,6 +30,20 @@
width: 100%;
z-index: 3;
}
+
+#archive-link-home {
+ @include flex(0 0 auto);
+ background: #fff;
+ width: 100%;
+ min-height: 50px;
+ z-index: 3;
+ background-color: beige;
+ text-align: center;
+ vertical-align: middle;
+ padding-top: 10px;
+ cursor: pointer;
+}
+
.post-list {
.new-messages-hr {
margin-top: 5px;
diff --git a/web/sass-files/sass/partials/_mentions.scss b/web/sass-files/sass/partials/_mentions.scss
index f59cefbc6..ee5b7f6d0 100644
--- a/web/sass-files/sass/partials/_mentions.scss
+++ b/web/sass-files/sass/partials/_mentions.scss
@@ -7,26 +7,9 @@
@include border-radius(3px);
}
-.mentions--top {
- position: absolute;
- z-index: 1060;
- @extend %popover-box-shadow;
- .mentions-box {
- width: 100%;
- height: 100%;
- position: absolute;
- background-color: #fff;
- border: $border-gray;
- overflow-x: hidden;
- overflow-y: scroll;
- bottom: 0;
- }
-}
-
.mentions-name {
position:relative;
width:100%;
- background-color:#fff;
height:36px;
padding:2px;
z-index:101;
@@ -57,4 +40,4 @@
.mention-highlight {
background-color:#fff2bb;
-} \ No newline at end of file
+}
diff --git a/web/sass-files/sass/partials/_modal.scss b/web/sass-files/sass/partials/_modal.scss
index 4a56bc6c7..01c9e136c 100644
--- a/web/sass-files/sass/partials/_modal.scss
+++ b/web/sass-files/sass/partials/_modal.scss
@@ -405,3 +405,11 @@
@include opacity(0.7);
}
}
+
+.modal-body.edit-modal-body {
+ overflow: visible;
+
+ .suggestion-content {
+ max-height: 150px;
+ }
+}
diff --git a/web/sass-files/sass/partials/_popover.scss b/web/sass-files/sass/partials/_popover.scss
index 7d98935d5..a48bfb22d 100644
--- a/web/sass-files/sass/partials/_popover.scss
+++ b/web/sass-files/sass/partials/_popover.scss
@@ -94,6 +94,8 @@
}
.popover-content {
+ max-height: 500px;
+ overflow: auto;
padding: 3px 13px;
}
diff --git a/web/sass-files/sass/partials/_responsive.scss b/web/sass-files/sass/partials/_responsive.scss
index a56c4bb17..9b316d48e 100644
--- a/web/sass-files/sass/partials/_responsive.scss
+++ b/web/sass-files/sass/partials/_responsive.scss
@@ -51,23 +51,27 @@
@media screen and (max-width: 960px) {
- .signup-team__container {
- font-size: 1em;
- }
+ .sidebar--right {
+ width: 400px;
+ z-index: 5;
+ right: 0;
+ @include translateX(100%);
- .post {
+ &.move--left {
+ @include translateX(0);
+ }
- &.same--root {
+ }
- &.same--user {
+ .inner__wrap {
- .post__time {
- display: none;
- }
+ &.move--left {
+ margin-right: 0;
+ }
- }
+ }
- }
+ .post {
.post-list__content & {
@@ -106,6 +110,30 @@
}
+ }
+
+}
+
+@media screen and (max-width: 768px) {
+
+ .signup-team__container {
+ font-size: 1em;
+ }
+
+ .post {
+
+ &.same--root {
+
+ &.same--user {
+
+ .post__time {
+ display: none;
+ }
+
+ }
+
+ }
+
.post__img {
width: 40px;
diff --git a/web/sass-files/sass/partials/_search.scss b/web/sass-files/sass/partials/_search.scss
index b7f658114..0debb7e54 100644
--- a/web/sass-files/sass/partials/_search.scss
+++ b/web/sass-files/sass/partials/_search.scss
@@ -95,7 +95,6 @@
border-top: $border-gray;
padding: 10px 1em;
margin: 0;
- cursor: pointer;
&:first-child {
border: none;
@@ -107,6 +106,10 @@
}
}
+.search-item__jump {
+ margin-left: 10px;
+}
+
.search-item-time {
color: #a8adb7;
}
diff --git a/web/sass-files/sass/partials/_settings.scss b/web/sass-files/sass/partials/_settings.scss
index 0d75a42df..ad52e0bbb 100644
--- a/web/sass-files/sass/partials/_settings.scss
+++ b/web/sass-files/sass/partials/_settings.scss
@@ -37,7 +37,8 @@
label {
font-weight: 600;
}
- .no-padding--left {
+
+ .no-padding--left {
padding-left: 0;
}
.padding-top {
@@ -78,7 +79,6 @@
}
.nav {
position: fixed;
- top: 57px;
width: 179px;
&.absolute {
position: absolute;
diff --git a/web/sass-files/sass/partials/_sidebar--right.scss b/web/sass-files/sass/partials/_sidebar--right.scss
index 43162831d..735b2a99e 100644
--- a/web/sass-files/sass/partials/_sidebar--right.scss
+++ b/web/sass-files/sass/partials/_sidebar--right.scss
@@ -93,6 +93,10 @@
padding-bottom: 10px;
}
}
+
+ .suggestion-content {
+ max-height: 120px;
+ }
}
.sidebar-right-container {
diff --git a/web/sass-files/sass/partials/_suggestion_list.scss b/web/sass-files/sass/partials/_suggestion_list.scss
new file mode 100644
index 000000000..0cf3fff5f
--- /dev/null
+++ b/web/sass-files/sass/partials/_suggestion_list.scss
@@ -0,0 +1,63 @@
+.suggestion-list {
+ width: 100%;
+ z-index: 100;
+ @extend %popover-box-shadow;
+}
+
+.suggestion-list--top {
+ position: absolute;
+}
+
+.suggestion-content {
+ width: 100%;
+ max-height: 292px;
+ background-color: #fff;
+ border: $border-gray;
+ overflow-x: hidden;
+ overflow-y: scroll;
+}
+
+.suggestion-content--top {
+ position: absolute;
+ bottom: 0;
+}
+
+.suggestion--selected {
+ // set by theme code
+}
+
+.command-name {
+ position: relative;
+ width: 100%;
+ line-height: 24px;
+ padding: 5px 10px 8px;
+ z-index: 101;
+ font-size: 0.95em;
+ border-bottom: 1px solid #ddd;
+
+ .command__desc {
+ margin-left: 5px;
+ @include opacity(0.5);
+ line-height: normal;
+ }
+}
+
+.command-desc {
+ color: #a7a8ab;
+}
+
+.emoticon-suggestion {
+ width: 100%;
+ height: 36px;
+ cursor: pointer;
+ font-size: 13px;
+ line-height: 36px;
+}
+
+.emoticon-suggestion__image {
+ width: 32px;
+ height: 32px;
+ margin-right: 6px;
+ padding: 2px;
+ text-align: center;
+}
diff --git a/web/sass-files/sass/partials/_tutorial.scss b/web/sass-files/sass/partials/_tutorial.scss
index cfbc3454a..8ab29ab10 100644
--- a/web/sass-files/sass/partials/_tutorial.scss
+++ b/web/sass-files/sass/partials/_tutorial.scss
@@ -81,7 +81,7 @@
color: #fff;
@include border-radius(3px);
border: none;
- margin-bottom: 10px;
+ margin: 10px 0;
&:hover, &:active, &:focus {
color: #fff;
diff --git a/web/sass-files/sass/styles.scss b/web/sass-files/sass/styles.scss
index 01f654eec..e7fd7c976 100644
--- a/web/sass-files/sass/styles.scss
+++ b/web/sass-files/sass/styles.scss
@@ -32,7 +32,6 @@
@import "partials/modal";
@import "partials/forms";
@import "partials/mentions";
-@import "partials/command-box";
@import "partials/error";
@import "partials/error-bar";
@import "partials/loading";
@@ -40,6 +39,7 @@
@import "partials/markdown";
@import "partials/tutorial";
@import "partials/statistics";
+@import "partials/suggestion_list";
// Elements
@import "partials/tooltips";
diff --git a/web/static/images/emoji/+1.png b/web/static/images/emoji/+1.png
index 81786c1d8..26949329f 100755..100644
--- a/web/static/images/emoji/+1.png
+++ b/web/static/images/emoji/+1.png
Binary files differ
diff --git a/web/static/images/emoji/-1.png b/web/static/images/emoji/-1.png
index 41c6b825d..9b6d251b5 100755..100644
--- a/web/static/images/emoji/-1.png
+++ b/web/static/images/emoji/-1.png
Binary files differ
diff --git a/web/static/images/emoji/0023-20e3.png b/web/static/images/emoji/0023-20e3.png
new file mode 100644
index 000000000..9e4cda640
--- /dev/null
+++ b/web/static/images/emoji/0023-20e3.png
Binary files differ
diff --git a/web/static/images/emoji/0030-20e3.png b/web/static/images/emoji/0030-20e3.png
new file mode 100644
index 000000000..56e4e0672
--- /dev/null
+++ b/web/static/images/emoji/0030-20e3.png
Binary files differ
diff --git a/web/static/images/emoji/0031-20e3.png b/web/static/images/emoji/0031-20e3.png
new file mode 100644
index 000000000..b10ef8c0c
--- /dev/null
+++ b/web/static/images/emoji/0031-20e3.png
Binary files differ
diff --git a/web/static/images/emoji/0032-20e3.png b/web/static/images/emoji/0032-20e3.png
new file mode 100644
index 000000000..a062ea93a
--- /dev/null
+++ b/web/static/images/emoji/0032-20e3.png
Binary files differ
diff --git a/web/static/images/emoji/0033-20e3.png b/web/static/images/emoji/0033-20e3.png
new file mode 100644
index 000000000..96ac84050
--- /dev/null
+++ b/web/static/images/emoji/0033-20e3.png
Binary files differ
diff --git a/web/static/images/emoji/0034-20e3.png b/web/static/images/emoji/0034-20e3.png
new file mode 100644
index 000000000..a8b4dc052
--- /dev/null
+++ b/web/static/images/emoji/0034-20e3.png
Binary files differ
diff --git a/web/static/images/emoji/0035-20e3.png b/web/static/images/emoji/0035-20e3.png
new file mode 100644
index 000000000..9b527aeb7
--- /dev/null
+++ b/web/static/images/emoji/0035-20e3.png
Binary files differ
diff --git a/web/static/images/emoji/0036-20e3.png b/web/static/images/emoji/0036-20e3.png
new file mode 100644
index 000000000..cd0b30fd2
--- /dev/null
+++ b/web/static/images/emoji/0036-20e3.png
Binary files differ
diff --git a/web/static/images/emoji/0037-20e3.png b/web/static/images/emoji/0037-20e3.png
new file mode 100644
index 000000000..33151fdba
--- /dev/null
+++ b/web/static/images/emoji/0037-20e3.png
Binary files differ
diff --git a/web/static/images/emoji/0038-20e3.png b/web/static/images/emoji/0038-20e3.png
new file mode 100644
index 000000000..48c5ca813
--- /dev/null
+++ b/web/static/images/emoji/0038-20e3.png
Binary files differ
diff --git a/web/static/images/emoji/0039-20e3.png b/web/static/images/emoji/0039-20e3.png
new file mode 100644
index 000000000..e6b38a109
--- /dev/null
+++ b/web/static/images/emoji/0039-20e3.png
Binary files differ
diff --git a/web/static/images/emoji/00a9.png b/web/static/images/emoji/00a9.png
new file mode 100644
index 000000000..9872c5b7e
--- /dev/null
+++ b/web/static/images/emoji/00a9.png
Binary files differ
diff --git a/web/static/images/emoji/00ae.png b/web/static/images/emoji/00ae.png
new file mode 100644
index 000000000..68d445daf
--- /dev/null
+++ b/web/static/images/emoji/00ae.png
Binary files differ
diff --git a/web/static/images/emoji/100.png b/web/static/images/emoji/100.png
index ca3bb9bcf..cd308ad66 100755..100644
--- a/web/static/images/emoji/100.png
+++ b/web/static/images/emoji/100.png
Binary files differ
diff --git a/web/static/images/emoji/1234.png b/web/static/images/emoji/1234.png
index c47c2e1f9..17ec5f12a 100755..100644
--- a/web/static/images/emoji/1234.png
+++ b/web/static/images/emoji/1234.png
Binary files differ
diff --git a/web/static/images/emoji/1f004.png b/web/static/images/emoji/1f004.png
new file mode 100644
index 000000000..16a59d954
--- /dev/null
+++ b/web/static/images/emoji/1f004.png
Binary files differ
diff --git a/web/static/images/emoji/1f0cf.png b/web/static/images/emoji/1f0cf.png
new file mode 100644
index 000000000..1cbc43e84
--- /dev/null
+++ b/web/static/images/emoji/1f0cf.png
Binary files differ
diff --git a/web/static/images/emoji/1f170.png b/web/static/images/emoji/1f170.png
new file mode 100644
index 000000000..7b1f9663c
--- /dev/null
+++ b/web/static/images/emoji/1f170.png
Binary files differ
diff --git a/web/static/images/emoji/1f171.png b/web/static/images/emoji/1f171.png
new file mode 100644
index 000000000..cf87ad1fc
--- /dev/null
+++ b/web/static/images/emoji/1f171.png
Binary files differ
diff --git a/web/static/images/emoji/1f17e.png b/web/static/images/emoji/1f17e.png
new file mode 100644
index 000000000..b39215725
--- /dev/null
+++ b/web/static/images/emoji/1f17e.png
Binary files differ
diff --git a/web/static/images/emoji/1f17f.png b/web/static/images/emoji/1f17f.png
new file mode 100644
index 000000000..340033226
--- /dev/null
+++ b/web/static/images/emoji/1f17f.png
Binary files differ
diff --git a/web/static/images/emoji/1f18e.png b/web/static/images/emoji/1f18e.png
new file mode 100644
index 000000000..386ec09fe
--- /dev/null
+++ b/web/static/images/emoji/1f18e.png
Binary files differ
diff --git a/web/static/images/emoji/1f191.png b/web/static/images/emoji/1f191.png
new file mode 100644
index 000000000..ccd6494e6
--- /dev/null
+++ b/web/static/images/emoji/1f191.png
Binary files differ
diff --git a/web/static/images/emoji/1f192.png b/web/static/images/emoji/1f192.png
new file mode 100644
index 000000000..07c22b8c5
--- /dev/null
+++ b/web/static/images/emoji/1f192.png
Binary files differ
diff --git a/web/static/images/emoji/1f193.png b/web/static/images/emoji/1f193.png
new file mode 100644
index 000000000..0da6a1112
--- /dev/null
+++ b/web/static/images/emoji/1f193.png
Binary files differ
diff --git a/web/static/images/emoji/1f194.png b/web/static/images/emoji/1f194.png
new file mode 100644
index 000000000..3ae8bc2b9
--- /dev/null
+++ b/web/static/images/emoji/1f194.png
Binary files differ
diff --git a/web/static/images/emoji/1f195.png b/web/static/images/emoji/1f195.png
new file mode 100644
index 000000000..9d9f89101
--- /dev/null
+++ b/web/static/images/emoji/1f195.png
Binary files differ
diff --git a/web/static/images/emoji/1f196.png b/web/static/images/emoji/1f196.png
new file mode 100644
index 000000000..cc45e9df2
--- /dev/null
+++ b/web/static/images/emoji/1f196.png
Binary files differ
diff --git a/web/static/images/emoji/1f197.png b/web/static/images/emoji/1f197.png
new file mode 100644
index 000000000..ffa868d43
--- /dev/null
+++ b/web/static/images/emoji/1f197.png
Binary files differ
diff --git a/web/static/images/emoji/1f198.png b/web/static/images/emoji/1f198.png
new file mode 100644
index 000000000..4af944919
--- /dev/null
+++ b/web/static/images/emoji/1f198.png
Binary files differ
diff --git a/web/static/images/emoji/1f199.png b/web/static/images/emoji/1f199.png
new file mode 100644
index 000000000..aa7974ec1
--- /dev/null
+++ b/web/static/images/emoji/1f199.png
Binary files differ
diff --git a/web/static/images/emoji/1f19a.png b/web/static/images/emoji/1f19a.png
new file mode 100644
index 000000000..327337277
--- /dev/null
+++ b/web/static/images/emoji/1f19a.png
Binary files differ
diff --git a/web/static/images/emoji/1f1e6-1f1e8.png b/web/static/images/emoji/1f1e6-1f1e8.png
new file mode 100644
index 000000000..56115ba78
--- /dev/null
+++ b/web/static/images/emoji/1f1e6-1f1e8.png
Binary files differ
diff --git a/web/static/images/emoji/1f1e6-1f1e9.png b/web/static/images/emoji/1f1e6-1f1e9.png
new file mode 100644
index 000000000..d3fabc4b0
--- /dev/null
+++ b/web/static/images/emoji/1f1e6-1f1e9.png
Binary files differ
diff --git a/web/static/images/emoji/1f1e6-1f1ea.png b/web/static/images/emoji/1f1e6-1f1ea.png
new file mode 100644
index 000000000..57cade93b
--- /dev/null
+++ b/web/static/images/emoji/1f1e6-1f1ea.png
Binary files differ
diff --git a/web/static/images/emoji/1f1e6-1f1eb.png b/web/static/images/emoji/1f1e6-1f1eb.png
new file mode 100644
index 000000000..af7e886df
--- /dev/null
+++ b/web/static/images/emoji/1f1e6-1f1eb.png
Binary files differ
diff --git a/web/static/images/emoji/1f1e6-1f1ec.png b/web/static/images/emoji/1f1e6-1f1ec.png
new file mode 100644
index 000000000..9e2dc805e
--- /dev/null
+++ b/web/static/images/emoji/1f1e6-1f1ec.png
Binary files differ
diff --git a/web/static/images/emoji/1f1e6-1f1ee.png b/web/static/images/emoji/1f1e6-1f1ee.png
new file mode 100644
index 000000000..2046a5a83
--- /dev/null
+++ b/web/static/images/emoji/1f1e6-1f1ee.png
Binary files differ
diff --git a/web/static/images/emoji/1f1e6-1f1f1.png b/web/static/images/emoji/1f1e6-1f1f1.png
new file mode 100644
index 000000000..0c76f4af4
--- /dev/null
+++ b/web/static/images/emoji/1f1e6-1f1f1.png
Binary files differ
diff --git a/web/static/images/emoji/1f1e6-1f1f2.png b/web/static/images/emoji/1f1e6-1f1f2.png
new file mode 100644
index 000000000..1e39fe1fe
--- /dev/null
+++ b/web/static/images/emoji/1f1e6-1f1f2.png
Binary files differ
diff --git a/web/static/images/emoji/1f1e6-1f1f4.png b/web/static/images/emoji/1f1e6-1f1f4.png
new file mode 100644
index 000000000..01a469e9e
--- /dev/null
+++ b/web/static/images/emoji/1f1e6-1f1f4.png
Binary files differ
diff --git a/web/static/images/emoji/1f1e6-1f1f7.png b/web/static/images/emoji/1f1e6-1f1f7.png
new file mode 100644
index 000000000..603697bad
--- /dev/null
+++ b/web/static/images/emoji/1f1e6-1f1f7.png
Binary files differ
diff --git a/web/static/images/emoji/1f1e6-1f1f9.png b/web/static/images/emoji/1f1e6-1f1f9.png
new file mode 100644
index 000000000..38988f737
--- /dev/null
+++ b/web/static/images/emoji/1f1e6-1f1f9.png
Binary files differ
diff --git a/web/static/images/emoji/1f1e6-1f1fa.png b/web/static/images/emoji/1f1e6-1f1fa.png
new file mode 100644
index 000000000..fdc448c91
--- /dev/null
+++ b/web/static/images/emoji/1f1e6-1f1fa.png
Binary files differ
diff --git a/web/static/images/emoji/1f1e6-1f1fc.png b/web/static/images/emoji/1f1e6-1f1fc.png
new file mode 100644
index 000000000..fda4d0b19
--- /dev/null
+++ b/web/static/images/emoji/1f1e6-1f1fc.png
Binary files differ
diff --git a/web/static/images/emoji/1f1e6-1f1ff.png b/web/static/images/emoji/1f1e6-1f1ff.png
new file mode 100644
index 000000000..3efb55bfc
--- /dev/null
+++ b/web/static/images/emoji/1f1e6-1f1ff.png
Binary files differ
diff --git a/web/static/images/emoji/1f1e7-1f1e6.png b/web/static/images/emoji/1f1e7-1f1e6.png
new file mode 100644
index 000000000..47028b1f2
--- /dev/null
+++ b/web/static/images/emoji/1f1e7-1f1e6.png
Binary files differ
diff --git a/web/static/images/emoji/1f1e7-1f1e7.png b/web/static/images/emoji/1f1e7-1f1e7.png
new file mode 100644
index 000000000..8bfb6fcb0
--- /dev/null
+++ b/web/static/images/emoji/1f1e7-1f1e7.png
Binary files differ
diff --git a/web/static/images/emoji/1f1e7-1f1e9.png b/web/static/images/emoji/1f1e7-1f1e9.png
new file mode 100644
index 000000000..a4b7928c8
--- /dev/null
+++ b/web/static/images/emoji/1f1e7-1f1e9.png
Binary files differ
diff --git a/web/static/images/emoji/1f1e7-1f1ea.png b/web/static/images/emoji/1f1e7-1f1ea.png
new file mode 100644
index 000000000..f996f6fc0
--- /dev/null
+++ b/web/static/images/emoji/1f1e7-1f1ea.png
Binary files differ
diff --git a/web/static/images/emoji/1f1e7-1f1eb.png b/web/static/images/emoji/1f1e7-1f1eb.png
new file mode 100644
index 000000000..185eb5a92
--- /dev/null
+++ b/web/static/images/emoji/1f1e7-1f1eb.png
Binary files differ
diff --git a/web/static/images/emoji/1f1e7-1f1ec.png b/web/static/images/emoji/1f1e7-1f1ec.png
new file mode 100644
index 000000000..849c68a22
--- /dev/null
+++ b/web/static/images/emoji/1f1e7-1f1ec.png
Binary files differ
diff --git a/web/static/images/emoji/1f1e7-1f1ed.png b/web/static/images/emoji/1f1e7-1f1ed.png
new file mode 100644
index 000000000..b0cabb344
--- /dev/null
+++ b/web/static/images/emoji/1f1e7-1f1ed.png
Binary files differ
diff --git a/web/static/images/emoji/1f1e7-1f1ee.png b/web/static/images/emoji/1f1e7-1f1ee.png
new file mode 100644
index 000000000..b2de6ba9d
--- /dev/null
+++ b/web/static/images/emoji/1f1e7-1f1ee.png
Binary files differ
diff --git a/web/static/images/emoji/1f1e7-1f1ef.png b/web/static/images/emoji/1f1e7-1f1ef.png
new file mode 100644
index 000000000..6023c7286
--- /dev/null
+++ b/web/static/images/emoji/1f1e7-1f1ef.png
Binary files differ
diff --git a/web/static/images/emoji/1f1e7-1f1f2.png b/web/static/images/emoji/1f1e7-1f1f2.png
new file mode 100644
index 000000000..cce7665e5
--- /dev/null
+++ b/web/static/images/emoji/1f1e7-1f1f2.png
Binary files differ
diff --git a/web/static/images/emoji/1f1e7-1f1f3.png b/web/static/images/emoji/1f1e7-1f1f3.png
new file mode 100644
index 000000000..37ffaaf4a
--- /dev/null
+++ b/web/static/images/emoji/1f1e7-1f1f3.png
Binary files differ
diff --git a/web/static/images/emoji/1f1e7-1f1f4.png b/web/static/images/emoji/1f1e7-1f1f4.png
new file mode 100644
index 000000000..9e7b9bd6d
--- /dev/null
+++ b/web/static/images/emoji/1f1e7-1f1f4.png
Binary files differ
diff --git a/web/static/images/emoji/1f1e7-1f1f7.png b/web/static/images/emoji/1f1e7-1f1f7.png
new file mode 100644
index 000000000..1218801ec
--- /dev/null
+++ b/web/static/images/emoji/1f1e7-1f1f7.png
Binary files differ
diff --git a/web/static/images/emoji/1f1e7-1f1f8.png b/web/static/images/emoji/1f1e7-1f1f8.png
new file mode 100644
index 000000000..56304afc5
--- /dev/null
+++ b/web/static/images/emoji/1f1e7-1f1f8.png
Binary files differ
diff --git a/web/static/images/emoji/1f1e7-1f1f9.png b/web/static/images/emoji/1f1e7-1f1f9.png
new file mode 100644
index 000000000..5419aeeb3
--- /dev/null
+++ b/web/static/images/emoji/1f1e7-1f1f9.png
Binary files differ
diff --git a/web/static/images/emoji/1f1e7-1f1fc.png b/web/static/images/emoji/1f1e7-1f1fc.png
new file mode 100644
index 000000000..b82b4e244
--- /dev/null
+++ b/web/static/images/emoji/1f1e7-1f1fc.png
Binary files differ
diff --git a/web/static/images/emoji/1f1e7-1f1fe.png b/web/static/images/emoji/1f1e7-1f1fe.png
new file mode 100644
index 000000000..fbf36a528
--- /dev/null
+++ b/web/static/images/emoji/1f1e7-1f1fe.png
Binary files differ
diff --git a/web/static/images/emoji/1f1e7-1f1ff.png b/web/static/images/emoji/1f1e7-1f1ff.png
new file mode 100644
index 000000000..4e300a7a9
--- /dev/null
+++ b/web/static/images/emoji/1f1e7-1f1ff.png
Binary files differ
diff --git a/web/static/images/emoji/1f1e8-1f1e6.png b/web/static/images/emoji/1f1e8-1f1e6.png
new file mode 100644
index 000000000..2838b5e82
--- /dev/null
+++ b/web/static/images/emoji/1f1e8-1f1e6.png
Binary files differ
diff --git a/web/static/images/emoji/1f1e8-1f1e9.png b/web/static/images/emoji/1f1e8-1f1e9.png
new file mode 100644
index 000000000..b7620b487
--- /dev/null
+++ b/web/static/images/emoji/1f1e8-1f1e9.png
Binary files differ
diff --git a/web/static/images/emoji/1f1e8-1f1eb.png b/web/static/images/emoji/1f1e8-1f1eb.png
new file mode 100644
index 000000000..32accc631
--- /dev/null
+++ b/web/static/images/emoji/1f1e8-1f1eb.png
Binary files differ
diff --git a/web/static/images/emoji/1f1e8-1f1ec.png b/web/static/images/emoji/1f1e8-1f1ec.png
new file mode 100644
index 000000000..51d0cb55b
--- /dev/null
+++ b/web/static/images/emoji/1f1e8-1f1ec.png
Binary files differ
diff --git a/web/static/images/emoji/1f1e8-1f1ed.png b/web/static/images/emoji/1f1e8-1f1ed.png
new file mode 100644
index 000000000..53f7c0496
--- /dev/null
+++ b/web/static/images/emoji/1f1e8-1f1ed.png
Binary files differ
diff --git a/web/static/images/emoji/1f1e8-1f1ee.png b/web/static/images/emoji/1f1e8-1f1ee.png
new file mode 100644
index 000000000..3a1fb1946
--- /dev/null
+++ b/web/static/images/emoji/1f1e8-1f1ee.png
Binary files differ
diff --git a/web/static/images/emoji/1f1e8-1f1f1.png b/web/static/images/emoji/1f1e8-1f1f1.png
new file mode 100644
index 000000000..ebbf710d2
--- /dev/null
+++ b/web/static/images/emoji/1f1e8-1f1f1.png
Binary files differ
diff --git a/web/static/images/emoji/1f1e8-1f1f2.png b/web/static/images/emoji/1f1e8-1f1f2.png
new file mode 100644
index 000000000..71024ac1c
--- /dev/null
+++ b/web/static/images/emoji/1f1e8-1f1f2.png
Binary files differ
diff --git a/web/static/images/emoji/1f1e8-1f1f3.png b/web/static/images/emoji/1f1e8-1f1f3.png
new file mode 100644
index 000000000..0151923f3
--- /dev/null
+++ b/web/static/images/emoji/1f1e8-1f1f3.png
Binary files differ
diff --git a/web/static/images/emoji/1f1e8-1f1f4.png b/web/static/images/emoji/1f1e8-1f1f4.png
new file mode 100644
index 000000000..b64536ac3
--- /dev/null
+++ b/web/static/images/emoji/1f1e8-1f1f4.png
Binary files differ
diff --git a/web/static/images/emoji/1f1e8-1f1f7.png b/web/static/images/emoji/1f1e8-1f1f7.png
new file mode 100644
index 000000000..74612a90e
--- /dev/null
+++ b/web/static/images/emoji/1f1e8-1f1f7.png
Binary files differ
diff --git a/web/static/images/emoji/1f1e8-1f1fa.png b/web/static/images/emoji/1f1e8-1f1fa.png
new file mode 100644
index 000000000..37a9cc10b
--- /dev/null
+++ b/web/static/images/emoji/1f1e8-1f1fa.png
Binary files differ
diff --git a/web/static/images/emoji/1f1e8-1f1fb.png b/web/static/images/emoji/1f1e8-1f1fb.png
new file mode 100644
index 000000000..7a6a41e90
--- /dev/null
+++ b/web/static/images/emoji/1f1e8-1f1fb.png
Binary files differ
diff --git a/web/static/images/emoji/1f1e8-1f1fe.png b/web/static/images/emoji/1f1e8-1f1fe.png
new file mode 100644
index 000000000..4f593449a
--- /dev/null
+++ b/web/static/images/emoji/1f1e8-1f1fe.png
Binary files differ
diff --git a/web/static/images/emoji/1f1e8-1f1ff.png b/web/static/images/emoji/1f1e8-1f1ff.png
new file mode 100644
index 000000000..aa9a40c74
--- /dev/null
+++ b/web/static/images/emoji/1f1e8-1f1ff.png
Binary files differ
diff --git a/web/static/images/emoji/1f1e9-1f1ea.png b/web/static/images/emoji/1f1e9-1f1ea.png
new file mode 100644
index 000000000..168ab43c3
--- /dev/null
+++ b/web/static/images/emoji/1f1e9-1f1ea.png
Binary files differ
diff --git a/web/static/images/emoji/1f1e9-1f1ef.png b/web/static/images/emoji/1f1e9-1f1ef.png
new file mode 100644
index 000000000..ba0833714
--- /dev/null
+++ b/web/static/images/emoji/1f1e9-1f1ef.png
Binary files differ
diff --git a/web/static/images/emoji/1f1e9-1f1f0.png b/web/static/images/emoji/1f1e9-1f1f0.png
new file mode 100644
index 000000000..2e6b7a624
--- /dev/null
+++ b/web/static/images/emoji/1f1e9-1f1f0.png
Binary files differ
diff --git a/web/static/images/emoji/1f1e9-1f1f2.png b/web/static/images/emoji/1f1e9-1f1f2.png
new file mode 100644
index 000000000..1b90463e5
--- /dev/null
+++ b/web/static/images/emoji/1f1e9-1f1f2.png
Binary files differ
diff --git a/web/static/images/emoji/1f1e9-1f1f4.png b/web/static/images/emoji/1f1e9-1f1f4.png
new file mode 100644
index 000000000..d5c1ac5ba
--- /dev/null
+++ b/web/static/images/emoji/1f1e9-1f1f4.png
Binary files differ
diff --git a/web/static/images/emoji/1f1e9-1f1ff.png b/web/static/images/emoji/1f1e9-1f1ff.png
new file mode 100644
index 000000000..a778a7995
--- /dev/null
+++ b/web/static/images/emoji/1f1e9-1f1ff.png
Binary files differ
diff --git a/web/static/images/emoji/1f1ea-1f1e8.png b/web/static/images/emoji/1f1ea-1f1e8.png
new file mode 100644
index 000000000..7f40f138d
--- /dev/null
+++ b/web/static/images/emoji/1f1ea-1f1e8.png
Binary files differ
diff --git a/web/static/images/emoji/1f1ea-1f1ea.png b/web/static/images/emoji/1f1ea-1f1ea.png
new file mode 100644
index 000000000..1aa45dc2a
--- /dev/null
+++ b/web/static/images/emoji/1f1ea-1f1ea.png
Binary files differ
diff --git a/web/static/images/emoji/1f1ea-1f1ec.png b/web/static/images/emoji/1f1ea-1f1ec.png
new file mode 100644
index 000000000..5904bfac9
--- /dev/null
+++ b/web/static/images/emoji/1f1ea-1f1ec.png
Binary files differ
diff --git a/web/static/images/emoji/1f1ea-1f1ed.png b/web/static/images/emoji/1f1ea-1f1ed.png
new file mode 100644
index 000000000..5c1bf6134
--- /dev/null
+++ b/web/static/images/emoji/1f1ea-1f1ed.png
Binary files differ
diff --git a/web/static/images/emoji/1f1ea-1f1f7.png b/web/static/images/emoji/1f1ea-1f1f7.png
new file mode 100644
index 000000000..fa4f25eed
--- /dev/null
+++ b/web/static/images/emoji/1f1ea-1f1f7.png
Binary files differ
diff --git a/web/static/images/emoji/1f1ea-1f1f8.png b/web/static/images/emoji/1f1ea-1f1f8.png
new file mode 100644
index 000000000..16a772cd1
--- /dev/null
+++ b/web/static/images/emoji/1f1ea-1f1f8.png
Binary files differ
diff --git a/web/static/images/emoji/1f1ea-1f1f9.png b/web/static/images/emoji/1f1ea-1f1f9.png
new file mode 100644
index 000000000..4833e8431
--- /dev/null
+++ b/web/static/images/emoji/1f1ea-1f1f9.png
Binary files differ
diff --git a/web/static/images/emoji/1f1eb-1f1ee.png b/web/static/images/emoji/1f1eb-1f1ee.png
new file mode 100644
index 000000000..b2a5c3d24
--- /dev/null
+++ b/web/static/images/emoji/1f1eb-1f1ee.png
Binary files differ
diff --git a/web/static/images/emoji/1f1eb-1f1ef.png b/web/static/images/emoji/1f1eb-1f1ef.png
new file mode 100644
index 000000000..a7a731e6f
--- /dev/null
+++ b/web/static/images/emoji/1f1eb-1f1ef.png
Binary files differ
diff --git a/web/static/images/emoji/1f1eb-1f1f0.png b/web/static/images/emoji/1f1eb-1f1f0.png
new file mode 100644
index 000000000..c4562eaa6
--- /dev/null
+++ b/web/static/images/emoji/1f1eb-1f1f0.png
Binary files differ
diff --git a/web/static/images/emoji/1f1eb-1f1f2.png b/web/static/images/emoji/1f1eb-1f1f2.png
new file mode 100644
index 000000000..42fe76312
--- /dev/null
+++ b/web/static/images/emoji/1f1eb-1f1f2.png
Binary files differ
diff --git a/web/static/images/emoji/1f1eb-1f1f4.png b/web/static/images/emoji/1f1eb-1f1f4.png
new file mode 100644
index 000000000..e9d8e4cf4
--- /dev/null
+++ b/web/static/images/emoji/1f1eb-1f1f4.png
Binary files differ
diff --git a/web/static/images/emoji/1f1eb-1f1f7.png b/web/static/images/emoji/1f1eb-1f1f7.png
new file mode 100644
index 000000000..14271f059
--- /dev/null
+++ b/web/static/images/emoji/1f1eb-1f1f7.png
Binary files differ
diff --git a/web/static/images/emoji/1f1ec-1f1e6.png b/web/static/images/emoji/1f1ec-1f1e6.png
new file mode 100644
index 000000000..4a3b5ccf9
--- /dev/null
+++ b/web/static/images/emoji/1f1ec-1f1e6.png
Binary files differ
diff --git a/web/static/images/emoji/1f1ec-1f1e7.png b/web/static/images/emoji/1f1ec-1f1e7.png
new file mode 100644
index 000000000..61c03f759
--- /dev/null
+++ b/web/static/images/emoji/1f1ec-1f1e7.png
Binary files differ
diff --git a/web/static/images/emoji/1f1ec-1f1e9.png b/web/static/images/emoji/1f1ec-1f1e9.png
new file mode 100644
index 000000000..4f9dc82d7
--- /dev/null
+++ b/web/static/images/emoji/1f1ec-1f1e9.png
Binary files differ
diff --git a/web/static/images/emoji/1f1ec-1f1ea.png b/web/static/images/emoji/1f1ec-1f1ea.png
new file mode 100644
index 000000000..1fe16f968
--- /dev/null
+++ b/web/static/images/emoji/1f1ec-1f1ea.png
Binary files differ
diff --git a/web/static/images/emoji/1f1ec-1f1ed.png b/web/static/images/emoji/1f1ec-1f1ed.png
new file mode 100644
index 000000000..0aadf4db2
--- /dev/null
+++ b/web/static/images/emoji/1f1ec-1f1ed.png
Binary files differ
diff --git a/web/static/images/emoji/1f1ec-1f1ee.png b/web/static/images/emoji/1f1ec-1f1ee.png
new file mode 100644
index 000000000..e95abe51f
--- /dev/null
+++ b/web/static/images/emoji/1f1ec-1f1ee.png
Binary files differ
diff --git a/web/static/images/emoji/1f1ec-1f1f1.png b/web/static/images/emoji/1f1ec-1f1f1.png
new file mode 100644
index 000000000..76708a55f
--- /dev/null
+++ b/web/static/images/emoji/1f1ec-1f1f1.png
Binary files differ
diff --git a/web/static/images/emoji/1f1ec-1f1f2.png b/web/static/images/emoji/1f1ec-1f1f2.png
new file mode 100644
index 000000000..c5a72895f
--- /dev/null
+++ b/web/static/images/emoji/1f1ec-1f1f2.png
Binary files differ
diff --git a/web/static/images/emoji/1f1ec-1f1f3.png b/web/static/images/emoji/1f1ec-1f1f3.png
new file mode 100644
index 000000000..fdd5c2d14
--- /dev/null
+++ b/web/static/images/emoji/1f1ec-1f1f3.png
Binary files differ
diff --git a/web/static/images/emoji/1f1ec-1f1f6.png b/web/static/images/emoji/1f1ec-1f1f6.png
new file mode 100644
index 000000000..7fc7c86c8
--- /dev/null
+++ b/web/static/images/emoji/1f1ec-1f1f6.png
Binary files differ
diff --git a/web/static/images/emoji/1f1ec-1f1f7.png b/web/static/images/emoji/1f1ec-1f1f7.png
new file mode 100644
index 000000000..091f1ab07
--- /dev/null
+++ b/web/static/images/emoji/1f1ec-1f1f7.png
Binary files differ
diff --git a/web/static/images/emoji/1f1ec-1f1f9.png b/web/static/images/emoji/1f1ec-1f1f9.png
new file mode 100644
index 000000000..66437d0de
--- /dev/null
+++ b/web/static/images/emoji/1f1ec-1f1f9.png
Binary files differ
diff --git a/web/static/images/emoji/1f1ec-1f1fa.png b/web/static/images/emoji/1f1ec-1f1fa.png
new file mode 100644
index 000000000..a4d2024b1
--- /dev/null
+++ b/web/static/images/emoji/1f1ec-1f1fa.png
Binary files differ
diff --git a/web/static/images/emoji/1f1ec-1f1fc.png b/web/static/images/emoji/1f1ec-1f1fc.png
new file mode 100644
index 000000000..a70abe908
--- /dev/null
+++ b/web/static/images/emoji/1f1ec-1f1fc.png
Binary files differ
diff --git a/web/static/images/emoji/1f1ec-1f1fe.png b/web/static/images/emoji/1f1ec-1f1fe.png
new file mode 100644
index 000000000..2cc8ecaab
--- /dev/null
+++ b/web/static/images/emoji/1f1ec-1f1fe.png
Binary files differ
diff --git a/web/static/images/emoji/1f1ed-1f1f0.png b/web/static/images/emoji/1f1ed-1f1f0.png
new file mode 100644
index 000000000..cff8e25fd
--- /dev/null
+++ b/web/static/images/emoji/1f1ed-1f1f0.png
Binary files differ
diff --git a/web/static/images/emoji/1f1ed-1f1f3.png b/web/static/images/emoji/1f1ed-1f1f3.png
new file mode 100644
index 000000000..e4eeee2d8
--- /dev/null
+++ b/web/static/images/emoji/1f1ed-1f1f3.png
Binary files differ
diff --git a/web/static/images/emoji/1f1ed-1f1f7.png b/web/static/images/emoji/1f1ed-1f1f7.png
new file mode 100644
index 000000000..be0823c21
--- /dev/null
+++ b/web/static/images/emoji/1f1ed-1f1f7.png
Binary files differ
diff --git a/web/static/images/emoji/1f1ed-1f1f9.png b/web/static/images/emoji/1f1ed-1f1f9.png
new file mode 100644
index 000000000..76d3d94ad
--- /dev/null
+++ b/web/static/images/emoji/1f1ed-1f1f9.png
Binary files differ
diff --git a/web/static/images/emoji/1f1ed-1f1fa.png b/web/static/images/emoji/1f1ed-1f1fa.png
new file mode 100644
index 000000000..028f853dd
--- /dev/null
+++ b/web/static/images/emoji/1f1ed-1f1fa.png
Binary files differ
diff --git a/web/static/images/emoji/1f1ee-1f1e9.png b/web/static/images/emoji/1f1ee-1f1e9.png
new file mode 100644
index 000000000..90042acf5
--- /dev/null
+++ b/web/static/images/emoji/1f1ee-1f1e9.png
Binary files differ
diff --git a/web/static/images/emoji/1f1ee-1f1ea.png b/web/static/images/emoji/1f1ee-1f1ea.png
new file mode 100644
index 000000000..63ae4af61
--- /dev/null
+++ b/web/static/images/emoji/1f1ee-1f1ea.png
Binary files differ
diff --git a/web/static/images/emoji/1f1ee-1f1f1.png b/web/static/images/emoji/1f1ee-1f1f1.png
new file mode 100644
index 000000000..8361d8ee3
--- /dev/null
+++ b/web/static/images/emoji/1f1ee-1f1f1.png
Binary files differ
diff --git a/web/static/images/emoji/1f1ee-1f1f3.png b/web/static/images/emoji/1f1ee-1f1f3.png
new file mode 100644
index 000000000..6d6f944c4
--- /dev/null
+++ b/web/static/images/emoji/1f1ee-1f1f3.png
Binary files differ
diff --git a/web/static/images/emoji/1f1ee-1f1f6.png b/web/static/images/emoji/1f1ee-1f1f6.png
new file mode 100644
index 000000000..5fb5d4e3b
--- /dev/null
+++ b/web/static/images/emoji/1f1ee-1f1f6.png
Binary files differ
diff --git a/web/static/images/emoji/1f1ee-1f1f7.png b/web/static/images/emoji/1f1ee-1f1f7.png
new file mode 100644
index 000000000..23f916063
--- /dev/null
+++ b/web/static/images/emoji/1f1ee-1f1f7.png
Binary files differ
diff --git a/web/static/images/emoji/1f1ee-1f1f8.png b/web/static/images/emoji/1f1ee-1f1f8.png
new file mode 100644
index 000000000..7f2b34832
--- /dev/null
+++ b/web/static/images/emoji/1f1ee-1f1f8.png
Binary files differ
diff --git a/web/static/images/emoji/1f1ee-1f1f9.png b/web/static/images/emoji/1f1ee-1f1f9.png
new file mode 100644
index 000000000..bce062350
--- /dev/null
+++ b/web/static/images/emoji/1f1ee-1f1f9.png
Binary files differ
diff --git a/web/static/images/emoji/1f1ef-1f1ea.png b/web/static/images/emoji/1f1ef-1f1ea.png
new file mode 100644
index 000000000..822b4340d
--- /dev/null
+++ b/web/static/images/emoji/1f1ef-1f1ea.png
Binary files differ
diff --git a/web/static/images/emoji/1f1ef-1f1f2.png b/web/static/images/emoji/1f1ef-1f1f2.png
new file mode 100644
index 000000000..f179b1404
--- /dev/null
+++ b/web/static/images/emoji/1f1ef-1f1f2.png
Binary files differ
diff --git a/web/static/images/emoji/1f1ef-1f1f4.png b/web/static/images/emoji/1f1ef-1f1f4.png
new file mode 100644
index 000000000..15be546e8
--- /dev/null
+++ b/web/static/images/emoji/1f1ef-1f1f4.png
Binary files differ
diff --git a/web/static/images/emoji/1f1ef-1f1f5.png b/web/static/images/emoji/1f1ef-1f1f5.png
new file mode 100644
index 000000000..56390ce22
--- /dev/null
+++ b/web/static/images/emoji/1f1ef-1f1f5.png
Binary files differ
diff --git a/web/static/images/emoji/1f1f0-1f1ea.png b/web/static/images/emoji/1f1f0-1f1ea.png
new file mode 100644
index 000000000..301bf6eec
--- /dev/null
+++ b/web/static/images/emoji/1f1f0-1f1ea.png
Binary files differ
diff --git a/web/static/images/emoji/1f1f0-1f1ec.png b/web/static/images/emoji/1f1f0-1f1ec.png
new file mode 100644
index 000000000..6845412e8
--- /dev/null
+++ b/web/static/images/emoji/1f1f0-1f1ec.png
Binary files differ
diff --git a/web/static/images/emoji/1f1f0-1f1ed.png b/web/static/images/emoji/1f1f0-1f1ed.png
new file mode 100644
index 000000000..15ccea7a4
--- /dev/null
+++ b/web/static/images/emoji/1f1f0-1f1ed.png
Binary files differ
diff --git a/web/static/images/emoji/1f1f0-1f1ee.png b/web/static/images/emoji/1f1f0-1f1ee.png
new file mode 100644
index 000000000..79331c5de
--- /dev/null
+++ b/web/static/images/emoji/1f1f0-1f1ee.png
Binary files differ
diff --git a/web/static/images/emoji/1f1f0-1f1f2.png b/web/static/images/emoji/1f1f0-1f1f2.png
new file mode 100644
index 000000000..9a16139aa
--- /dev/null
+++ b/web/static/images/emoji/1f1f0-1f1f2.png
Binary files differ
diff --git a/web/static/images/emoji/1f1f0-1f1f3.png b/web/static/images/emoji/1f1f0-1f1f3.png
new file mode 100644
index 000000000..913f6dfb7
--- /dev/null
+++ b/web/static/images/emoji/1f1f0-1f1f3.png
Binary files differ
diff --git a/web/static/images/emoji/1f1f0-1f1f5.png b/web/static/images/emoji/1f1f0-1f1f5.png
new file mode 100644
index 000000000..cb50e9380
--- /dev/null
+++ b/web/static/images/emoji/1f1f0-1f1f5.png
Binary files differ
diff --git a/web/static/images/emoji/1f1f0-1f1f7.png b/web/static/images/emoji/1f1f0-1f1f7.png
new file mode 100644
index 000000000..6687991f3
--- /dev/null
+++ b/web/static/images/emoji/1f1f0-1f1f7.png
Binary files differ
diff --git a/web/static/images/emoji/1f1f0-1f1fc.png b/web/static/images/emoji/1f1f0-1f1fc.png
new file mode 100644
index 000000000..72ef3415f
--- /dev/null
+++ b/web/static/images/emoji/1f1f0-1f1fc.png
Binary files differ
diff --git a/web/static/images/emoji/1f1f0-1f1fe.png b/web/static/images/emoji/1f1f0-1f1fe.png
new file mode 100644
index 000000000..d716ddcd5
--- /dev/null
+++ b/web/static/images/emoji/1f1f0-1f1fe.png
Binary files differ
diff --git a/web/static/images/emoji/1f1f0-1f1ff.png b/web/static/images/emoji/1f1f0-1f1ff.png
new file mode 100644
index 000000000..49813e5d5
--- /dev/null
+++ b/web/static/images/emoji/1f1f0-1f1ff.png
Binary files differ
diff --git a/web/static/images/emoji/1f1f1-1f1e6.png b/web/static/images/emoji/1f1f1-1f1e6.png
new file mode 100644
index 000000000..6f0dd90f3
--- /dev/null
+++ b/web/static/images/emoji/1f1f1-1f1e6.png
Binary files differ
diff --git a/web/static/images/emoji/1f1f1-1f1e7.png b/web/static/images/emoji/1f1f1-1f1e7.png
new file mode 100644
index 000000000..8fe041f46
--- /dev/null
+++ b/web/static/images/emoji/1f1f1-1f1e7.png
Binary files differ
diff --git a/web/static/images/emoji/1f1f1-1f1e8.png b/web/static/images/emoji/1f1f1-1f1e8.png
new file mode 100644
index 000000000..70a34cb11
--- /dev/null
+++ b/web/static/images/emoji/1f1f1-1f1e8.png
Binary files differ
diff --git a/web/static/images/emoji/1f1f1-1f1ee.png b/web/static/images/emoji/1f1f1-1f1ee.png
new file mode 100644
index 000000000..ad667c3c4
--- /dev/null
+++ b/web/static/images/emoji/1f1f1-1f1ee.png
Binary files differ
diff --git a/web/static/images/emoji/1f1f1-1f1f0.png b/web/static/images/emoji/1f1f1-1f1f0.png
new file mode 100644
index 000000000..9a205d9cf
--- /dev/null
+++ b/web/static/images/emoji/1f1f1-1f1f0.png
Binary files differ
diff --git a/web/static/images/emoji/1f1f1-1f1f7.png b/web/static/images/emoji/1f1f1-1f1f7.png
new file mode 100644
index 000000000..2916a1ff4
--- /dev/null
+++ b/web/static/images/emoji/1f1f1-1f1f7.png
Binary files differ
diff --git a/web/static/images/emoji/1f1f1-1f1f8.png b/web/static/images/emoji/1f1f1-1f1f8.png
new file mode 100644
index 000000000..a47e7e067
--- /dev/null
+++ b/web/static/images/emoji/1f1f1-1f1f8.png
Binary files differ
diff --git a/web/static/images/emoji/1f1f1-1f1f9.png b/web/static/images/emoji/1f1f1-1f1f9.png
new file mode 100644
index 000000000..ea08d9b23
--- /dev/null
+++ b/web/static/images/emoji/1f1f1-1f1f9.png
Binary files differ
diff --git a/web/static/images/emoji/1f1f1-1f1fa.png b/web/static/images/emoji/1f1f1-1f1fa.png
new file mode 100644
index 000000000..dbd428878
--- /dev/null
+++ b/web/static/images/emoji/1f1f1-1f1fa.png
Binary files differ
diff --git a/web/static/images/emoji/1f1f1-1f1fb.png b/web/static/images/emoji/1f1f1-1f1fb.png
new file mode 100644
index 000000000..a8eef9ff6
--- /dev/null
+++ b/web/static/images/emoji/1f1f1-1f1fb.png
Binary files differ
diff --git a/web/static/images/emoji/1f1f1-1f1fe.png b/web/static/images/emoji/1f1f1-1f1fe.png
new file mode 100644
index 000000000..04632748f
--- /dev/null
+++ b/web/static/images/emoji/1f1f1-1f1fe.png
Binary files differ
diff --git a/web/static/images/emoji/1f1f2-1f1e6.png b/web/static/images/emoji/1f1f2-1f1e6.png
new file mode 100644
index 000000000..1bf4401f6
--- /dev/null
+++ b/web/static/images/emoji/1f1f2-1f1e6.png
Binary files differ
diff --git a/web/static/images/emoji/1f1f2-1f1e8.png b/web/static/images/emoji/1f1f2-1f1e8.png
new file mode 100644
index 000000000..039174d3a
--- /dev/null
+++ b/web/static/images/emoji/1f1f2-1f1e8.png
Binary files differ
diff --git a/web/static/images/emoji/1f1f2-1f1e9.png b/web/static/images/emoji/1f1f2-1f1e9.png
new file mode 100644
index 000000000..78b5ba7e2
--- /dev/null
+++ b/web/static/images/emoji/1f1f2-1f1e9.png
Binary files differ
diff --git a/web/static/images/emoji/1f1f2-1f1ea.png b/web/static/images/emoji/1f1f2-1f1ea.png
new file mode 100644
index 000000000..01245d958
--- /dev/null
+++ b/web/static/images/emoji/1f1f2-1f1ea.png
Binary files differ
diff --git a/web/static/images/emoji/1f1f2-1f1ec.png b/web/static/images/emoji/1f1f2-1f1ec.png
new file mode 100644
index 000000000..cb55e9fc3
--- /dev/null
+++ b/web/static/images/emoji/1f1f2-1f1ec.png
Binary files differ
diff --git a/web/static/images/emoji/1f1f2-1f1ed.png b/web/static/images/emoji/1f1f2-1f1ed.png
new file mode 100644
index 000000000..ff5038b6d
--- /dev/null
+++ b/web/static/images/emoji/1f1f2-1f1ed.png
Binary files differ
diff --git a/web/static/images/emoji/1f1f2-1f1f0.png b/web/static/images/emoji/1f1f2-1f1f0.png
new file mode 100644
index 000000000..8dadf0110
--- /dev/null
+++ b/web/static/images/emoji/1f1f2-1f1f0.png
Binary files differ
diff --git a/web/static/images/emoji/1f1f2-1f1f1.png b/web/static/images/emoji/1f1f2-1f1f1.png
new file mode 100644
index 000000000..53be7c81e
--- /dev/null
+++ b/web/static/images/emoji/1f1f2-1f1f1.png
Binary files differ
diff --git a/web/static/images/emoji/1f1f2-1f1f2.png b/web/static/images/emoji/1f1f2-1f1f2.png
new file mode 100644
index 000000000..c1cfee7a5
--- /dev/null
+++ b/web/static/images/emoji/1f1f2-1f1f2.png
Binary files differ
diff --git a/web/static/images/emoji/1f1f2-1f1f3.png b/web/static/images/emoji/1f1f2-1f1f3.png
new file mode 100644
index 000000000..1beac5568
--- /dev/null
+++ b/web/static/images/emoji/1f1f2-1f1f3.png
Binary files differ
diff --git a/web/static/images/emoji/1f1f2-1f1f4.png b/web/static/images/emoji/1f1f2-1f1f4.png
new file mode 100644
index 000000000..6a8fcb9a0
--- /dev/null
+++ b/web/static/images/emoji/1f1f2-1f1f4.png
Binary files differ
diff --git a/web/static/images/emoji/1f1f2-1f1f7.png b/web/static/images/emoji/1f1f2-1f1f7.png
new file mode 100644
index 000000000..854690cfb
--- /dev/null
+++ b/web/static/images/emoji/1f1f2-1f1f7.png
Binary files differ
diff --git a/web/static/images/emoji/1f1f2-1f1f8.png b/web/static/images/emoji/1f1f2-1f1f8.png
new file mode 100644
index 000000000..61b2de721
--- /dev/null
+++ b/web/static/images/emoji/1f1f2-1f1f8.png
Binary files differ
diff --git a/web/static/images/emoji/1f1f2-1f1f9.png b/web/static/images/emoji/1f1f2-1f1f9.png
new file mode 100644
index 000000000..2f07f4709
--- /dev/null
+++ b/web/static/images/emoji/1f1f2-1f1f9.png
Binary files differ
diff --git a/web/static/images/emoji/1f1f2-1f1fa.png b/web/static/images/emoji/1f1f2-1f1fa.png
new file mode 100644
index 000000000..9d28c0812
--- /dev/null
+++ b/web/static/images/emoji/1f1f2-1f1fa.png
Binary files differ
diff --git a/web/static/images/emoji/1f1f2-1f1fb.png b/web/static/images/emoji/1f1f2-1f1fb.png
new file mode 100644
index 000000000..4ea56e841
--- /dev/null
+++ b/web/static/images/emoji/1f1f2-1f1fb.png
Binary files differ
diff --git a/web/static/images/emoji/1f1f2-1f1fc.png b/web/static/images/emoji/1f1f2-1f1fc.png
new file mode 100644
index 000000000..361aa65ec
--- /dev/null
+++ b/web/static/images/emoji/1f1f2-1f1fc.png
Binary files differ
diff --git a/web/static/images/emoji/1f1f2-1f1fd.png b/web/static/images/emoji/1f1f2-1f1fd.png
new file mode 100644
index 000000000..c44c24df1
--- /dev/null
+++ b/web/static/images/emoji/1f1f2-1f1fd.png
Binary files differ
diff --git a/web/static/images/emoji/1f1f2-1f1fe.png b/web/static/images/emoji/1f1f2-1f1fe.png
new file mode 100644
index 000000000..166fd5ba7
--- /dev/null
+++ b/web/static/images/emoji/1f1f2-1f1fe.png
Binary files differ
diff --git a/web/static/images/emoji/1f1f2-1f1ff.png b/web/static/images/emoji/1f1f2-1f1ff.png
new file mode 100644
index 000000000..209db39ee
--- /dev/null
+++ b/web/static/images/emoji/1f1f2-1f1ff.png
Binary files differ
diff --git a/web/static/images/emoji/1f1f3-1f1e6.png b/web/static/images/emoji/1f1f3-1f1e6.png
new file mode 100644
index 000000000..84fab946d
--- /dev/null
+++ b/web/static/images/emoji/1f1f3-1f1e6.png
Binary files differ
diff --git a/web/static/images/emoji/1f1f3-1f1e8.png b/web/static/images/emoji/1f1f3-1f1e8.png
new file mode 100644
index 000000000..6372d93c7
--- /dev/null
+++ b/web/static/images/emoji/1f1f3-1f1e8.png
Binary files differ
diff --git a/web/static/images/emoji/1f1f3-1f1ea.png b/web/static/images/emoji/1f1f3-1f1ea.png
new file mode 100644
index 000000000..3fd0d99ab
--- /dev/null
+++ b/web/static/images/emoji/1f1f3-1f1ea.png
Binary files differ
diff --git a/web/static/images/emoji/1f1f3-1f1ec.png b/web/static/images/emoji/1f1f3-1f1ec.png
new file mode 100644
index 000000000..2c98fcdff
--- /dev/null
+++ b/web/static/images/emoji/1f1f3-1f1ec.png
Binary files differ
diff --git a/web/static/images/emoji/1f1f3-1f1ee.png b/web/static/images/emoji/1f1f3-1f1ee.png
new file mode 100644
index 000000000..88055d5a0
--- /dev/null
+++ b/web/static/images/emoji/1f1f3-1f1ee.png
Binary files differ
diff --git a/web/static/images/emoji/1f1f3-1f1f1.png b/web/static/images/emoji/1f1f3-1f1f1.png
new file mode 100644
index 000000000..d5de058a4
--- /dev/null
+++ b/web/static/images/emoji/1f1f3-1f1f1.png
Binary files differ
diff --git a/web/static/images/emoji/1f1f3-1f1f4.png b/web/static/images/emoji/1f1f3-1f1f4.png
new file mode 100644
index 000000000..1199fae93
--- /dev/null
+++ b/web/static/images/emoji/1f1f3-1f1f4.png
Binary files differ
diff --git a/web/static/images/emoji/1f1f3-1f1f5.png b/web/static/images/emoji/1f1f3-1f1f5.png
new file mode 100644
index 000000000..3e17c5204
--- /dev/null
+++ b/web/static/images/emoji/1f1f3-1f1f5.png
Binary files differ
diff --git a/web/static/images/emoji/1f1f3-1f1f7.png b/web/static/images/emoji/1f1f3-1f1f7.png
new file mode 100644
index 000000000..80c3d8357
--- /dev/null
+++ b/web/static/images/emoji/1f1f3-1f1f7.png
Binary files differ
diff --git a/web/static/images/emoji/1f1f3-1f1fa.png b/web/static/images/emoji/1f1f3-1f1fa.png
new file mode 100644
index 000000000..628aee1e3
--- /dev/null
+++ b/web/static/images/emoji/1f1f3-1f1fa.png
Binary files differ
diff --git a/web/static/images/emoji/1f1f3-1f1ff.png b/web/static/images/emoji/1f1f3-1f1ff.png
new file mode 100644
index 000000000..d64f6ec22
--- /dev/null
+++ b/web/static/images/emoji/1f1f3-1f1ff.png
Binary files differ
diff --git a/web/static/images/emoji/1f1f4-1f1f2.png b/web/static/images/emoji/1f1f4-1f1f2.png
new file mode 100644
index 000000000..68dd406fb
--- /dev/null
+++ b/web/static/images/emoji/1f1f4-1f1f2.png
Binary files differ
diff --git a/web/static/images/emoji/1f1f5-1f1e6.png b/web/static/images/emoji/1f1f5-1f1e6.png
new file mode 100644
index 000000000..0fa73faf3
--- /dev/null
+++ b/web/static/images/emoji/1f1f5-1f1e6.png
Binary files differ
diff --git a/web/static/images/emoji/1f1f5-1f1ea.png b/web/static/images/emoji/1f1f5-1f1ea.png
new file mode 100644
index 000000000..cf7098d8d
--- /dev/null
+++ b/web/static/images/emoji/1f1f5-1f1ea.png
Binary files differ
diff --git a/web/static/images/emoji/1f1f5-1f1eb.png b/web/static/images/emoji/1f1f5-1f1eb.png
new file mode 100644
index 000000000..5780519fd
--- /dev/null
+++ b/web/static/images/emoji/1f1f5-1f1eb.png
Binary files differ
diff --git a/web/static/images/emoji/1f1f5-1f1ec.png b/web/static/images/emoji/1f1f5-1f1ec.png
new file mode 100644
index 000000000..0a4ce4c3c
--- /dev/null
+++ b/web/static/images/emoji/1f1f5-1f1ec.png
Binary files differ
diff --git a/web/static/images/emoji/1f1f5-1f1ed.png b/web/static/images/emoji/1f1f5-1f1ed.png
new file mode 100644
index 000000000..00a9eaa6d
--- /dev/null
+++ b/web/static/images/emoji/1f1f5-1f1ed.png
Binary files differ
diff --git a/web/static/images/emoji/1f1f5-1f1f0.png b/web/static/images/emoji/1f1f5-1f1f0.png
new file mode 100644
index 000000000..b1ab1a7a8
--- /dev/null
+++ b/web/static/images/emoji/1f1f5-1f1f0.png
Binary files differ
diff --git a/web/static/images/emoji/1f1f5-1f1f1.png b/web/static/images/emoji/1f1f5-1f1f1.png
new file mode 100644
index 000000000..e07223bf7
--- /dev/null
+++ b/web/static/images/emoji/1f1f5-1f1f1.png
Binary files differ
diff --git a/web/static/images/emoji/1f1f5-1f1f7.png b/web/static/images/emoji/1f1f5-1f1f7.png
new file mode 100644
index 000000000..754bb5429
--- /dev/null
+++ b/web/static/images/emoji/1f1f5-1f1f7.png
Binary files differ
diff --git a/web/static/images/emoji/1f1f5-1f1f8.png b/web/static/images/emoji/1f1f5-1f1f8.png
new file mode 100644
index 000000000..e2076eda0
--- /dev/null
+++ b/web/static/images/emoji/1f1f5-1f1f8.png
Binary files differ
diff --git a/web/static/images/emoji/1f1f5-1f1f9.png b/web/static/images/emoji/1f1f5-1f1f9.png
new file mode 100644
index 000000000..4f585e18b
--- /dev/null
+++ b/web/static/images/emoji/1f1f5-1f1f9.png
Binary files differ
diff --git a/web/static/images/emoji/1f1f5-1f1fc.png b/web/static/images/emoji/1f1f5-1f1fc.png
new file mode 100644
index 000000000..e15437591
--- /dev/null
+++ b/web/static/images/emoji/1f1f5-1f1fc.png
Binary files differ
diff --git a/web/static/images/emoji/1f1f5-1f1fe.png b/web/static/images/emoji/1f1f5-1f1fe.png
new file mode 100644
index 000000000..335d55f93
--- /dev/null
+++ b/web/static/images/emoji/1f1f5-1f1fe.png
Binary files differ
diff --git a/web/static/images/emoji/1f1f6-1f1e6.png b/web/static/images/emoji/1f1f6-1f1e6.png
new file mode 100644
index 000000000..6f99df4ff
--- /dev/null
+++ b/web/static/images/emoji/1f1f6-1f1e6.png
Binary files differ
diff --git a/web/static/images/emoji/1f1f7-1f1f4.png b/web/static/images/emoji/1f1f7-1f1f4.png
new file mode 100644
index 000000000..1f7db7ab1
--- /dev/null
+++ b/web/static/images/emoji/1f1f7-1f1f4.png
Binary files differ
diff --git a/web/static/images/emoji/1f1f7-1f1f8.png b/web/static/images/emoji/1f1f7-1f1f8.png
new file mode 100644
index 000000000..7552aba40
--- /dev/null
+++ b/web/static/images/emoji/1f1f7-1f1f8.png
Binary files differ
diff --git a/web/static/images/emoji/1f1f7-1f1fa.png b/web/static/images/emoji/1f1f7-1f1fa.png
new file mode 100644
index 000000000..4a65f219f
--- /dev/null
+++ b/web/static/images/emoji/1f1f7-1f1fa.png
Binary files differ
diff --git a/web/static/images/emoji/1f1f7-1f1fc.png b/web/static/images/emoji/1f1f7-1f1fc.png
new file mode 100644
index 000000000..ddea66d07
--- /dev/null
+++ b/web/static/images/emoji/1f1f7-1f1fc.png
Binary files differ
diff --git a/web/static/images/emoji/1f1f8-1f1e6.png b/web/static/images/emoji/1f1f8-1f1e6.png
new file mode 100644
index 000000000..4f82c1a3e
--- /dev/null
+++ b/web/static/images/emoji/1f1f8-1f1e6.png
Binary files differ
diff --git a/web/static/images/emoji/1f1f8-1f1e7.png b/web/static/images/emoji/1f1f8-1f1e7.png
new file mode 100644
index 000000000..5bf32a743
--- /dev/null
+++ b/web/static/images/emoji/1f1f8-1f1e7.png
Binary files differ
diff --git a/web/static/images/emoji/1f1f8-1f1e8.png b/web/static/images/emoji/1f1f8-1f1e8.png
new file mode 100644
index 000000000..7ec76a1ec
--- /dev/null
+++ b/web/static/images/emoji/1f1f8-1f1e8.png
Binary files differ
diff --git a/web/static/images/emoji/1f1f8-1f1e9.png b/web/static/images/emoji/1f1f8-1f1e9.png
new file mode 100644
index 000000000..fad14bde5
--- /dev/null
+++ b/web/static/images/emoji/1f1f8-1f1e9.png
Binary files differ
diff --git a/web/static/images/emoji/1f1f8-1f1ea.png b/web/static/images/emoji/1f1f8-1f1ea.png
new file mode 100644
index 000000000..067857a9e
--- /dev/null
+++ b/web/static/images/emoji/1f1f8-1f1ea.png
Binary files differ
diff --git a/web/static/images/emoji/1f1f8-1f1ec.png b/web/static/images/emoji/1f1f8-1f1ec.png
new file mode 100644
index 000000000..8d1127005
--- /dev/null
+++ b/web/static/images/emoji/1f1f8-1f1ec.png
Binary files differ
diff --git a/web/static/images/emoji/1f1f8-1f1ed.png b/web/static/images/emoji/1f1f8-1f1ed.png
new file mode 100644
index 000000000..75977bea6
--- /dev/null
+++ b/web/static/images/emoji/1f1f8-1f1ed.png
Binary files differ
diff --git a/web/static/images/emoji/1f1f8-1f1ee.png b/web/static/images/emoji/1f1f8-1f1ee.png
new file mode 100644
index 000000000..d7c3a7477
--- /dev/null
+++ b/web/static/images/emoji/1f1f8-1f1ee.png
Binary files differ
diff --git a/web/static/images/emoji/1f1f8-1f1f0.png b/web/static/images/emoji/1f1f8-1f1f0.png
new file mode 100644
index 000000000..6f60bfab3
--- /dev/null
+++ b/web/static/images/emoji/1f1f8-1f1f0.png
Binary files differ
diff --git a/web/static/images/emoji/1f1f8-1f1f1.png b/web/static/images/emoji/1f1f8-1f1f1.png
new file mode 100644
index 000000000..5f88e8673
--- /dev/null
+++ b/web/static/images/emoji/1f1f8-1f1f1.png
Binary files differ
diff --git a/web/static/images/emoji/1f1f8-1f1f2.png b/web/static/images/emoji/1f1f8-1f1f2.png
new file mode 100644
index 000000000..431e28ea6
--- /dev/null
+++ b/web/static/images/emoji/1f1f8-1f1f2.png
Binary files differ
diff --git a/web/static/images/emoji/1f1f8-1f1f3.png b/web/static/images/emoji/1f1f8-1f1f3.png
new file mode 100644
index 000000000..dcc3f9770
--- /dev/null
+++ b/web/static/images/emoji/1f1f8-1f1f3.png
Binary files differ
diff --git a/web/static/images/emoji/1f1f8-1f1f4.png b/web/static/images/emoji/1f1f8-1f1f4.png
new file mode 100644
index 000000000..2e20974e9
--- /dev/null
+++ b/web/static/images/emoji/1f1f8-1f1f4.png
Binary files differ
diff --git a/web/static/images/emoji/1f1f8-1f1f7.png b/web/static/images/emoji/1f1f8-1f1f7.png
new file mode 100644
index 000000000..bde51f536
--- /dev/null
+++ b/web/static/images/emoji/1f1f8-1f1f7.png
Binary files differ
diff --git a/web/static/images/emoji/1f1f8-1f1f9.png b/web/static/images/emoji/1f1f8-1f1f9.png
new file mode 100644
index 000000000..e387f43b9
--- /dev/null
+++ b/web/static/images/emoji/1f1f8-1f1f9.png
Binary files differ
diff --git a/web/static/images/emoji/1f1f8-1f1fb.png b/web/static/images/emoji/1f1f8-1f1fb.png
new file mode 100644
index 000000000..f4a1153db
--- /dev/null
+++ b/web/static/images/emoji/1f1f8-1f1fb.png
Binary files differ
diff --git a/web/static/images/emoji/1f1f8-1f1fe.png b/web/static/images/emoji/1f1f8-1f1fe.png
new file mode 100644
index 000000000..f8900079a
--- /dev/null
+++ b/web/static/images/emoji/1f1f8-1f1fe.png
Binary files differ
diff --git a/web/static/images/emoji/1f1f8-1f1ff.png b/web/static/images/emoji/1f1f8-1f1ff.png
new file mode 100644
index 000000000..f80d7579d
--- /dev/null
+++ b/web/static/images/emoji/1f1f8-1f1ff.png
Binary files differ
diff --git a/web/static/images/emoji/1f1f9-1f1e9.png b/web/static/images/emoji/1f1f9-1f1e9.png
new file mode 100644
index 000000000..de564e86e
--- /dev/null
+++ b/web/static/images/emoji/1f1f9-1f1e9.png
Binary files differ
diff --git a/web/static/images/emoji/1f1f9-1f1ec.png b/web/static/images/emoji/1f1f9-1f1ec.png
new file mode 100644
index 000000000..e41a68ea8
--- /dev/null
+++ b/web/static/images/emoji/1f1f9-1f1ec.png
Binary files differ
diff --git a/web/static/images/emoji/1f1f9-1f1ed.png b/web/static/images/emoji/1f1f9-1f1ed.png
new file mode 100644
index 000000000..362fb1a29
--- /dev/null
+++ b/web/static/images/emoji/1f1f9-1f1ed.png
Binary files differ
diff --git a/web/static/images/emoji/1f1f9-1f1ef.png b/web/static/images/emoji/1f1f9-1f1ef.png
new file mode 100644
index 000000000..5f2072253
--- /dev/null
+++ b/web/static/images/emoji/1f1f9-1f1ef.png
Binary files differ
diff --git a/web/static/images/emoji/1f1f9-1f1f1.png b/web/static/images/emoji/1f1f9-1f1f1.png
new file mode 100644
index 000000000..da94c4289
--- /dev/null
+++ b/web/static/images/emoji/1f1f9-1f1f1.png
Binary files differ
diff --git a/web/static/images/emoji/1f1f9-1f1f2.png b/web/static/images/emoji/1f1f9-1f1f2.png
new file mode 100644
index 000000000..f0ab3b7d5
--- /dev/null
+++ b/web/static/images/emoji/1f1f9-1f1f2.png
Binary files differ
diff --git a/web/static/images/emoji/1f1f9-1f1f3.png b/web/static/images/emoji/1f1f9-1f1f3.png
new file mode 100644
index 000000000..e1f27ed7d
--- /dev/null
+++ b/web/static/images/emoji/1f1f9-1f1f3.png
Binary files differ
diff --git a/web/static/images/emoji/1f1f9-1f1f4.png b/web/static/images/emoji/1f1f9-1f1f4.png
new file mode 100644
index 000000000..06c2a6f41
--- /dev/null
+++ b/web/static/images/emoji/1f1f9-1f1f4.png
Binary files differ
diff --git a/web/static/images/emoji/1f1f9-1f1f7.png b/web/static/images/emoji/1f1f9-1f1f7.png
new file mode 100644
index 000000000..720d4de2f
--- /dev/null
+++ b/web/static/images/emoji/1f1f9-1f1f7.png
Binary files differ
diff --git a/web/static/images/emoji/1f1f9-1f1f9.png b/web/static/images/emoji/1f1f9-1f1f9.png
new file mode 100644
index 000000000..2d89e31b0
--- /dev/null
+++ b/web/static/images/emoji/1f1f9-1f1f9.png
Binary files differ
diff --git a/web/static/images/emoji/1f1f9-1f1fb.png b/web/static/images/emoji/1f1f9-1f1fb.png
new file mode 100644
index 000000000..765087702
--- /dev/null
+++ b/web/static/images/emoji/1f1f9-1f1fb.png
Binary files differ
diff --git a/web/static/images/emoji/1f1f9-1f1fc.png b/web/static/images/emoji/1f1f9-1f1fc.png
new file mode 100644
index 000000000..6499e47ee
--- /dev/null
+++ b/web/static/images/emoji/1f1f9-1f1fc.png
Binary files differ
diff --git a/web/static/images/emoji/1f1f9-1f1ff.png b/web/static/images/emoji/1f1f9-1f1ff.png
new file mode 100644
index 000000000..9e04fcf9d
--- /dev/null
+++ b/web/static/images/emoji/1f1f9-1f1ff.png
Binary files differ
diff --git a/web/static/images/emoji/1f1fa-1f1e6.png b/web/static/images/emoji/1f1fa-1f1e6.png
new file mode 100644
index 000000000..aa9745259
--- /dev/null
+++ b/web/static/images/emoji/1f1fa-1f1e6.png
Binary files differ
diff --git a/web/static/images/emoji/1f1fa-1f1ec.png b/web/static/images/emoji/1f1fa-1f1ec.png
new file mode 100644
index 000000000..f78274fcb
--- /dev/null
+++ b/web/static/images/emoji/1f1fa-1f1ec.png
Binary files differ
diff --git a/web/static/images/emoji/1f1fa-1f1f8.png b/web/static/images/emoji/1f1fa-1f1f8.png
new file mode 100644
index 000000000..6c98de9be
--- /dev/null
+++ b/web/static/images/emoji/1f1fa-1f1f8.png
Binary files differ
diff --git a/web/static/images/emoji/1f1fa-1f1fe.png b/web/static/images/emoji/1f1fa-1f1fe.png
new file mode 100644
index 000000000..f8caee786
--- /dev/null
+++ b/web/static/images/emoji/1f1fa-1f1fe.png
Binary files differ
diff --git a/web/static/images/emoji/1f1fa-1f1ff.png b/web/static/images/emoji/1f1fa-1f1ff.png
new file mode 100644
index 000000000..34f0c8627
--- /dev/null
+++ b/web/static/images/emoji/1f1fa-1f1ff.png
Binary files differ
diff --git a/web/static/images/emoji/1f1fb-1f1e6.png b/web/static/images/emoji/1f1fb-1f1e6.png
new file mode 100644
index 000000000..175fcaa0e
--- /dev/null
+++ b/web/static/images/emoji/1f1fb-1f1e6.png
Binary files differ
diff --git a/web/static/images/emoji/1f1fb-1f1e8.png b/web/static/images/emoji/1f1fb-1f1e8.png
new file mode 100644
index 000000000..4e4efb366
--- /dev/null
+++ b/web/static/images/emoji/1f1fb-1f1e8.png
Binary files differ
diff --git a/web/static/images/emoji/1f1fb-1f1ea.png b/web/static/images/emoji/1f1fb-1f1ea.png
new file mode 100644
index 000000000..6ab199a56
--- /dev/null
+++ b/web/static/images/emoji/1f1fb-1f1ea.png
Binary files differ
diff --git a/web/static/images/emoji/1f1fb-1f1ee.png b/web/static/images/emoji/1f1fb-1f1ee.png
new file mode 100644
index 000000000..da1d092bb
--- /dev/null
+++ b/web/static/images/emoji/1f1fb-1f1ee.png
Binary files differ
diff --git a/web/static/images/emoji/1f1fb-1f1f3.png b/web/static/images/emoji/1f1fb-1f1f3.png
new file mode 100644
index 000000000..ec1ca0b8f
--- /dev/null
+++ b/web/static/images/emoji/1f1fb-1f1f3.png
Binary files differ
diff --git a/web/static/images/emoji/1f1fb-1f1fa.png b/web/static/images/emoji/1f1fb-1f1fa.png
new file mode 100644
index 000000000..e9345643b
--- /dev/null
+++ b/web/static/images/emoji/1f1fb-1f1fa.png
Binary files differ
diff --git a/web/static/images/emoji/1f1fc-1f1eb.png b/web/static/images/emoji/1f1fc-1f1eb.png
new file mode 100644
index 000000000..367175512
--- /dev/null
+++ b/web/static/images/emoji/1f1fc-1f1eb.png
Binary files differ
diff --git a/web/static/images/emoji/1f1fc-1f1f8.png b/web/static/images/emoji/1f1fc-1f1f8.png
new file mode 100644
index 000000000..c4d6349f7
--- /dev/null
+++ b/web/static/images/emoji/1f1fc-1f1f8.png
Binary files differ
diff --git a/web/static/images/emoji/1f1fd-1f1f0.png b/web/static/images/emoji/1f1fd-1f1f0.png
new file mode 100644
index 000000000..f9953b7e2
--- /dev/null
+++ b/web/static/images/emoji/1f1fd-1f1f0.png
Binary files differ
diff --git a/web/static/images/emoji/1f1fe-1f1ea.png b/web/static/images/emoji/1f1fe-1f1ea.png
new file mode 100644
index 000000000..e62c22683
--- /dev/null
+++ b/web/static/images/emoji/1f1fe-1f1ea.png
Binary files differ
diff --git a/web/static/images/emoji/1f1ff-1f1e6.png b/web/static/images/emoji/1f1ff-1f1e6.png
new file mode 100644
index 000000000..b5f8197ca
--- /dev/null
+++ b/web/static/images/emoji/1f1ff-1f1e6.png
Binary files differ
diff --git a/web/static/images/emoji/1f1ff-1f1f2.png b/web/static/images/emoji/1f1ff-1f1f2.png
new file mode 100644
index 000000000..aac8aaa96
--- /dev/null
+++ b/web/static/images/emoji/1f1ff-1f1f2.png
Binary files differ
diff --git a/web/static/images/emoji/1f1ff-1f1fc.png b/web/static/images/emoji/1f1ff-1f1fc.png
new file mode 100644
index 000000000..bf3d7162d
--- /dev/null
+++ b/web/static/images/emoji/1f1ff-1f1fc.png
Binary files differ
diff --git a/web/static/images/emoji/1f201.png b/web/static/images/emoji/1f201.png
new file mode 100644
index 000000000..9f056070e
--- /dev/null
+++ b/web/static/images/emoji/1f201.png
Binary files differ
diff --git a/web/static/images/emoji/1f202.png b/web/static/images/emoji/1f202.png
new file mode 100644
index 000000000..c6dafece9
--- /dev/null
+++ b/web/static/images/emoji/1f202.png
Binary files differ
diff --git a/web/static/images/emoji/1f21a.png b/web/static/images/emoji/1f21a.png
new file mode 100644
index 000000000..5f2982163
--- /dev/null
+++ b/web/static/images/emoji/1f21a.png
Binary files differ
diff --git a/web/static/images/emoji/1f22f.png b/web/static/images/emoji/1f22f.png
new file mode 100644
index 000000000..307d17ad7
--- /dev/null
+++ b/web/static/images/emoji/1f22f.png
Binary files differ
diff --git a/web/static/images/emoji/1f232.png b/web/static/images/emoji/1f232.png
new file mode 100644
index 000000000..cc617fed3
--- /dev/null
+++ b/web/static/images/emoji/1f232.png
Binary files differ
diff --git a/web/static/images/emoji/1f233.png b/web/static/images/emoji/1f233.png
new file mode 100644
index 000000000..3d0922dba
--- /dev/null
+++ b/web/static/images/emoji/1f233.png
Binary files differ
diff --git a/web/static/images/emoji/1f234.png b/web/static/images/emoji/1f234.png
new file mode 100644
index 000000000..02ff557d0
--- /dev/null
+++ b/web/static/images/emoji/1f234.png
Binary files differ
diff --git a/web/static/images/emoji/1f235.png b/web/static/images/emoji/1f235.png
new file mode 100644
index 000000000..4d03236ff
--- /dev/null
+++ b/web/static/images/emoji/1f235.png
Binary files differ
diff --git a/web/static/images/emoji/1f236.png b/web/static/images/emoji/1f236.png
new file mode 100644
index 000000000..b592c12ee
--- /dev/null
+++ b/web/static/images/emoji/1f236.png
Binary files differ
diff --git a/web/static/images/emoji/1f237.png b/web/static/images/emoji/1f237.png
new file mode 100644
index 000000000..cf85c803b
--- /dev/null
+++ b/web/static/images/emoji/1f237.png
Binary files differ
diff --git a/web/static/images/emoji/1f238.png b/web/static/images/emoji/1f238.png
new file mode 100644
index 000000000..e2c566183
--- /dev/null
+++ b/web/static/images/emoji/1f238.png
Binary files differ
diff --git a/web/static/images/emoji/1f239.png b/web/static/images/emoji/1f239.png
new file mode 100644
index 000000000..90ed437d9
--- /dev/null
+++ b/web/static/images/emoji/1f239.png
Binary files differ
diff --git a/web/static/images/emoji/1f23a.png b/web/static/images/emoji/1f23a.png
new file mode 100644
index 000000000..091841a03
--- /dev/null
+++ b/web/static/images/emoji/1f23a.png
Binary files differ
diff --git a/web/static/images/emoji/1f250.png b/web/static/images/emoji/1f250.png
new file mode 100644
index 000000000..2be0c3a78
--- /dev/null
+++ b/web/static/images/emoji/1f250.png
Binary files differ
diff --git a/web/static/images/emoji/1f251.png b/web/static/images/emoji/1f251.png
new file mode 100644
index 000000000..10cf9e29a
--- /dev/null
+++ b/web/static/images/emoji/1f251.png
Binary files differ
diff --git a/web/static/images/emoji/1f300.png b/web/static/images/emoji/1f300.png
new file mode 100644
index 000000000..bd243229a
--- /dev/null
+++ b/web/static/images/emoji/1f300.png
Binary files differ
diff --git a/web/static/images/emoji/1f301.png b/web/static/images/emoji/1f301.png
new file mode 100644
index 000000000..740943ab0
--- /dev/null
+++ b/web/static/images/emoji/1f301.png
Binary files differ
diff --git a/web/static/images/emoji/1f302.png b/web/static/images/emoji/1f302.png
new file mode 100644
index 000000000..00afbfb40
--- /dev/null
+++ b/web/static/images/emoji/1f302.png
Binary files differ
diff --git a/web/static/images/emoji/1f303.png b/web/static/images/emoji/1f303.png
new file mode 100644
index 000000000..b6b629204
--- /dev/null
+++ b/web/static/images/emoji/1f303.png
Binary files differ
diff --git a/web/static/images/emoji/1f304.png b/web/static/images/emoji/1f304.png
new file mode 100644
index 000000000..f8527646e
--- /dev/null
+++ b/web/static/images/emoji/1f304.png
Binary files differ
diff --git a/web/static/images/emoji/1f305.png b/web/static/images/emoji/1f305.png
new file mode 100644
index 000000000..4bcc4a8ac
--- /dev/null
+++ b/web/static/images/emoji/1f305.png
Binary files differ
diff --git a/web/static/images/emoji/1f306.png b/web/static/images/emoji/1f306.png
new file mode 100644
index 000000000..f64483fb6
--- /dev/null
+++ b/web/static/images/emoji/1f306.png
Binary files differ
diff --git a/web/static/images/emoji/1f307.png b/web/static/images/emoji/1f307.png
new file mode 100644
index 000000000..a65691bb0
--- /dev/null
+++ b/web/static/images/emoji/1f307.png
Binary files differ
diff --git a/web/static/images/emoji/1f308.png b/web/static/images/emoji/1f308.png
new file mode 100644
index 000000000..1d92301f9
--- /dev/null
+++ b/web/static/images/emoji/1f308.png
Binary files differ
diff --git a/web/static/images/emoji/1f309.png b/web/static/images/emoji/1f309.png
new file mode 100644
index 000000000..44cf8852e
--- /dev/null
+++ b/web/static/images/emoji/1f309.png
Binary files differ
diff --git a/web/static/images/emoji/1f30a.png b/web/static/images/emoji/1f30a.png
new file mode 100644
index 000000000..172dfffdf
--- /dev/null
+++ b/web/static/images/emoji/1f30a.png
Binary files differ
diff --git a/web/static/images/emoji/1f30b.png b/web/static/images/emoji/1f30b.png
new file mode 100644
index 000000000..5f2c292f0
--- /dev/null
+++ b/web/static/images/emoji/1f30b.png
Binary files differ
diff --git a/web/static/images/emoji/1f30c.png b/web/static/images/emoji/1f30c.png
new file mode 100644
index 000000000..4ee1090f4
--- /dev/null
+++ b/web/static/images/emoji/1f30c.png
Binary files differ
diff --git a/web/static/images/emoji/1f30d.png b/web/static/images/emoji/1f30d.png
new file mode 100644
index 000000000..a4bbace54
--- /dev/null
+++ b/web/static/images/emoji/1f30d.png
Binary files differ
diff --git a/web/static/images/emoji/1f30e.png b/web/static/images/emoji/1f30e.png
new file mode 100644
index 000000000..13a307f3c
--- /dev/null
+++ b/web/static/images/emoji/1f30e.png
Binary files differ
diff --git a/web/static/images/emoji/1f30f.png b/web/static/images/emoji/1f30f.png
new file mode 100644
index 000000000..908e483fa
--- /dev/null
+++ b/web/static/images/emoji/1f30f.png
Binary files differ
diff --git a/web/static/images/emoji/1f310.png b/web/static/images/emoji/1f310.png
new file mode 100644
index 000000000..a7af2cb1c
--- /dev/null
+++ b/web/static/images/emoji/1f310.png
Binary files differ
diff --git a/web/static/images/emoji/1f311.png b/web/static/images/emoji/1f311.png
new file mode 100644
index 000000000..06e5e67f2
--- /dev/null
+++ b/web/static/images/emoji/1f311.png
Binary files differ
diff --git a/web/static/images/emoji/1f312.png b/web/static/images/emoji/1f312.png
new file mode 100644
index 000000000..7d4b5a056
--- /dev/null
+++ b/web/static/images/emoji/1f312.png
Binary files differ
diff --git a/web/static/images/emoji/1f313.png b/web/static/images/emoji/1f313.png
new file mode 100644
index 000000000..14734a42c
--- /dev/null
+++ b/web/static/images/emoji/1f313.png
Binary files differ
diff --git a/web/static/images/emoji/1f314.png b/web/static/images/emoji/1f314.png
new file mode 100644
index 000000000..b53fd4288
--- /dev/null
+++ b/web/static/images/emoji/1f314.png
Binary files differ
diff --git a/web/static/images/emoji/1f315.png b/web/static/images/emoji/1f315.png
new file mode 100644
index 000000000..b936c916d
--- /dev/null
+++ b/web/static/images/emoji/1f315.png
Binary files differ
diff --git a/web/static/images/emoji/1f316.png b/web/static/images/emoji/1f316.png
new file mode 100644
index 000000000..3b9240298
--- /dev/null
+++ b/web/static/images/emoji/1f316.png
Binary files differ
diff --git a/web/static/images/emoji/1f317.png b/web/static/images/emoji/1f317.png
new file mode 100644
index 000000000..85e0df65a
--- /dev/null
+++ b/web/static/images/emoji/1f317.png
Binary files differ
diff --git a/web/static/images/emoji/1f318.png b/web/static/images/emoji/1f318.png
new file mode 100644
index 000000000..f9ab41111
--- /dev/null
+++ b/web/static/images/emoji/1f318.png
Binary files differ
diff --git a/web/static/images/emoji/1f319.png b/web/static/images/emoji/1f319.png
new file mode 100644
index 000000000..2a0b9f39b
--- /dev/null
+++ b/web/static/images/emoji/1f319.png
Binary files differ
diff --git a/web/static/images/emoji/1f31a.png b/web/static/images/emoji/1f31a.png
new file mode 100644
index 000000000..c7b2e8011
--- /dev/null
+++ b/web/static/images/emoji/1f31a.png
Binary files differ
diff --git a/web/static/images/emoji/1f31b.png b/web/static/images/emoji/1f31b.png
new file mode 100644
index 000000000..8f10b3cfe
--- /dev/null
+++ b/web/static/images/emoji/1f31b.png
Binary files differ
diff --git a/web/static/images/emoji/1f31c.png b/web/static/images/emoji/1f31c.png
new file mode 100644
index 000000000..37ecabbc7
--- /dev/null
+++ b/web/static/images/emoji/1f31c.png
Binary files differ
diff --git a/web/static/images/emoji/1f31d.png b/web/static/images/emoji/1f31d.png
new file mode 100644
index 000000000..adb3479d9
--- /dev/null
+++ b/web/static/images/emoji/1f31d.png
Binary files differ
diff --git a/web/static/images/emoji/1f31e.png b/web/static/images/emoji/1f31e.png
new file mode 100644
index 000000000..7ee45e4dd
--- /dev/null
+++ b/web/static/images/emoji/1f31e.png
Binary files differ
diff --git a/web/static/images/emoji/1f31f.png b/web/static/images/emoji/1f31f.png
new file mode 100644
index 000000000..6399b9335
--- /dev/null
+++ b/web/static/images/emoji/1f31f.png
Binary files differ
diff --git a/web/static/images/emoji/1f320.png b/web/static/images/emoji/1f320.png
new file mode 100644
index 000000000..115748007
--- /dev/null
+++ b/web/static/images/emoji/1f320.png
Binary files differ
diff --git a/web/static/images/emoji/1f321.png b/web/static/images/emoji/1f321.png
new file mode 100644
index 000000000..5afccacd5
--- /dev/null
+++ b/web/static/images/emoji/1f321.png
Binary files differ
diff --git a/web/static/images/emoji/1f327.png b/web/static/images/emoji/1f327.png
new file mode 100644
index 000000000..507e1df08
--- /dev/null
+++ b/web/static/images/emoji/1f327.png
Binary files differ
diff --git a/web/static/images/emoji/1f328.png b/web/static/images/emoji/1f328.png
new file mode 100644
index 000000000..96baf5b54
--- /dev/null
+++ b/web/static/images/emoji/1f328.png
Binary files differ
diff --git a/web/static/images/emoji/1f329.png b/web/static/images/emoji/1f329.png
new file mode 100644
index 000000000..05a085e43
--- /dev/null
+++ b/web/static/images/emoji/1f329.png
Binary files differ
diff --git a/web/static/images/emoji/1f32a.png b/web/static/images/emoji/1f32a.png
new file mode 100644
index 000000000..a0ce6d55a
--- /dev/null
+++ b/web/static/images/emoji/1f32a.png
Binary files differ
diff --git a/web/static/images/emoji/1f32b.png b/web/static/images/emoji/1f32b.png
new file mode 100644
index 000000000..babf8a114
--- /dev/null
+++ b/web/static/images/emoji/1f32b.png
Binary files differ
diff --git a/web/static/images/emoji/1f32c.png b/web/static/images/emoji/1f32c.png
new file mode 100644
index 000000000..1586cb2cd
--- /dev/null
+++ b/web/static/images/emoji/1f32c.png
Binary files differ
diff --git a/web/static/images/emoji/1f330.png b/web/static/images/emoji/1f330.png
new file mode 100644
index 000000000..f983cb132
--- /dev/null
+++ b/web/static/images/emoji/1f330.png
Binary files differ
diff --git a/web/static/images/emoji/1f331.png b/web/static/images/emoji/1f331.png
new file mode 100644
index 000000000..eae79d274
--- /dev/null
+++ b/web/static/images/emoji/1f331.png
Binary files differ
diff --git a/web/static/images/emoji/1f332.png b/web/static/images/emoji/1f332.png
new file mode 100644
index 000000000..dd88a6934
--- /dev/null
+++ b/web/static/images/emoji/1f332.png
Binary files differ
diff --git a/web/static/images/emoji/1f333.png b/web/static/images/emoji/1f333.png
new file mode 100644
index 000000000..1a54ec34b
--- /dev/null
+++ b/web/static/images/emoji/1f333.png
Binary files differ
diff --git a/web/static/images/emoji/1f334.png b/web/static/images/emoji/1f334.png
new file mode 100644
index 000000000..b18cffc94
--- /dev/null
+++ b/web/static/images/emoji/1f334.png
Binary files differ
diff --git a/web/static/images/emoji/1f335.png b/web/static/images/emoji/1f335.png
new file mode 100644
index 000000000..0204fd343
--- /dev/null
+++ b/web/static/images/emoji/1f335.png
Binary files differ
diff --git a/web/static/images/emoji/1f336.png b/web/static/images/emoji/1f336.png
new file mode 100644
index 000000000..a6db2ca09
--- /dev/null
+++ b/web/static/images/emoji/1f336.png
Binary files differ
diff --git a/web/static/images/emoji/1f337.png b/web/static/images/emoji/1f337.png
new file mode 100644
index 000000000..a05a51edf
--- /dev/null
+++ b/web/static/images/emoji/1f337.png
Binary files differ
diff --git a/web/static/images/emoji/1f338.png b/web/static/images/emoji/1f338.png
new file mode 100644
index 000000000..7cd8a22e7
--- /dev/null
+++ b/web/static/images/emoji/1f338.png
Binary files differ
diff --git a/web/static/images/emoji/1f339.png b/web/static/images/emoji/1f339.png
new file mode 100644
index 000000000..2a9d77598
--- /dev/null
+++ b/web/static/images/emoji/1f339.png
Binary files differ
diff --git a/web/static/images/emoji/1f33a.png b/web/static/images/emoji/1f33a.png
new file mode 100644
index 000000000..e0fd12c95
--- /dev/null
+++ b/web/static/images/emoji/1f33a.png
Binary files differ
diff --git a/web/static/images/emoji/1f33b.png b/web/static/images/emoji/1f33b.png
new file mode 100644
index 000000000..b7cfbf82b
--- /dev/null
+++ b/web/static/images/emoji/1f33b.png
Binary files differ
diff --git a/web/static/images/emoji/1f33c.png b/web/static/images/emoji/1f33c.png
new file mode 100644
index 000000000..ffc25f252
--- /dev/null
+++ b/web/static/images/emoji/1f33c.png
Binary files differ
diff --git a/web/static/images/emoji/1f33d.png b/web/static/images/emoji/1f33d.png
new file mode 100644
index 000000000..e5f2304bd
--- /dev/null
+++ b/web/static/images/emoji/1f33d.png
Binary files differ
diff --git a/web/static/images/emoji/1f33e.png b/web/static/images/emoji/1f33e.png
new file mode 100644
index 000000000..9d3f454f8
--- /dev/null
+++ b/web/static/images/emoji/1f33e.png
Binary files differ
diff --git a/web/static/images/emoji/1f33f.png b/web/static/images/emoji/1f33f.png
new file mode 100644
index 000000000..cb5f8f735
--- /dev/null
+++ b/web/static/images/emoji/1f33f.png
Binary files differ
diff --git a/web/static/images/emoji/1f340.png b/web/static/images/emoji/1f340.png
new file mode 100644
index 000000000..fb11bb638
--- /dev/null
+++ b/web/static/images/emoji/1f340.png
Binary files differ
diff --git a/web/static/images/emoji/1f341.png b/web/static/images/emoji/1f341.png
new file mode 100644
index 000000000..2756537f1
--- /dev/null
+++ b/web/static/images/emoji/1f341.png
Binary files differ
diff --git a/web/static/images/emoji/1f342.png b/web/static/images/emoji/1f342.png
new file mode 100644
index 000000000..430ac0297
--- /dev/null
+++ b/web/static/images/emoji/1f342.png
Binary files differ
diff --git a/web/static/images/emoji/1f343.png b/web/static/images/emoji/1f343.png
new file mode 100644
index 000000000..569a66fac
--- /dev/null
+++ b/web/static/images/emoji/1f343.png
Binary files differ
diff --git a/web/static/images/emoji/1f344.png b/web/static/images/emoji/1f344.png
new file mode 100644
index 000000000..ca7a039cb
--- /dev/null
+++ b/web/static/images/emoji/1f344.png
Binary files differ
diff --git a/web/static/images/emoji/1f345.png b/web/static/images/emoji/1f345.png
new file mode 100644
index 000000000..4114c35ff
--- /dev/null
+++ b/web/static/images/emoji/1f345.png
Binary files differ
diff --git a/web/static/images/emoji/1f346.png b/web/static/images/emoji/1f346.png
new file mode 100644
index 000000000..75c902569
--- /dev/null
+++ b/web/static/images/emoji/1f346.png
Binary files differ
diff --git a/web/static/images/emoji/1f347.png b/web/static/images/emoji/1f347.png
new file mode 100644
index 000000000..20b097131
--- /dev/null
+++ b/web/static/images/emoji/1f347.png
Binary files differ
diff --git a/web/static/images/emoji/1f348.png b/web/static/images/emoji/1f348.png
new file mode 100644
index 000000000..b27f00d25
--- /dev/null
+++ b/web/static/images/emoji/1f348.png
Binary files differ
diff --git a/web/static/images/emoji/1f349.png b/web/static/images/emoji/1f349.png
new file mode 100644
index 000000000..5125aea3e
--- /dev/null
+++ b/web/static/images/emoji/1f349.png
Binary files differ
diff --git a/web/static/images/emoji/1f34a.png b/web/static/images/emoji/1f34a.png
new file mode 100644
index 000000000..7cb15fcf7
--- /dev/null
+++ b/web/static/images/emoji/1f34a.png
Binary files differ
diff --git a/web/static/images/emoji/1f34b.png b/web/static/images/emoji/1f34b.png
new file mode 100644
index 000000000..fa5e87b03
--- /dev/null
+++ b/web/static/images/emoji/1f34b.png
Binary files differ
diff --git a/web/static/images/emoji/1f34c.png b/web/static/images/emoji/1f34c.png
new file mode 100644
index 000000000..5e68af770
--- /dev/null
+++ b/web/static/images/emoji/1f34c.png
Binary files differ
diff --git a/web/static/images/emoji/1f34d.png b/web/static/images/emoji/1f34d.png
new file mode 100644
index 000000000..b9b9f8827
--- /dev/null
+++ b/web/static/images/emoji/1f34d.png
Binary files differ
diff --git a/web/static/images/emoji/1f34e.png b/web/static/images/emoji/1f34e.png
new file mode 100644
index 000000000..bcc5c94aa
--- /dev/null
+++ b/web/static/images/emoji/1f34e.png
Binary files differ
diff --git a/web/static/images/emoji/1f34f.png b/web/static/images/emoji/1f34f.png
new file mode 100644
index 000000000..e37514773
--- /dev/null
+++ b/web/static/images/emoji/1f34f.png
Binary files differ
diff --git a/web/static/images/emoji/1f350.png b/web/static/images/emoji/1f350.png
new file mode 100644
index 000000000..20b63b461
--- /dev/null
+++ b/web/static/images/emoji/1f350.png
Binary files differ
diff --git a/web/static/images/emoji/1f351.png b/web/static/images/emoji/1f351.png
new file mode 100644
index 000000000..24409997d
--- /dev/null
+++ b/web/static/images/emoji/1f351.png
Binary files differ
diff --git a/web/static/images/emoji/1f352.png b/web/static/images/emoji/1f352.png
new file mode 100644
index 000000000..982292e95
--- /dev/null
+++ b/web/static/images/emoji/1f352.png
Binary files differ
diff --git a/web/static/images/emoji/1f353.png b/web/static/images/emoji/1f353.png
new file mode 100644
index 000000000..b28837732
--- /dev/null
+++ b/web/static/images/emoji/1f353.png
Binary files differ
diff --git a/web/static/images/emoji/1f354.png b/web/static/images/emoji/1f354.png
new file mode 100644
index 000000000..b18121930
--- /dev/null
+++ b/web/static/images/emoji/1f354.png
Binary files differ
diff --git a/web/static/images/emoji/1f355.png b/web/static/images/emoji/1f355.png
new file mode 100644
index 000000000..ae1ef6266
--- /dev/null
+++ b/web/static/images/emoji/1f355.png
Binary files differ
diff --git a/web/static/images/emoji/1f356.png b/web/static/images/emoji/1f356.png
new file mode 100644
index 000000000..e9697fef1
--- /dev/null
+++ b/web/static/images/emoji/1f356.png
Binary files differ
diff --git a/web/static/images/emoji/1f357.png b/web/static/images/emoji/1f357.png
new file mode 100644
index 000000000..eafba9a3e
--- /dev/null
+++ b/web/static/images/emoji/1f357.png
Binary files differ
diff --git a/web/static/images/emoji/1f358.png b/web/static/images/emoji/1f358.png
new file mode 100644
index 000000000..83382b6cb
--- /dev/null
+++ b/web/static/images/emoji/1f358.png
Binary files differ
diff --git a/web/static/images/emoji/1f359.png b/web/static/images/emoji/1f359.png
new file mode 100644
index 000000000..4a24a91e2
--- /dev/null
+++ b/web/static/images/emoji/1f359.png
Binary files differ
diff --git a/web/static/images/emoji/1f35a.png b/web/static/images/emoji/1f35a.png
new file mode 100644
index 000000000..8a9076f8a
--- /dev/null
+++ b/web/static/images/emoji/1f35a.png
Binary files differ
diff --git a/web/static/images/emoji/1f35b.png b/web/static/images/emoji/1f35b.png
new file mode 100644
index 000000000..0afd63ca1
--- /dev/null
+++ b/web/static/images/emoji/1f35b.png
Binary files differ
diff --git a/web/static/images/emoji/1f35c.png b/web/static/images/emoji/1f35c.png
new file mode 100644
index 000000000..787827566
--- /dev/null
+++ b/web/static/images/emoji/1f35c.png
Binary files differ
diff --git a/web/static/images/emoji/1f35d.png b/web/static/images/emoji/1f35d.png
new file mode 100644
index 000000000..ff15e877a
--- /dev/null
+++ b/web/static/images/emoji/1f35d.png
Binary files differ
diff --git a/web/static/images/emoji/1f35e.png b/web/static/images/emoji/1f35e.png
new file mode 100644
index 000000000..3ca73ebc7
--- /dev/null
+++ b/web/static/images/emoji/1f35e.png
Binary files differ
diff --git a/web/static/images/emoji/1f35f.png b/web/static/images/emoji/1f35f.png
new file mode 100644
index 000000000..bed7a0153
--- /dev/null
+++ b/web/static/images/emoji/1f35f.png
Binary files differ
diff --git a/web/static/images/emoji/1f360.png b/web/static/images/emoji/1f360.png
new file mode 100644
index 000000000..7c60e76cb
--- /dev/null
+++ b/web/static/images/emoji/1f360.png
Binary files differ
diff --git a/web/static/images/emoji/1f361.png b/web/static/images/emoji/1f361.png
new file mode 100644
index 000000000..d679ebc02
--- /dev/null
+++ b/web/static/images/emoji/1f361.png
Binary files differ
diff --git a/web/static/images/emoji/1f362.png b/web/static/images/emoji/1f362.png
new file mode 100644
index 000000000..8ac803517
--- /dev/null
+++ b/web/static/images/emoji/1f362.png
Binary files differ
diff --git a/web/static/images/emoji/1f363.png b/web/static/images/emoji/1f363.png
new file mode 100644
index 000000000..8c2f6826e
--- /dev/null
+++ b/web/static/images/emoji/1f363.png
Binary files differ
diff --git a/web/static/images/emoji/1f364.png b/web/static/images/emoji/1f364.png
new file mode 100644
index 000000000..30c165438
--- /dev/null
+++ b/web/static/images/emoji/1f364.png
Binary files differ
diff --git a/web/static/images/emoji/1f365.png b/web/static/images/emoji/1f365.png
new file mode 100644
index 000000000..6ff94bc36
--- /dev/null
+++ b/web/static/images/emoji/1f365.png
Binary files differ
diff --git a/web/static/images/emoji/1f366.png b/web/static/images/emoji/1f366.png
new file mode 100644
index 000000000..39c2e6a8f
--- /dev/null
+++ b/web/static/images/emoji/1f366.png
Binary files differ
diff --git a/web/static/images/emoji/1f367.png b/web/static/images/emoji/1f367.png
new file mode 100644
index 000000000..a14f0f4ec
--- /dev/null
+++ b/web/static/images/emoji/1f367.png
Binary files differ
diff --git a/web/static/images/emoji/1f368.png b/web/static/images/emoji/1f368.png
new file mode 100644
index 000000000..5dc67b4cc
--- /dev/null
+++ b/web/static/images/emoji/1f368.png
Binary files differ
diff --git a/web/static/images/emoji/1f369.png b/web/static/images/emoji/1f369.png
new file mode 100644
index 000000000..b415c96bc
--- /dev/null
+++ b/web/static/images/emoji/1f369.png
Binary files differ
diff --git a/web/static/images/emoji/1f36a.png b/web/static/images/emoji/1f36a.png
new file mode 100644
index 000000000..8eb640e8d
--- /dev/null
+++ b/web/static/images/emoji/1f36a.png
Binary files differ
diff --git a/web/static/images/emoji/1f36b.png b/web/static/images/emoji/1f36b.png
new file mode 100644
index 000000000..f76d0902e
--- /dev/null
+++ b/web/static/images/emoji/1f36b.png
Binary files differ
diff --git a/web/static/images/emoji/1f36c.png b/web/static/images/emoji/1f36c.png
new file mode 100644
index 000000000..c067807c1
--- /dev/null
+++ b/web/static/images/emoji/1f36c.png
Binary files differ
diff --git a/web/static/images/emoji/1f36d.png b/web/static/images/emoji/1f36d.png
new file mode 100644
index 000000000..2c6a0ed4c
--- /dev/null
+++ b/web/static/images/emoji/1f36d.png
Binary files differ
diff --git a/web/static/images/emoji/1f36e.png b/web/static/images/emoji/1f36e.png
new file mode 100644
index 000000000..44af92a57
--- /dev/null
+++ b/web/static/images/emoji/1f36e.png
Binary files differ
diff --git a/web/static/images/emoji/1f36f.png b/web/static/images/emoji/1f36f.png
new file mode 100644
index 000000000..a563f59c7
--- /dev/null
+++ b/web/static/images/emoji/1f36f.png
Binary files differ
diff --git a/web/static/images/emoji/1f370.png b/web/static/images/emoji/1f370.png
new file mode 100644
index 000000000..0be915e5b
--- /dev/null
+++ b/web/static/images/emoji/1f370.png
Binary files differ
diff --git a/web/static/images/emoji/1f371.png b/web/static/images/emoji/1f371.png
new file mode 100644
index 000000000..58af834fd
--- /dev/null
+++ b/web/static/images/emoji/1f371.png
Binary files differ
diff --git a/web/static/images/emoji/1f372.png b/web/static/images/emoji/1f372.png
new file mode 100644
index 000000000..6f8305338
--- /dev/null
+++ b/web/static/images/emoji/1f372.png
Binary files differ
diff --git a/web/static/images/emoji/1f373.png b/web/static/images/emoji/1f373.png
new file mode 100644
index 000000000..b5c090a17
--- /dev/null
+++ b/web/static/images/emoji/1f373.png
Binary files differ
diff --git a/web/static/images/emoji/1f374.png b/web/static/images/emoji/1f374.png
new file mode 100644
index 000000000..ea13776ee
--- /dev/null
+++ b/web/static/images/emoji/1f374.png
Binary files differ
diff --git a/web/static/images/emoji/1f375.png b/web/static/images/emoji/1f375.png
new file mode 100644
index 000000000..b8d25a962
--- /dev/null
+++ b/web/static/images/emoji/1f375.png
Binary files differ
diff --git a/web/static/images/emoji/1f376.png b/web/static/images/emoji/1f376.png
new file mode 100644
index 000000000..40a158bfe
--- /dev/null
+++ b/web/static/images/emoji/1f376.png
Binary files differ
diff --git a/web/static/images/emoji/1f377.png b/web/static/images/emoji/1f377.png
new file mode 100644
index 000000000..7aea60cc8
--- /dev/null
+++ b/web/static/images/emoji/1f377.png
Binary files differ
diff --git a/web/static/images/emoji/1f378.png b/web/static/images/emoji/1f378.png
new file mode 100644
index 000000000..abff15aa8
--- /dev/null
+++ b/web/static/images/emoji/1f378.png
Binary files differ
diff --git a/web/static/images/emoji/1f379.png b/web/static/images/emoji/1f379.png
new file mode 100644
index 000000000..34a5a385c
--- /dev/null
+++ b/web/static/images/emoji/1f379.png
Binary files differ
diff --git a/web/static/images/emoji/1f37a.png b/web/static/images/emoji/1f37a.png
new file mode 100644
index 000000000..de0c3ddd9
--- /dev/null
+++ b/web/static/images/emoji/1f37a.png
Binary files differ
diff --git a/web/static/images/emoji/1f37b.png b/web/static/images/emoji/1f37b.png
new file mode 100644
index 000000000..04ba4d9f4
--- /dev/null
+++ b/web/static/images/emoji/1f37b.png
Binary files differ
diff --git a/web/static/images/emoji/1f37c.png b/web/static/images/emoji/1f37c.png
new file mode 100644
index 000000000..64e9edee3
--- /dev/null
+++ b/web/static/images/emoji/1f37c.png
Binary files differ
diff --git a/web/static/images/emoji/1f37d.png b/web/static/images/emoji/1f37d.png
new file mode 100644
index 000000000..d2ebb8435
--- /dev/null
+++ b/web/static/images/emoji/1f37d.png
Binary files differ
diff --git a/web/static/images/emoji/1f380.png b/web/static/images/emoji/1f380.png
new file mode 100644
index 000000000..ea7ae1d76
--- /dev/null
+++ b/web/static/images/emoji/1f380.png
Binary files differ
diff --git a/web/static/images/emoji/1f381.png b/web/static/images/emoji/1f381.png
new file mode 100644
index 000000000..bde801b55
--- /dev/null
+++ b/web/static/images/emoji/1f381.png
Binary files differ
diff --git a/web/static/images/emoji/1f382.png b/web/static/images/emoji/1f382.png
new file mode 100644
index 000000000..c5253b099
--- /dev/null
+++ b/web/static/images/emoji/1f382.png
Binary files differ
diff --git a/web/static/images/emoji/1f383.png b/web/static/images/emoji/1f383.png
new file mode 100644
index 000000000..0ea29490d
--- /dev/null
+++ b/web/static/images/emoji/1f383.png
Binary files differ
diff --git a/web/static/images/emoji/1f384.png b/web/static/images/emoji/1f384.png
new file mode 100644
index 000000000..7674eb441
--- /dev/null
+++ b/web/static/images/emoji/1f384.png
Binary files differ
diff --git a/web/static/images/emoji/1f385.png b/web/static/images/emoji/1f385.png
new file mode 100644
index 000000000..29d63fd91
--- /dev/null
+++ b/web/static/images/emoji/1f385.png
Binary files differ
diff --git a/web/static/images/emoji/1f386.png b/web/static/images/emoji/1f386.png
new file mode 100644
index 000000000..8e081a718
--- /dev/null
+++ b/web/static/images/emoji/1f386.png
Binary files differ
diff --git a/web/static/images/emoji/1f387.png b/web/static/images/emoji/1f387.png
new file mode 100644
index 000000000..968a7172b
--- /dev/null
+++ b/web/static/images/emoji/1f387.png
Binary files differ
diff --git a/web/static/images/emoji/1f388.png b/web/static/images/emoji/1f388.png
new file mode 100644
index 000000000..3cea35eba
--- /dev/null
+++ b/web/static/images/emoji/1f388.png
Binary files differ
diff --git a/web/static/images/emoji/1f389.png b/web/static/images/emoji/1f389.png
new file mode 100644
index 000000000..003a66996
--- /dev/null
+++ b/web/static/images/emoji/1f389.png
Binary files differ
diff --git a/web/static/images/emoji/1f38a.png b/web/static/images/emoji/1f38a.png
new file mode 100644
index 000000000..74c61e434
--- /dev/null
+++ b/web/static/images/emoji/1f38a.png
Binary files differ
diff --git a/web/static/images/emoji/1f38b.png b/web/static/images/emoji/1f38b.png
new file mode 100644
index 000000000..ec7d8cc22
--- /dev/null
+++ b/web/static/images/emoji/1f38b.png
Binary files differ
diff --git a/web/static/images/emoji/1f38c.png b/web/static/images/emoji/1f38c.png
new file mode 100644
index 000000000..5d88b0ad0
--- /dev/null
+++ b/web/static/images/emoji/1f38c.png
Binary files differ
diff --git a/web/static/images/emoji/1f38d.png b/web/static/images/emoji/1f38d.png
new file mode 100644
index 000000000..4e27cc4c5
--- /dev/null
+++ b/web/static/images/emoji/1f38d.png
Binary files differ
diff --git a/web/static/images/emoji/1f38e.png b/web/static/images/emoji/1f38e.png
new file mode 100644
index 000000000..dcd7b9385
--- /dev/null
+++ b/web/static/images/emoji/1f38e.png
Binary files differ
diff --git a/web/static/images/emoji/1f38f.png b/web/static/images/emoji/1f38f.png
new file mode 100644
index 000000000..a6bbd0ea3
--- /dev/null
+++ b/web/static/images/emoji/1f38f.png
Binary files differ
diff --git a/web/static/images/emoji/1f390.png b/web/static/images/emoji/1f390.png
new file mode 100644
index 000000000..8aee0e8bd
--- /dev/null
+++ b/web/static/images/emoji/1f390.png
Binary files differ
diff --git a/web/static/images/emoji/1f391.png b/web/static/images/emoji/1f391.png
new file mode 100644
index 000000000..8ce954451
--- /dev/null
+++ b/web/static/images/emoji/1f391.png
Binary files differ
diff --git a/web/static/images/emoji/1f392.png b/web/static/images/emoji/1f392.png
new file mode 100644
index 000000000..f9bb6c1aa
--- /dev/null
+++ b/web/static/images/emoji/1f392.png
Binary files differ
diff --git a/web/static/images/emoji/1f393.png b/web/static/images/emoji/1f393.png
new file mode 100644
index 000000000..4d5744f60
--- /dev/null
+++ b/web/static/images/emoji/1f393.png
Binary files differ
diff --git a/web/static/images/emoji/1f394.png b/web/static/images/emoji/1f394.png
new file mode 100644
index 000000000..62db66cd5
--- /dev/null
+++ b/web/static/images/emoji/1f394.png
Binary files differ
diff --git a/web/static/images/emoji/1f395.png b/web/static/images/emoji/1f395.png
new file mode 100644
index 000000000..8b28b3fe7
--- /dev/null
+++ b/web/static/images/emoji/1f395.png
Binary files differ
diff --git a/web/static/images/emoji/1f396.png b/web/static/images/emoji/1f396.png
new file mode 100644
index 000000000..6558c71fc
--- /dev/null
+++ b/web/static/images/emoji/1f396.png
Binary files differ
diff --git a/web/static/images/emoji/1f397.png b/web/static/images/emoji/1f397.png
new file mode 100644
index 000000000..8104604b6
--- /dev/null
+++ b/web/static/images/emoji/1f397.png
Binary files differ
diff --git a/web/static/images/emoji/1f398.png b/web/static/images/emoji/1f398.png
new file mode 100644
index 000000000..862d237a8
--- /dev/null
+++ b/web/static/images/emoji/1f398.png
Binary files differ
diff --git a/web/static/images/emoji/1f399.png b/web/static/images/emoji/1f399.png
new file mode 100644
index 000000000..7e186826e
--- /dev/null
+++ b/web/static/images/emoji/1f399.png
Binary files differ
diff --git a/web/static/images/emoji/1f39a.png b/web/static/images/emoji/1f39a.png
new file mode 100644
index 000000000..389784aba
--- /dev/null
+++ b/web/static/images/emoji/1f39a.png
Binary files differ
diff --git a/web/static/images/emoji/1f39b.png b/web/static/images/emoji/1f39b.png
new file mode 100644
index 000000000..ab4045342
--- /dev/null
+++ b/web/static/images/emoji/1f39b.png
Binary files differ
diff --git a/web/static/images/emoji/1f39c.png b/web/static/images/emoji/1f39c.png
new file mode 100644
index 000000000..187291ffc
--- /dev/null
+++ b/web/static/images/emoji/1f39c.png
Binary files differ
diff --git a/web/static/images/emoji/1f39d.png b/web/static/images/emoji/1f39d.png
new file mode 100644
index 000000000..829ca50ce
--- /dev/null
+++ b/web/static/images/emoji/1f39d.png
Binary files differ
diff --git a/web/static/images/emoji/1f39e.png b/web/static/images/emoji/1f39e.png
new file mode 100644
index 000000000..d2b9082bc
--- /dev/null
+++ b/web/static/images/emoji/1f39e.png
Binary files differ
diff --git a/web/static/images/emoji/1f39f.png b/web/static/images/emoji/1f39f.png
new file mode 100644
index 000000000..e12819269
--- /dev/null
+++ b/web/static/images/emoji/1f39f.png
Binary files differ
diff --git a/web/static/images/emoji/1f3a0.png b/web/static/images/emoji/1f3a0.png
new file mode 100644
index 000000000..33f159f06
--- /dev/null
+++ b/web/static/images/emoji/1f3a0.png
Binary files differ
diff --git a/web/static/images/emoji/1f3a1.png b/web/static/images/emoji/1f3a1.png
new file mode 100644
index 000000000..56bfd87fb
--- /dev/null
+++ b/web/static/images/emoji/1f3a1.png
Binary files differ
diff --git a/web/static/images/emoji/1f3a2.png b/web/static/images/emoji/1f3a2.png
new file mode 100644
index 000000000..0c506765e
--- /dev/null
+++ b/web/static/images/emoji/1f3a2.png
Binary files differ
diff --git a/web/static/images/emoji/1f3a3.png b/web/static/images/emoji/1f3a3.png
new file mode 100644
index 000000000..270a011dd
--- /dev/null
+++ b/web/static/images/emoji/1f3a3.png
Binary files differ
diff --git a/web/static/images/emoji/1f3a4.png b/web/static/images/emoji/1f3a4.png
new file mode 100644
index 000000000..346b8967c
--- /dev/null
+++ b/web/static/images/emoji/1f3a4.png
Binary files differ
diff --git a/web/static/images/emoji/1f3a5.png b/web/static/images/emoji/1f3a5.png
new file mode 100644
index 000000000..077458b67
--- /dev/null
+++ b/web/static/images/emoji/1f3a5.png
Binary files differ
diff --git a/web/static/images/emoji/1f3a6.png b/web/static/images/emoji/1f3a6.png
new file mode 100644
index 000000000..972b57df7
--- /dev/null
+++ b/web/static/images/emoji/1f3a6.png
Binary files differ
diff --git a/web/static/images/emoji/1f3a7.png b/web/static/images/emoji/1f3a7.png
new file mode 100644
index 000000000..3335d4060
--- /dev/null
+++ b/web/static/images/emoji/1f3a7.png
Binary files differ
diff --git a/web/static/images/emoji/1f3a8.png b/web/static/images/emoji/1f3a8.png
new file mode 100644
index 000000000..05116974d
--- /dev/null
+++ b/web/static/images/emoji/1f3a8.png
Binary files differ
diff --git a/web/static/images/emoji/1f3a9.png b/web/static/images/emoji/1f3a9.png
new file mode 100644
index 000000000..a945ccb8b
--- /dev/null
+++ b/web/static/images/emoji/1f3a9.png
Binary files differ
diff --git a/web/static/images/emoji/1f3aa.png b/web/static/images/emoji/1f3aa.png
new file mode 100644
index 000000000..713b4f085
--- /dev/null
+++ b/web/static/images/emoji/1f3aa.png
Binary files differ
diff --git a/web/static/images/emoji/1f3ab.png b/web/static/images/emoji/1f3ab.png
new file mode 100644
index 000000000..1e697cab6
--- /dev/null
+++ b/web/static/images/emoji/1f3ab.png
Binary files differ
diff --git a/web/static/images/emoji/1f3ac.png b/web/static/images/emoji/1f3ac.png
new file mode 100644
index 000000000..54bbba809
--- /dev/null
+++ b/web/static/images/emoji/1f3ac.png
Binary files differ
diff --git a/web/static/images/emoji/1f3ad.png b/web/static/images/emoji/1f3ad.png
new file mode 100644
index 000000000..97a5bb7fe
--- /dev/null
+++ b/web/static/images/emoji/1f3ad.png
Binary files differ
diff --git a/web/static/images/emoji/1f3ae.png b/web/static/images/emoji/1f3ae.png
new file mode 100644
index 000000000..702832e99
--- /dev/null
+++ b/web/static/images/emoji/1f3ae.png
Binary files differ
diff --git a/web/static/images/emoji/1f3af.png b/web/static/images/emoji/1f3af.png
new file mode 100644
index 000000000..527b6a94e
--- /dev/null
+++ b/web/static/images/emoji/1f3af.png
Binary files differ
diff --git a/web/static/images/emoji/1f3b0.png b/web/static/images/emoji/1f3b0.png
new file mode 100644
index 000000000..81db7b1c0
--- /dev/null
+++ b/web/static/images/emoji/1f3b0.png
Binary files differ
diff --git a/web/static/images/emoji/1f3b1.png b/web/static/images/emoji/1f3b1.png
new file mode 100644
index 000000000..7bf80b6d7
--- /dev/null
+++ b/web/static/images/emoji/1f3b1.png
Binary files differ
diff --git a/web/static/images/emoji/1f3b2.png b/web/static/images/emoji/1f3b2.png
new file mode 100644
index 000000000..7723d290b
--- /dev/null
+++ b/web/static/images/emoji/1f3b2.png
Binary files differ
diff --git a/web/static/images/emoji/1f3b3.png b/web/static/images/emoji/1f3b3.png
new file mode 100644
index 000000000..e41edfbdb
--- /dev/null
+++ b/web/static/images/emoji/1f3b3.png
Binary files differ
diff --git a/web/static/images/emoji/1f3b4.png b/web/static/images/emoji/1f3b4.png
new file mode 100644
index 000000000..b5dff4687
--- /dev/null
+++ b/web/static/images/emoji/1f3b4.png
Binary files differ
diff --git a/web/static/images/emoji/1f3b5.png b/web/static/images/emoji/1f3b5.png
new file mode 100644
index 000000000..f9bc86e4e
--- /dev/null
+++ b/web/static/images/emoji/1f3b5.png
Binary files differ
diff --git a/web/static/images/emoji/1f3b6.png b/web/static/images/emoji/1f3b6.png
new file mode 100644
index 000000000..df2810aa4
--- /dev/null
+++ b/web/static/images/emoji/1f3b6.png
Binary files differ
diff --git a/web/static/images/emoji/1f3b7.png b/web/static/images/emoji/1f3b7.png
new file mode 100644
index 000000000..63446652f
--- /dev/null
+++ b/web/static/images/emoji/1f3b7.png
Binary files differ
diff --git a/web/static/images/emoji/1f3b8.png b/web/static/images/emoji/1f3b8.png
new file mode 100644
index 000000000..ab62a7fbb
--- /dev/null
+++ b/web/static/images/emoji/1f3b8.png
Binary files differ
diff --git a/web/static/images/emoji/1f3b9.png b/web/static/images/emoji/1f3b9.png
new file mode 100644
index 000000000..c6c029920
--- /dev/null
+++ b/web/static/images/emoji/1f3b9.png
Binary files differ
diff --git a/web/static/images/emoji/1f3ba.png b/web/static/images/emoji/1f3ba.png
new file mode 100644
index 000000000..c2270ccbf
--- /dev/null
+++ b/web/static/images/emoji/1f3ba.png
Binary files differ
diff --git a/web/static/images/emoji/1f3bb.png b/web/static/images/emoji/1f3bb.png
new file mode 100644
index 000000000..0bb8e0a10
--- /dev/null
+++ b/web/static/images/emoji/1f3bb.png
Binary files differ
diff --git a/web/static/images/emoji/1f3bc.png b/web/static/images/emoji/1f3bc.png
new file mode 100644
index 000000000..ae50ab288
--- /dev/null
+++ b/web/static/images/emoji/1f3bc.png
Binary files differ
diff --git a/web/static/images/emoji/1f3bd.png b/web/static/images/emoji/1f3bd.png
new file mode 100644
index 000000000..e49632dad
--- /dev/null
+++ b/web/static/images/emoji/1f3bd.png
Binary files differ
diff --git a/web/static/images/emoji/1f3be.png b/web/static/images/emoji/1f3be.png
new file mode 100644
index 000000000..cade3a566
--- /dev/null
+++ b/web/static/images/emoji/1f3be.png
Binary files differ
diff --git a/web/static/images/emoji/1f3bf.png b/web/static/images/emoji/1f3bf.png
new file mode 100644
index 000000000..ac8151619
--- /dev/null
+++ b/web/static/images/emoji/1f3bf.png
Binary files differ
diff --git a/web/static/images/emoji/1f3c0.png b/web/static/images/emoji/1f3c0.png
new file mode 100644
index 000000000..e9b1c735a
--- /dev/null
+++ b/web/static/images/emoji/1f3c0.png
Binary files differ
diff --git a/web/static/images/emoji/1f3c1.png b/web/static/images/emoji/1f3c1.png
new file mode 100644
index 000000000..9f1d564f6
--- /dev/null
+++ b/web/static/images/emoji/1f3c1.png
Binary files differ
diff --git a/web/static/images/emoji/1f3c2.png b/web/static/images/emoji/1f3c2.png
new file mode 100644
index 000000000..076c48889
--- /dev/null
+++ b/web/static/images/emoji/1f3c2.png
Binary files differ
diff --git a/web/static/images/emoji/1f3c3.png b/web/static/images/emoji/1f3c3.png
new file mode 100644
index 000000000..8dcc38400
--- /dev/null
+++ b/web/static/images/emoji/1f3c3.png
Binary files differ
diff --git a/web/static/images/emoji/1f3c4.png b/web/static/images/emoji/1f3c4.png
new file mode 100644
index 000000000..74b216a67
--- /dev/null
+++ b/web/static/images/emoji/1f3c4.png
Binary files differ
diff --git a/web/static/images/emoji/1f3c5.png b/web/static/images/emoji/1f3c5.png
new file mode 100644
index 000000000..1bf04b7c4
--- /dev/null
+++ b/web/static/images/emoji/1f3c5.png
Binary files differ
diff --git a/web/static/images/emoji/1f3c6.png b/web/static/images/emoji/1f3c6.png
new file mode 100644
index 000000000..38429fe19
--- /dev/null
+++ b/web/static/images/emoji/1f3c6.png
Binary files differ
diff --git a/web/static/images/emoji/1f3c7.png b/web/static/images/emoji/1f3c7.png
new file mode 100644
index 000000000..a7abb355f
--- /dev/null
+++ b/web/static/images/emoji/1f3c7.png
Binary files differ
diff --git a/web/static/images/emoji/1f3c8.png b/web/static/images/emoji/1f3c8.png
new file mode 100644
index 000000000..24b5673b0
--- /dev/null
+++ b/web/static/images/emoji/1f3c8.png
Binary files differ
diff --git a/web/static/images/emoji/1f3c9.png b/web/static/images/emoji/1f3c9.png
new file mode 100644
index 000000000..3f72e529a
--- /dev/null
+++ b/web/static/images/emoji/1f3c9.png
Binary files differ
diff --git a/web/static/images/emoji/1f3ca.png b/web/static/images/emoji/1f3ca.png
new file mode 100644
index 000000000..9f3e63702
--- /dev/null
+++ b/web/static/images/emoji/1f3ca.png
Binary files differ
diff --git a/web/static/images/emoji/1f3cb.png b/web/static/images/emoji/1f3cb.png
new file mode 100644
index 000000000..db6bb3d51
--- /dev/null
+++ b/web/static/images/emoji/1f3cb.png
Binary files differ
diff --git a/web/static/images/emoji/1f3cc.png b/web/static/images/emoji/1f3cc.png
new file mode 100644
index 000000000..9aa2f036f
--- /dev/null
+++ b/web/static/images/emoji/1f3cc.png
Binary files differ
diff --git a/web/static/images/emoji/1f3cd.png b/web/static/images/emoji/1f3cd.png
new file mode 100644
index 000000000..8dcffc8f9
--- /dev/null
+++ b/web/static/images/emoji/1f3cd.png
Binary files differ
diff --git a/web/static/images/emoji/1f3ce.png b/web/static/images/emoji/1f3ce.png
new file mode 100644
index 000000000..0f76828f6
--- /dev/null
+++ b/web/static/images/emoji/1f3ce.png
Binary files differ
diff --git a/web/static/images/emoji/1f3d4.png b/web/static/images/emoji/1f3d4.png
new file mode 100644
index 000000000..f9071adec
--- /dev/null
+++ b/web/static/images/emoji/1f3d4.png
Binary files differ
diff --git a/web/static/images/emoji/1f3d5.png b/web/static/images/emoji/1f3d5.png
new file mode 100644
index 000000000..d45a07fcf
--- /dev/null
+++ b/web/static/images/emoji/1f3d5.png
Binary files differ
diff --git a/web/static/images/emoji/1f3d6.png b/web/static/images/emoji/1f3d6.png
new file mode 100644
index 000000000..0e244c164
--- /dev/null
+++ b/web/static/images/emoji/1f3d6.png
Binary files differ
diff --git a/web/static/images/emoji/1f3d7.png b/web/static/images/emoji/1f3d7.png
new file mode 100644
index 000000000..05a287fee
--- /dev/null
+++ b/web/static/images/emoji/1f3d7.png
Binary files differ
diff --git a/web/static/images/emoji/1f3d8.png b/web/static/images/emoji/1f3d8.png
new file mode 100644
index 000000000..b3dde7347
--- /dev/null
+++ b/web/static/images/emoji/1f3d8.png
Binary files differ
diff --git a/web/static/images/emoji/1f3d9.png b/web/static/images/emoji/1f3d9.png
new file mode 100644
index 000000000..4d331db74
--- /dev/null
+++ b/web/static/images/emoji/1f3d9.png
Binary files differ
diff --git a/web/static/images/emoji/1f3da.png b/web/static/images/emoji/1f3da.png
new file mode 100644
index 000000000..316e082d1
--- /dev/null
+++ b/web/static/images/emoji/1f3da.png
Binary files differ
diff --git a/web/static/images/emoji/1f3db.png b/web/static/images/emoji/1f3db.png
new file mode 100644
index 000000000..71150c7c5
--- /dev/null
+++ b/web/static/images/emoji/1f3db.png
Binary files differ
diff --git a/web/static/images/emoji/1f3dc.png b/web/static/images/emoji/1f3dc.png
new file mode 100644
index 000000000..b627c829b
--- /dev/null
+++ b/web/static/images/emoji/1f3dc.png
Binary files differ
diff --git a/web/static/images/emoji/1f3dd.png b/web/static/images/emoji/1f3dd.png
new file mode 100644
index 000000000..946ef26a5
--- /dev/null
+++ b/web/static/images/emoji/1f3dd.png
Binary files differ
diff --git a/web/static/images/emoji/1f3de.png b/web/static/images/emoji/1f3de.png
new file mode 100644
index 000000000..ff6fc0754
--- /dev/null
+++ b/web/static/images/emoji/1f3de.png
Binary files differ
diff --git a/web/static/images/emoji/1f3df.png b/web/static/images/emoji/1f3df.png
new file mode 100644
index 000000000..d1c925d35
--- /dev/null
+++ b/web/static/images/emoji/1f3df.png
Binary files differ
diff --git a/web/static/images/emoji/1f3e0.png b/web/static/images/emoji/1f3e0.png
new file mode 100644
index 000000000..90551d823
--- /dev/null
+++ b/web/static/images/emoji/1f3e0.png
Binary files differ
diff --git a/web/static/images/emoji/1f3e1.png b/web/static/images/emoji/1f3e1.png
new file mode 100644
index 000000000..b00186c46
--- /dev/null
+++ b/web/static/images/emoji/1f3e1.png
Binary files differ
diff --git a/web/static/images/emoji/1f3e2.png b/web/static/images/emoji/1f3e2.png
new file mode 100644
index 000000000..52a6bb4a4
--- /dev/null
+++ b/web/static/images/emoji/1f3e2.png
Binary files differ
diff --git a/web/static/images/emoji/1f3e3.png b/web/static/images/emoji/1f3e3.png
new file mode 100644
index 000000000..f819dac89
--- /dev/null
+++ b/web/static/images/emoji/1f3e3.png
Binary files differ
diff --git a/web/static/images/emoji/1f3e4.png b/web/static/images/emoji/1f3e4.png
new file mode 100644
index 000000000..b1cc0ddb8
--- /dev/null
+++ b/web/static/images/emoji/1f3e4.png
Binary files differ
diff --git a/web/static/images/emoji/1f3e5.png b/web/static/images/emoji/1f3e5.png
new file mode 100644
index 000000000..9a53371c1
--- /dev/null
+++ b/web/static/images/emoji/1f3e5.png
Binary files differ
diff --git a/web/static/images/emoji/1f3e6.png b/web/static/images/emoji/1f3e6.png
new file mode 100644
index 000000000..5cde6caa9
--- /dev/null
+++ b/web/static/images/emoji/1f3e6.png
Binary files differ
diff --git a/web/static/images/emoji/1f3e7.png b/web/static/images/emoji/1f3e7.png
new file mode 100644
index 000000000..0769e688b
--- /dev/null
+++ b/web/static/images/emoji/1f3e7.png
Binary files differ
diff --git a/web/static/images/emoji/1f3e8.png b/web/static/images/emoji/1f3e8.png
new file mode 100644
index 000000000..7a22e341f
--- /dev/null
+++ b/web/static/images/emoji/1f3e8.png
Binary files differ
diff --git a/web/static/images/emoji/1f3e9.png b/web/static/images/emoji/1f3e9.png
new file mode 100644
index 000000000..e3b893388
--- /dev/null
+++ b/web/static/images/emoji/1f3e9.png
Binary files differ
diff --git a/web/static/images/emoji/1f3ea.png b/web/static/images/emoji/1f3ea.png
new file mode 100644
index 000000000..fbfc257ee
--- /dev/null
+++ b/web/static/images/emoji/1f3ea.png
Binary files differ
diff --git a/web/static/images/emoji/1f3eb.png b/web/static/images/emoji/1f3eb.png
new file mode 100644
index 000000000..f8e0814e0
--- /dev/null
+++ b/web/static/images/emoji/1f3eb.png
Binary files differ
diff --git a/web/static/images/emoji/1f3ec.png b/web/static/images/emoji/1f3ec.png
new file mode 100644
index 000000000..bc83c16f6
--- /dev/null
+++ b/web/static/images/emoji/1f3ec.png
Binary files differ
diff --git a/web/static/images/emoji/1f3ed.png b/web/static/images/emoji/1f3ed.png
new file mode 100644
index 000000000..e2d70133b
--- /dev/null
+++ b/web/static/images/emoji/1f3ed.png
Binary files differ
diff --git a/web/static/images/emoji/1f3ee.png b/web/static/images/emoji/1f3ee.png
new file mode 100644
index 000000000..02345bc3e
--- /dev/null
+++ b/web/static/images/emoji/1f3ee.png
Binary files differ
diff --git a/web/static/images/emoji/1f3ef.png b/web/static/images/emoji/1f3ef.png
new file mode 100644
index 000000000..ebdeecf6a
--- /dev/null
+++ b/web/static/images/emoji/1f3ef.png
Binary files differ
diff --git a/web/static/images/emoji/1f3f0.png b/web/static/images/emoji/1f3f0.png
new file mode 100644
index 000000000..35cdcf722
--- /dev/null
+++ b/web/static/images/emoji/1f3f0.png
Binary files differ
diff --git a/web/static/images/emoji/1f3f1.png b/web/static/images/emoji/1f3f1.png
new file mode 100644
index 000000000..dc2f36cd3
--- /dev/null
+++ b/web/static/images/emoji/1f3f1.png
Binary files differ
diff --git a/web/static/images/emoji/1f3f2.png b/web/static/images/emoji/1f3f2.png
new file mode 100644
index 000000000..26f5a503e
--- /dev/null
+++ b/web/static/images/emoji/1f3f2.png
Binary files differ
diff --git a/web/static/images/emoji/1f3f3.png b/web/static/images/emoji/1f3f3.png
new file mode 100644
index 000000000..bf6124fab
--- /dev/null
+++ b/web/static/images/emoji/1f3f3.png
Binary files differ
diff --git a/web/static/images/emoji/1f3f4.png b/web/static/images/emoji/1f3f4.png
new file mode 100644
index 000000000..d48e98fe0
--- /dev/null
+++ b/web/static/images/emoji/1f3f4.png
Binary files differ
diff --git a/web/static/images/emoji/1f3f5.png b/web/static/images/emoji/1f3f5.png
new file mode 100644
index 000000000..8312eb177
--- /dev/null
+++ b/web/static/images/emoji/1f3f5.png
Binary files differ
diff --git a/web/static/images/emoji/1f3f6.png b/web/static/images/emoji/1f3f6.png
new file mode 100644
index 000000000..d16b265aa
--- /dev/null
+++ b/web/static/images/emoji/1f3f6.png
Binary files differ
diff --git a/web/static/images/emoji/1f3f7.png b/web/static/images/emoji/1f3f7.png
new file mode 100644
index 000000000..411124e2c
--- /dev/null
+++ b/web/static/images/emoji/1f3f7.png
Binary files differ
diff --git a/web/static/images/emoji/1f400.png b/web/static/images/emoji/1f400.png
new file mode 100644
index 000000000..58c2d79d8
--- /dev/null
+++ b/web/static/images/emoji/1f400.png
Binary files differ
diff --git a/web/static/images/emoji/1f401.png b/web/static/images/emoji/1f401.png
new file mode 100644
index 000000000..5b1b1137f
--- /dev/null
+++ b/web/static/images/emoji/1f401.png
Binary files differ
diff --git a/web/static/images/emoji/1f402.png b/web/static/images/emoji/1f402.png
new file mode 100644
index 000000000..e1688630c
--- /dev/null
+++ b/web/static/images/emoji/1f402.png
Binary files differ
diff --git a/web/static/images/emoji/1f403.png b/web/static/images/emoji/1f403.png
new file mode 100644
index 000000000..2c8fa68e8
--- /dev/null
+++ b/web/static/images/emoji/1f403.png
Binary files differ
diff --git a/web/static/images/emoji/1f404.png b/web/static/images/emoji/1f404.png
new file mode 100644
index 000000000..b3767f6c5
--- /dev/null
+++ b/web/static/images/emoji/1f404.png
Binary files differ
diff --git a/web/static/images/emoji/1f405.png b/web/static/images/emoji/1f405.png
new file mode 100644
index 000000000..c7910315e
--- /dev/null
+++ b/web/static/images/emoji/1f405.png
Binary files differ
diff --git a/web/static/images/emoji/1f406.png b/web/static/images/emoji/1f406.png
new file mode 100644
index 000000000..eb16aa9c6
--- /dev/null
+++ b/web/static/images/emoji/1f406.png
Binary files differ
diff --git a/web/static/images/emoji/1f407.png b/web/static/images/emoji/1f407.png
new file mode 100644
index 000000000..ab2fae0fc
--- /dev/null
+++ b/web/static/images/emoji/1f407.png
Binary files differ
diff --git a/web/static/images/emoji/1f408.png b/web/static/images/emoji/1f408.png
new file mode 100644
index 000000000..79f06af48
--- /dev/null
+++ b/web/static/images/emoji/1f408.png
Binary files differ
diff --git a/web/static/images/emoji/1f409.png b/web/static/images/emoji/1f409.png
new file mode 100644
index 000000000..b5b635770
--- /dev/null
+++ b/web/static/images/emoji/1f409.png
Binary files differ
diff --git a/web/static/images/emoji/1f40a.png b/web/static/images/emoji/1f40a.png
new file mode 100644
index 000000000..3b53cacf8
--- /dev/null
+++ b/web/static/images/emoji/1f40a.png
Binary files differ
diff --git a/web/static/images/emoji/1f40b.png b/web/static/images/emoji/1f40b.png
new file mode 100644
index 000000000..181860530
--- /dev/null
+++ b/web/static/images/emoji/1f40b.png
Binary files differ
diff --git a/web/static/images/emoji/1f40c.png b/web/static/images/emoji/1f40c.png
new file mode 100644
index 000000000..97f67fb2d
--- /dev/null
+++ b/web/static/images/emoji/1f40c.png
Binary files differ
diff --git a/web/static/images/emoji/1f40d.png b/web/static/images/emoji/1f40d.png
new file mode 100644
index 000000000..dae731e22
--- /dev/null
+++ b/web/static/images/emoji/1f40d.png
Binary files differ
diff --git a/web/static/images/emoji/1f40e.png b/web/static/images/emoji/1f40e.png
new file mode 100644
index 000000000..fadf8f2bf
--- /dev/null
+++ b/web/static/images/emoji/1f40e.png
Binary files differ
diff --git a/web/static/images/emoji/1f40f.png b/web/static/images/emoji/1f40f.png
new file mode 100644
index 000000000..17af1b9a5
--- /dev/null
+++ b/web/static/images/emoji/1f40f.png
Binary files differ
diff --git a/web/static/images/emoji/1f410.png b/web/static/images/emoji/1f410.png
new file mode 100644
index 000000000..41210e5fa
--- /dev/null
+++ b/web/static/images/emoji/1f410.png
Binary files differ
diff --git a/web/static/images/emoji/1f411.png b/web/static/images/emoji/1f411.png
new file mode 100644
index 000000000..e47d6eda8
--- /dev/null
+++ b/web/static/images/emoji/1f411.png
Binary files differ
diff --git a/web/static/images/emoji/1f412.png b/web/static/images/emoji/1f412.png
new file mode 100644
index 000000000..33e542ba6
--- /dev/null
+++ b/web/static/images/emoji/1f412.png
Binary files differ
diff --git a/web/static/images/emoji/1f413.png b/web/static/images/emoji/1f413.png
new file mode 100644
index 000000000..798542a0e
--- /dev/null
+++ b/web/static/images/emoji/1f413.png
Binary files differ
diff --git a/web/static/images/emoji/1f414.png b/web/static/images/emoji/1f414.png
new file mode 100644
index 000000000..182ffb343
--- /dev/null
+++ b/web/static/images/emoji/1f414.png
Binary files differ
diff --git a/web/static/images/emoji/1f415.png b/web/static/images/emoji/1f415.png
new file mode 100644
index 000000000..7057ffe66
--- /dev/null
+++ b/web/static/images/emoji/1f415.png
Binary files differ
diff --git a/web/static/images/emoji/1f416.png b/web/static/images/emoji/1f416.png
new file mode 100644
index 000000000..de1147954
--- /dev/null
+++ b/web/static/images/emoji/1f416.png
Binary files differ
diff --git a/web/static/images/emoji/1f417.png b/web/static/images/emoji/1f417.png
new file mode 100644
index 000000000..2ccb92fd1
--- /dev/null
+++ b/web/static/images/emoji/1f417.png
Binary files differ
diff --git a/web/static/images/emoji/1f418.png b/web/static/images/emoji/1f418.png
new file mode 100644
index 000000000..af079ec4d
--- /dev/null
+++ b/web/static/images/emoji/1f418.png
Binary files differ
diff --git a/web/static/images/emoji/1f419.png b/web/static/images/emoji/1f419.png
new file mode 100644
index 000000000..8add7143e
--- /dev/null
+++ b/web/static/images/emoji/1f419.png
Binary files differ
diff --git a/web/static/images/emoji/1f41a.png b/web/static/images/emoji/1f41a.png
new file mode 100644
index 000000000..01bc086fa
--- /dev/null
+++ b/web/static/images/emoji/1f41a.png
Binary files differ
diff --git a/web/static/images/emoji/1f41b.png b/web/static/images/emoji/1f41b.png
new file mode 100644
index 000000000..06b35cf5a
--- /dev/null
+++ b/web/static/images/emoji/1f41b.png
Binary files differ
diff --git a/web/static/images/emoji/1f41c.png b/web/static/images/emoji/1f41c.png
new file mode 100644
index 000000000..1b6ba80c0
--- /dev/null
+++ b/web/static/images/emoji/1f41c.png
Binary files differ
diff --git a/web/static/images/emoji/1f41d.png b/web/static/images/emoji/1f41d.png
new file mode 100644
index 000000000..e67b7703b
--- /dev/null
+++ b/web/static/images/emoji/1f41d.png
Binary files differ
diff --git a/web/static/images/emoji/1f41e.png b/web/static/images/emoji/1f41e.png
new file mode 100644
index 000000000..c35380926
--- /dev/null
+++ b/web/static/images/emoji/1f41e.png
Binary files differ
diff --git a/web/static/images/emoji/1f41f.png b/web/static/images/emoji/1f41f.png
new file mode 100644
index 000000000..cb7b896d6
--- /dev/null
+++ b/web/static/images/emoji/1f41f.png
Binary files differ
diff --git a/web/static/images/emoji/1f420.png b/web/static/images/emoji/1f420.png
new file mode 100644
index 000000000..1904f61be
--- /dev/null
+++ b/web/static/images/emoji/1f420.png
Binary files differ
diff --git a/web/static/images/emoji/1f421.png b/web/static/images/emoji/1f421.png
new file mode 100644
index 000000000..7529feff7
--- /dev/null
+++ b/web/static/images/emoji/1f421.png
Binary files differ
diff --git a/web/static/images/emoji/1f422.png b/web/static/images/emoji/1f422.png
new file mode 100644
index 000000000..c3a628c0a
--- /dev/null
+++ b/web/static/images/emoji/1f422.png
Binary files differ
diff --git a/web/static/images/emoji/1f423.png b/web/static/images/emoji/1f423.png
new file mode 100644
index 000000000..1e688c228
--- /dev/null
+++ b/web/static/images/emoji/1f423.png
Binary files differ
diff --git a/web/static/images/emoji/1f424.png b/web/static/images/emoji/1f424.png
new file mode 100644
index 000000000..66785c880
--- /dev/null
+++ b/web/static/images/emoji/1f424.png
Binary files differ
diff --git a/web/static/images/emoji/1f425.png b/web/static/images/emoji/1f425.png
new file mode 100644
index 000000000..de82199dc
--- /dev/null
+++ b/web/static/images/emoji/1f425.png
Binary files differ
diff --git a/web/static/images/emoji/1f426.png b/web/static/images/emoji/1f426.png
new file mode 100644
index 000000000..077178a42
--- /dev/null
+++ b/web/static/images/emoji/1f426.png
Binary files differ
diff --git a/web/static/images/emoji/1f427.png b/web/static/images/emoji/1f427.png
new file mode 100644
index 000000000..1789bf222
--- /dev/null
+++ b/web/static/images/emoji/1f427.png
Binary files differ
diff --git a/web/static/images/emoji/1f428.png b/web/static/images/emoji/1f428.png
new file mode 100644
index 000000000..928143905
--- /dev/null
+++ b/web/static/images/emoji/1f428.png
Binary files differ
diff --git a/web/static/images/emoji/1f429.png b/web/static/images/emoji/1f429.png
new file mode 100644
index 000000000..a69f6388d
--- /dev/null
+++ b/web/static/images/emoji/1f429.png
Binary files differ
diff --git a/web/static/images/emoji/1f42a.png b/web/static/images/emoji/1f42a.png
new file mode 100644
index 000000000..e881a8b5f
--- /dev/null
+++ b/web/static/images/emoji/1f42a.png
Binary files differ
diff --git a/web/static/images/emoji/1f42b.png b/web/static/images/emoji/1f42b.png
new file mode 100644
index 000000000..f332bf333
--- /dev/null
+++ b/web/static/images/emoji/1f42b.png
Binary files differ
diff --git a/web/static/images/emoji/1f42c.png b/web/static/images/emoji/1f42c.png
new file mode 100644
index 000000000..4dde4cc13
--- /dev/null
+++ b/web/static/images/emoji/1f42c.png
Binary files differ
diff --git a/web/static/images/emoji/1f42d.png b/web/static/images/emoji/1f42d.png
new file mode 100644
index 000000000..a8e5eb73f
--- /dev/null
+++ b/web/static/images/emoji/1f42d.png
Binary files differ
diff --git a/web/static/images/emoji/1f42e.png b/web/static/images/emoji/1f42e.png
new file mode 100644
index 000000000..15196a069
--- /dev/null
+++ b/web/static/images/emoji/1f42e.png
Binary files differ
diff --git a/web/static/images/emoji/1f42f.png b/web/static/images/emoji/1f42f.png
new file mode 100644
index 000000000..64a19cd61
--- /dev/null
+++ b/web/static/images/emoji/1f42f.png
Binary files differ
diff --git a/web/static/images/emoji/1f430.png b/web/static/images/emoji/1f430.png
new file mode 100644
index 000000000..e6203c052
--- /dev/null
+++ b/web/static/images/emoji/1f430.png
Binary files differ
diff --git a/web/static/images/emoji/1f431.png b/web/static/images/emoji/1f431.png
new file mode 100644
index 000000000..126d2ef79
--- /dev/null
+++ b/web/static/images/emoji/1f431.png
Binary files differ
diff --git a/web/static/images/emoji/1f432.png b/web/static/images/emoji/1f432.png
new file mode 100644
index 000000000..aba3bd471
--- /dev/null
+++ b/web/static/images/emoji/1f432.png
Binary files differ
diff --git a/web/static/images/emoji/1f433.png b/web/static/images/emoji/1f433.png
new file mode 100644
index 000000000..cf1ecee86
--- /dev/null
+++ b/web/static/images/emoji/1f433.png
Binary files differ
diff --git a/web/static/images/emoji/1f434.png b/web/static/images/emoji/1f434.png
new file mode 100644
index 000000000..90b955506
--- /dev/null
+++ b/web/static/images/emoji/1f434.png
Binary files differ
diff --git a/web/static/images/emoji/1f435.png b/web/static/images/emoji/1f435.png
new file mode 100644
index 000000000..a753bae1c
--- /dev/null
+++ b/web/static/images/emoji/1f435.png
Binary files differ
diff --git a/web/static/images/emoji/1f436.png b/web/static/images/emoji/1f436.png
new file mode 100644
index 000000000..3c107deb4
--- /dev/null
+++ b/web/static/images/emoji/1f436.png
Binary files differ
diff --git a/web/static/images/emoji/1f437.png b/web/static/images/emoji/1f437.png
new file mode 100644
index 000000000..e2ef71cc0
--- /dev/null
+++ b/web/static/images/emoji/1f437.png
Binary files differ
diff --git a/web/static/images/emoji/1f438.png b/web/static/images/emoji/1f438.png
new file mode 100644
index 000000000..726d0280b
--- /dev/null
+++ b/web/static/images/emoji/1f438.png
Binary files differ
diff --git a/web/static/images/emoji/1f439.png b/web/static/images/emoji/1f439.png
new file mode 100644
index 000000000..b19be3738
--- /dev/null
+++ b/web/static/images/emoji/1f439.png
Binary files differ
diff --git a/web/static/images/emoji/1f43a.png b/web/static/images/emoji/1f43a.png
new file mode 100644
index 000000000..46f054c62
--- /dev/null
+++ b/web/static/images/emoji/1f43a.png
Binary files differ
diff --git a/web/static/images/emoji/1f43b.png b/web/static/images/emoji/1f43b.png
new file mode 100644
index 000000000..32387186f
--- /dev/null
+++ b/web/static/images/emoji/1f43b.png
Binary files differ
diff --git a/web/static/images/emoji/1f43c.png b/web/static/images/emoji/1f43c.png
new file mode 100644
index 000000000..a1ded2a6c
--- /dev/null
+++ b/web/static/images/emoji/1f43c.png
Binary files differ
diff --git a/web/static/images/emoji/1f43d.png b/web/static/images/emoji/1f43d.png
new file mode 100644
index 000000000..a704c5a41
--- /dev/null
+++ b/web/static/images/emoji/1f43d.png
Binary files differ
diff --git a/web/static/images/emoji/1f43e.png b/web/static/images/emoji/1f43e.png
new file mode 100644
index 000000000..b36eba864
--- /dev/null
+++ b/web/static/images/emoji/1f43e.png
Binary files differ
diff --git a/web/static/images/emoji/1f43f.png b/web/static/images/emoji/1f43f.png
new file mode 100644
index 000000000..2881d09be
--- /dev/null
+++ b/web/static/images/emoji/1f43f.png
Binary files differ
diff --git a/web/static/images/emoji/1f440.png b/web/static/images/emoji/1f440.png
new file mode 100644
index 000000000..d9a6163f4
--- /dev/null
+++ b/web/static/images/emoji/1f440.png
Binary files differ
diff --git a/web/static/images/emoji/1f441.png b/web/static/images/emoji/1f441.png
new file mode 100644
index 000000000..66182c9f1
--- /dev/null
+++ b/web/static/images/emoji/1f441.png
Binary files differ
diff --git a/web/static/images/emoji/1f442.png b/web/static/images/emoji/1f442.png
new file mode 100644
index 000000000..a29807228
--- /dev/null
+++ b/web/static/images/emoji/1f442.png
Binary files differ
diff --git a/web/static/images/emoji/1f443.png b/web/static/images/emoji/1f443.png
new file mode 100644
index 000000000..f3d289014
--- /dev/null
+++ b/web/static/images/emoji/1f443.png
Binary files differ
diff --git a/web/static/images/emoji/1f444.png b/web/static/images/emoji/1f444.png
new file mode 100644
index 000000000..9b2e494bd
--- /dev/null
+++ b/web/static/images/emoji/1f444.png
Binary files differ
diff --git a/web/static/images/emoji/1f445.png b/web/static/images/emoji/1f445.png
new file mode 100644
index 000000000..67ea886c6
--- /dev/null
+++ b/web/static/images/emoji/1f445.png
Binary files differ
diff --git a/web/static/images/emoji/1f446.png b/web/static/images/emoji/1f446.png
new file mode 100644
index 000000000..85b802a99
--- /dev/null
+++ b/web/static/images/emoji/1f446.png
Binary files differ
diff --git a/web/static/images/emoji/1f447.png b/web/static/images/emoji/1f447.png
new file mode 100644
index 000000000..7eeae2d5d
--- /dev/null
+++ b/web/static/images/emoji/1f447.png
Binary files differ
diff --git a/web/static/images/emoji/1f448.png b/web/static/images/emoji/1f448.png
new file mode 100644
index 000000000..4a8f90556
--- /dev/null
+++ b/web/static/images/emoji/1f448.png
Binary files differ
diff --git a/web/static/images/emoji/1f449.png b/web/static/images/emoji/1f449.png
new file mode 100644
index 000000000..b2e387878
--- /dev/null
+++ b/web/static/images/emoji/1f449.png
Binary files differ
diff --git a/web/static/images/emoji/1f44a.png b/web/static/images/emoji/1f44a.png
new file mode 100644
index 000000000..7d10b3eda
--- /dev/null
+++ b/web/static/images/emoji/1f44a.png
Binary files differ
diff --git a/web/static/images/emoji/1f44b.png b/web/static/images/emoji/1f44b.png
new file mode 100644
index 000000000..8a7086bd0
--- /dev/null
+++ b/web/static/images/emoji/1f44b.png
Binary files differ
diff --git a/web/static/images/emoji/1f44c.png b/web/static/images/emoji/1f44c.png
new file mode 100644
index 000000000..bf84e0df4
--- /dev/null
+++ b/web/static/images/emoji/1f44c.png
Binary files differ
diff --git a/web/static/images/emoji/1f44d.png b/web/static/images/emoji/1f44d.png
new file mode 100644
index 000000000..26949329f
--- /dev/null
+++ b/web/static/images/emoji/1f44d.png
Binary files differ
diff --git a/web/static/images/emoji/1f44e.png b/web/static/images/emoji/1f44e.png
new file mode 100644
index 000000000..9b6d251b5
--- /dev/null
+++ b/web/static/images/emoji/1f44e.png
Binary files differ
diff --git a/web/static/images/emoji/1f44f.png b/web/static/images/emoji/1f44f.png
new file mode 100644
index 000000000..ccb725e96
--- /dev/null
+++ b/web/static/images/emoji/1f44f.png
Binary files differ
diff --git a/web/static/images/emoji/1f450.png b/web/static/images/emoji/1f450.png
new file mode 100644
index 000000000..c8eb0bab5
--- /dev/null
+++ b/web/static/images/emoji/1f450.png
Binary files differ
diff --git a/web/static/images/emoji/1f451.png b/web/static/images/emoji/1f451.png
new file mode 100644
index 000000000..54ca7998c
--- /dev/null
+++ b/web/static/images/emoji/1f451.png
Binary files differ
diff --git a/web/static/images/emoji/1f452.png b/web/static/images/emoji/1f452.png
new file mode 100644
index 000000000..33af561b3
--- /dev/null
+++ b/web/static/images/emoji/1f452.png
Binary files differ
diff --git a/web/static/images/emoji/1f453.png b/web/static/images/emoji/1f453.png
new file mode 100644
index 000000000..f1f4612ba
--- /dev/null
+++ b/web/static/images/emoji/1f453.png
Binary files differ
diff --git a/web/static/images/emoji/1f454.png b/web/static/images/emoji/1f454.png
new file mode 100644
index 000000000..3ed0339bf
--- /dev/null
+++ b/web/static/images/emoji/1f454.png
Binary files differ
diff --git a/web/static/images/emoji/1f455.png b/web/static/images/emoji/1f455.png
new file mode 100644
index 000000000..556efde26
--- /dev/null
+++ b/web/static/images/emoji/1f455.png
Binary files differ
diff --git a/web/static/images/emoji/1f456.png b/web/static/images/emoji/1f456.png
new file mode 100644
index 000000000..f1a83c4d2
--- /dev/null
+++ b/web/static/images/emoji/1f456.png
Binary files differ
diff --git a/web/static/images/emoji/1f457.png b/web/static/images/emoji/1f457.png
new file mode 100644
index 000000000..512fe8bfe
--- /dev/null
+++ b/web/static/images/emoji/1f457.png
Binary files differ
diff --git a/web/static/images/emoji/1f458.png b/web/static/images/emoji/1f458.png
new file mode 100644
index 000000000..1cbdea0b1
--- /dev/null
+++ b/web/static/images/emoji/1f458.png
Binary files differ
diff --git a/web/static/images/emoji/1f459.png b/web/static/images/emoji/1f459.png
new file mode 100644
index 000000000..62d142f31
--- /dev/null
+++ b/web/static/images/emoji/1f459.png
Binary files differ
diff --git a/web/static/images/emoji/1f45a.png b/web/static/images/emoji/1f45a.png
new file mode 100644
index 000000000..1a5494267
--- /dev/null
+++ b/web/static/images/emoji/1f45a.png
Binary files differ
diff --git a/web/static/images/emoji/1f45b.png b/web/static/images/emoji/1f45b.png
new file mode 100644
index 000000000..da09a41a3
--- /dev/null
+++ b/web/static/images/emoji/1f45b.png
Binary files differ
diff --git a/web/static/images/emoji/1f45c.png b/web/static/images/emoji/1f45c.png
new file mode 100644
index 000000000..556688787
--- /dev/null
+++ b/web/static/images/emoji/1f45c.png
Binary files differ
diff --git a/web/static/images/emoji/1f45d.png b/web/static/images/emoji/1f45d.png
new file mode 100644
index 000000000..d8e54dd7c
--- /dev/null
+++ b/web/static/images/emoji/1f45d.png
Binary files differ
diff --git a/web/static/images/emoji/1f45e.png b/web/static/images/emoji/1f45e.png
new file mode 100644
index 000000000..8d8a9feeb
--- /dev/null
+++ b/web/static/images/emoji/1f45e.png
Binary files differ
diff --git a/web/static/images/emoji/1f45f.png b/web/static/images/emoji/1f45f.png
new file mode 100644
index 000000000..e2cd2d3d4
--- /dev/null
+++ b/web/static/images/emoji/1f45f.png
Binary files differ
diff --git a/web/static/images/emoji/1f460.png b/web/static/images/emoji/1f460.png
new file mode 100644
index 000000000..36bdb7484
--- /dev/null
+++ b/web/static/images/emoji/1f460.png
Binary files differ
diff --git a/web/static/images/emoji/1f461.png b/web/static/images/emoji/1f461.png
new file mode 100644
index 000000000..1db7005bb
--- /dev/null
+++ b/web/static/images/emoji/1f461.png
Binary files differ
diff --git a/web/static/images/emoji/1f462.png b/web/static/images/emoji/1f462.png
new file mode 100644
index 000000000..856256d5b
--- /dev/null
+++ b/web/static/images/emoji/1f462.png
Binary files differ
diff --git a/web/static/images/emoji/1f463.png b/web/static/images/emoji/1f463.png
new file mode 100644
index 000000000..95c26fc9d
--- /dev/null
+++ b/web/static/images/emoji/1f463.png
Binary files differ
diff --git a/web/static/images/emoji/1f464.png b/web/static/images/emoji/1f464.png
new file mode 100644
index 000000000..db3a468fc
--- /dev/null
+++ b/web/static/images/emoji/1f464.png
Binary files differ
diff --git a/web/static/images/emoji/1f465.png b/web/static/images/emoji/1f465.png
new file mode 100644
index 000000000..f6018ac0e
--- /dev/null
+++ b/web/static/images/emoji/1f465.png
Binary files differ
diff --git a/web/static/images/emoji/1f466.png b/web/static/images/emoji/1f466.png
new file mode 100644
index 000000000..ddcf29ca6
--- /dev/null
+++ b/web/static/images/emoji/1f466.png
Binary files differ
diff --git a/web/static/images/emoji/1f467.png b/web/static/images/emoji/1f467.png
new file mode 100644
index 000000000..9f91cef4c
--- /dev/null
+++ b/web/static/images/emoji/1f467.png
Binary files differ
diff --git a/web/static/images/emoji/1f468-1f468-1f466-1f466.png b/web/static/images/emoji/1f468-1f468-1f466-1f466.png
new file mode 100644
index 000000000..a9121ff1b
--- /dev/null
+++ b/web/static/images/emoji/1f468-1f468-1f466-1f466.png
Binary files differ
diff --git a/web/static/images/emoji/1f468-1f468-1f466.png b/web/static/images/emoji/1f468-1f468-1f466.png
new file mode 100644
index 000000000..9856feb47
--- /dev/null
+++ b/web/static/images/emoji/1f468-1f468-1f466.png
Binary files differ
diff --git a/web/static/images/emoji/1f468-1f468-1f467-1f466.png b/web/static/images/emoji/1f468-1f468-1f467-1f466.png
new file mode 100644
index 000000000..f836007e2
--- /dev/null
+++ b/web/static/images/emoji/1f468-1f468-1f467-1f466.png
Binary files differ
diff --git a/web/static/images/emoji/1f468-1f468-1f467-1f467.png b/web/static/images/emoji/1f468-1f468-1f467-1f467.png
new file mode 100644
index 000000000..a62651445
--- /dev/null
+++ b/web/static/images/emoji/1f468-1f468-1f467-1f467.png
Binary files differ
diff --git a/web/static/images/emoji/1f468-1f468-1f467.png b/web/static/images/emoji/1f468-1f468-1f467.png
new file mode 100644
index 000000000..1af8f4e12
--- /dev/null
+++ b/web/static/images/emoji/1f468-1f468-1f467.png
Binary files differ
diff --git a/web/static/images/emoji/1f468-1f469-1f466-1f466.png b/web/static/images/emoji/1f468-1f469-1f466-1f466.png
new file mode 100644
index 000000000..1fc8a8d25
--- /dev/null
+++ b/web/static/images/emoji/1f468-1f469-1f466-1f466.png
Binary files differ
diff --git a/web/static/images/emoji/1f468-1f469-1f467-1f466.png b/web/static/images/emoji/1f468-1f469-1f467-1f466.png
new file mode 100644
index 000000000..be122e039
--- /dev/null
+++ b/web/static/images/emoji/1f468-1f469-1f467-1f466.png
Binary files differ
diff --git a/web/static/images/emoji/1f468-1f469-1f467-1f467.png b/web/static/images/emoji/1f468-1f469-1f467-1f467.png
new file mode 100644
index 000000000..4c9f3f0ef
--- /dev/null
+++ b/web/static/images/emoji/1f468-1f469-1f467-1f467.png
Binary files differ
diff --git a/web/static/images/emoji/1f468-1f469-1f467.png b/web/static/images/emoji/1f468-1f469-1f467.png
new file mode 100644
index 000000000..8df6f0456
--- /dev/null
+++ b/web/static/images/emoji/1f468-1f469-1f467.png
Binary files differ
diff --git a/web/static/images/emoji/1f468-2764-1f468.png b/web/static/images/emoji/1f468-2764-1f468.png
new file mode 100644
index 000000000..8975118f7
--- /dev/null
+++ b/web/static/images/emoji/1f468-2764-1f468.png
Binary files differ
diff --git a/web/static/images/emoji/1f468-2764-1f48b-1f468.png b/web/static/images/emoji/1f468-2764-1f48b-1f468.png
new file mode 100644
index 000000000..1afc5e2c1
--- /dev/null
+++ b/web/static/images/emoji/1f468-2764-1f48b-1f468.png
Binary files differ
diff --git a/web/static/images/emoji/1f468.png b/web/static/images/emoji/1f468.png
new file mode 100644
index 000000000..8efb7f43b
--- /dev/null
+++ b/web/static/images/emoji/1f468.png
Binary files differ
diff --git a/web/static/images/emoji/1f469-1f469-1f466-1f466.png b/web/static/images/emoji/1f469-1f469-1f466-1f466.png
new file mode 100644
index 000000000..3b7515300
--- /dev/null
+++ b/web/static/images/emoji/1f469-1f469-1f466-1f466.png
Binary files differ
diff --git a/web/static/images/emoji/1f469-1f469-1f466.png b/web/static/images/emoji/1f469-1f469-1f466.png
new file mode 100644
index 000000000..c2b883efb
--- /dev/null
+++ b/web/static/images/emoji/1f469-1f469-1f466.png
Binary files differ
diff --git a/web/static/images/emoji/1f469-1f469-1f467-1f466.png b/web/static/images/emoji/1f469-1f469-1f467-1f466.png
new file mode 100644
index 000000000..65f48dae5
--- /dev/null
+++ b/web/static/images/emoji/1f469-1f469-1f467-1f466.png
Binary files differ
diff --git a/web/static/images/emoji/1f469-1f469-1f467-1f467.png b/web/static/images/emoji/1f469-1f469-1f467-1f467.png
new file mode 100644
index 000000000..1a6e89c65
--- /dev/null
+++ b/web/static/images/emoji/1f469-1f469-1f467-1f467.png
Binary files differ
diff --git a/web/static/images/emoji/1f469-1f469-1f467.png b/web/static/images/emoji/1f469-1f469-1f467.png
new file mode 100644
index 000000000..b6e8aad2d
--- /dev/null
+++ b/web/static/images/emoji/1f469-1f469-1f467.png
Binary files differ
diff --git a/web/static/images/emoji/1f469-2764-1f469.png b/web/static/images/emoji/1f469-2764-1f469.png
new file mode 100644
index 000000000..a58f61b54
--- /dev/null
+++ b/web/static/images/emoji/1f469-2764-1f469.png
Binary files differ
diff --git a/web/static/images/emoji/1f469-2764-1f48b-1f469.png b/web/static/images/emoji/1f469-2764-1f48b-1f469.png
new file mode 100644
index 000000000..4c6a10699
--- /dev/null
+++ b/web/static/images/emoji/1f469-2764-1f48b-1f469.png
Binary files differ
diff --git a/web/static/images/emoji/1f469.png b/web/static/images/emoji/1f469.png
new file mode 100644
index 000000000..72f7d61e2
--- /dev/null
+++ b/web/static/images/emoji/1f469.png
Binary files differ
diff --git a/web/static/images/emoji/1f46a.png b/web/static/images/emoji/1f46a.png
new file mode 100644
index 000000000..e0d81ddb7
--- /dev/null
+++ b/web/static/images/emoji/1f46a.png
Binary files differ
diff --git a/web/static/images/emoji/1f46b.png b/web/static/images/emoji/1f46b.png
new file mode 100644
index 000000000..616f8520b
--- /dev/null
+++ b/web/static/images/emoji/1f46b.png
Binary files differ
diff --git a/web/static/images/emoji/1f46c.png b/web/static/images/emoji/1f46c.png
new file mode 100644
index 000000000..6d223a144
--- /dev/null
+++ b/web/static/images/emoji/1f46c.png
Binary files differ
diff --git a/web/static/images/emoji/1f46d.png b/web/static/images/emoji/1f46d.png
new file mode 100644
index 000000000..313e73c7d
--- /dev/null
+++ b/web/static/images/emoji/1f46d.png
Binary files differ
diff --git a/web/static/images/emoji/1f46e.png b/web/static/images/emoji/1f46e.png
new file mode 100644
index 000000000..818cab806
--- /dev/null
+++ b/web/static/images/emoji/1f46e.png
Binary files differ
diff --git a/web/static/images/emoji/1f46f.png b/web/static/images/emoji/1f46f.png
new file mode 100644
index 000000000..8829c0e87
--- /dev/null
+++ b/web/static/images/emoji/1f46f.png
Binary files differ
diff --git a/web/static/images/emoji/1f470.png b/web/static/images/emoji/1f470.png
new file mode 100644
index 000000000..a19e3389e
--- /dev/null
+++ b/web/static/images/emoji/1f470.png
Binary files differ
diff --git a/web/static/images/emoji/1f471.png b/web/static/images/emoji/1f471.png
new file mode 100644
index 000000000..7cd2e8766
--- /dev/null
+++ b/web/static/images/emoji/1f471.png
Binary files differ
diff --git a/web/static/images/emoji/1f472.png b/web/static/images/emoji/1f472.png
new file mode 100644
index 000000000..bd01585c4
--- /dev/null
+++ b/web/static/images/emoji/1f472.png
Binary files differ
diff --git a/web/static/images/emoji/1f473.png b/web/static/images/emoji/1f473.png
new file mode 100644
index 000000000..e968c78fe
--- /dev/null
+++ b/web/static/images/emoji/1f473.png
Binary files differ
diff --git a/web/static/images/emoji/1f474.png b/web/static/images/emoji/1f474.png
new file mode 100644
index 000000000..18fbbdde8
--- /dev/null
+++ b/web/static/images/emoji/1f474.png
Binary files differ
diff --git a/web/static/images/emoji/1f475.png b/web/static/images/emoji/1f475.png
new file mode 100644
index 000000000..0848ebe92
--- /dev/null
+++ b/web/static/images/emoji/1f475.png
Binary files differ
diff --git a/web/static/images/emoji/1f476.png b/web/static/images/emoji/1f476.png
new file mode 100644
index 000000000..7bfa3d4b5
--- /dev/null
+++ b/web/static/images/emoji/1f476.png
Binary files differ
diff --git a/web/static/images/emoji/1f477.png b/web/static/images/emoji/1f477.png
new file mode 100644
index 000000000..862e51f40
--- /dev/null
+++ b/web/static/images/emoji/1f477.png
Binary files differ
diff --git a/web/static/images/emoji/1f478.png b/web/static/images/emoji/1f478.png
new file mode 100644
index 000000000..a8b0ff903
--- /dev/null
+++ b/web/static/images/emoji/1f478.png
Binary files differ
diff --git a/web/static/images/emoji/1f479.png b/web/static/images/emoji/1f479.png
new file mode 100644
index 000000000..fd1cab65f
--- /dev/null
+++ b/web/static/images/emoji/1f479.png
Binary files differ
diff --git a/web/static/images/emoji/1f47a.png b/web/static/images/emoji/1f47a.png
new file mode 100644
index 000000000..20e1b4eb5
--- /dev/null
+++ b/web/static/images/emoji/1f47a.png
Binary files differ
diff --git a/web/static/images/emoji/1f47b.png b/web/static/images/emoji/1f47b.png
new file mode 100644
index 000000000..3138f36fd
--- /dev/null
+++ b/web/static/images/emoji/1f47b.png
Binary files differ
diff --git a/web/static/images/emoji/1f47c.png b/web/static/images/emoji/1f47c.png
new file mode 100644
index 000000000..46546001f
--- /dev/null
+++ b/web/static/images/emoji/1f47c.png
Binary files differ
diff --git a/web/static/images/emoji/1f47d.png b/web/static/images/emoji/1f47d.png
new file mode 100644
index 000000000..6d0fc8399
--- /dev/null
+++ b/web/static/images/emoji/1f47d.png
Binary files differ
diff --git a/web/static/images/emoji/1f47e.png b/web/static/images/emoji/1f47e.png
new file mode 100644
index 000000000..042bc2ad0
--- /dev/null
+++ b/web/static/images/emoji/1f47e.png
Binary files differ
diff --git a/web/static/images/emoji/1f47f.png b/web/static/images/emoji/1f47f.png
new file mode 100644
index 000000000..bb31a6212
--- /dev/null
+++ b/web/static/images/emoji/1f47f.png
Binary files differ
diff --git a/web/static/images/emoji/1f480.png b/web/static/images/emoji/1f480.png
new file mode 100644
index 000000000..ee66d7147
--- /dev/null
+++ b/web/static/images/emoji/1f480.png
Binary files differ
diff --git a/web/static/images/emoji/1f481.png b/web/static/images/emoji/1f481.png
new file mode 100644
index 000000000..ffe0ab71f
--- /dev/null
+++ b/web/static/images/emoji/1f481.png
Binary files differ
diff --git a/web/static/images/emoji/1f482.png b/web/static/images/emoji/1f482.png
new file mode 100644
index 000000000..f7f0464cd
--- /dev/null
+++ b/web/static/images/emoji/1f482.png
Binary files differ
diff --git a/web/static/images/emoji/1f483.png b/web/static/images/emoji/1f483.png
new file mode 100644
index 000000000..8e3c67dd2
--- /dev/null
+++ b/web/static/images/emoji/1f483.png
Binary files differ
diff --git a/web/static/images/emoji/1f484.png b/web/static/images/emoji/1f484.png
new file mode 100644
index 000000000..79421767b
--- /dev/null
+++ b/web/static/images/emoji/1f484.png
Binary files differ
diff --git a/web/static/images/emoji/1f485.png b/web/static/images/emoji/1f485.png
new file mode 100644
index 000000000..279881c26
--- /dev/null
+++ b/web/static/images/emoji/1f485.png
Binary files differ
diff --git a/web/static/images/emoji/1f486.png b/web/static/images/emoji/1f486.png
new file mode 100644
index 000000000..4890c3395
--- /dev/null
+++ b/web/static/images/emoji/1f486.png
Binary files differ
diff --git a/web/static/images/emoji/1f487.png b/web/static/images/emoji/1f487.png
new file mode 100644
index 000000000..40fbd31c4
--- /dev/null
+++ b/web/static/images/emoji/1f487.png
Binary files differ
diff --git a/web/static/images/emoji/1f488.png b/web/static/images/emoji/1f488.png
new file mode 100644
index 000000000..e2267ff8f
--- /dev/null
+++ b/web/static/images/emoji/1f488.png
Binary files differ
diff --git a/web/static/images/emoji/1f489.png b/web/static/images/emoji/1f489.png
new file mode 100644
index 000000000..1e7f23ebf
--- /dev/null
+++ b/web/static/images/emoji/1f489.png
Binary files differ
diff --git a/web/static/images/emoji/1f48a.png b/web/static/images/emoji/1f48a.png
new file mode 100644
index 000000000..260e44588
--- /dev/null
+++ b/web/static/images/emoji/1f48a.png
Binary files differ
diff --git a/web/static/images/emoji/1f48b.png b/web/static/images/emoji/1f48b.png
new file mode 100644
index 000000000..bc4c8f73a
--- /dev/null
+++ b/web/static/images/emoji/1f48b.png
Binary files differ
diff --git a/web/static/images/emoji/1f48c.png b/web/static/images/emoji/1f48c.png
new file mode 100644
index 000000000..853204d48
--- /dev/null
+++ b/web/static/images/emoji/1f48c.png
Binary files differ
diff --git a/web/static/images/emoji/1f48d.png b/web/static/images/emoji/1f48d.png
new file mode 100644
index 000000000..f033d7941
--- /dev/null
+++ b/web/static/images/emoji/1f48d.png
Binary files differ
diff --git a/web/static/images/emoji/1f48e.png b/web/static/images/emoji/1f48e.png
new file mode 100644
index 000000000..a24a082a7
--- /dev/null
+++ b/web/static/images/emoji/1f48e.png
Binary files differ
diff --git a/web/static/images/emoji/1f48f.png b/web/static/images/emoji/1f48f.png
new file mode 100644
index 000000000..0280fba18
--- /dev/null
+++ b/web/static/images/emoji/1f48f.png
Binary files differ
diff --git a/web/static/images/emoji/1f490.png b/web/static/images/emoji/1f490.png
new file mode 100644
index 000000000..e42118f7f
--- /dev/null
+++ b/web/static/images/emoji/1f490.png
Binary files differ
diff --git a/web/static/images/emoji/1f491.png b/web/static/images/emoji/1f491.png
new file mode 100644
index 000000000..44d4e18bd
--- /dev/null
+++ b/web/static/images/emoji/1f491.png
Binary files differ
diff --git a/web/static/images/emoji/1f492.png b/web/static/images/emoji/1f492.png
new file mode 100644
index 000000000..dda4a140f
--- /dev/null
+++ b/web/static/images/emoji/1f492.png
Binary files differ
diff --git a/web/static/images/emoji/1f493.png b/web/static/images/emoji/1f493.png
new file mode 100644
index 000000000..43a365e95
--- /dev/null
+++ b/web/static/images/emoji/1f493.png
Binary files differ
diff --git a/web/static/images/emoji/1f494.png b/web/static/images/emoji/1f494.png
new file mode 100644
index 000000000..b7ee9b4e5
--- /dev/null
+++ b/web/static/images/emoji/1f494.png
Binary files differ
diff --git a/web/static/images/emoji/1f495.png b/web/static/images/emoji/1f495.png
new file mode 100644
index 000000000..48f8d88d2
--- /dev/null
+++ b/web/static/images/emoji/1f495.png
Binary files differ
diff --git a/web/static/images/emoji/1f496.png b/web/static/images/emoji/1f496.png
new file mode 100644
index 000000000..0bfffc4ca
--- /dev/null
+++ b/web/static/images/emoji/1f496.png
Binary files differ
diff --git a/web/static/images/emoji/1f497.png b/web/static/images/emoji/1f497.png
new file mode 100644
index 000000000..b3d5da2e3
--- /dev/null
+++ b/web/static/images/emoji/1f497.png
Binary files differ
diff --git a/web/static/images/emoji/1f498.png b/web/static/images/emoji/1f498.png
new file mode 100644
index 000000000..49260219c
--- /dev/null
+++ b/web/static/images/emoji/1f498.png
Binary files differ
diff --git a/web/static/images/emoji/1f499.png b/web/static/images/emoji/1f499.png
new file mode 100644
index 000000000..494ab723e
--- /dev/null
+++ b/web/static/images/emoji/1f499.png
Binary files differ
diff --git a/web/static/images/emoji/1f49a.png b/web/static/images/emoji/1f49a.png
new file mode 100644
index 000000000..87b1d21c3
--- /dev/null
+++ b/web/static/images/emoji/1f49a.png
Binary files differ
diff --git a/web/static/images/emoji/1f49b.png b/web/static/images/emoji/1f49b.png
new file mode 100644
index 000000000..2deb5e6ce
--- /dev/null
+++ b/web/static/images/emoji/1f49b.png
Binary files differ
diff --git a/web/static/images/emoji/1f49c.png b/web/static/images/emoji/1f49c.png
new file mode 100644
index 000000000..97bb564a1
--- /dev/null
+++ b/web/static/images/emoji/1f49c.png
Binary files differ
diff --git a/web/static/images/emoji/1f49d.png b/web/static/images/emoji/1f49d.png
new file mode 100644
index 000000000..eb0292da0
--- /dev/null
+++ b/web/static/images/emoji/1f49d.png
Binary files differ
diff --git a/web/static/images/emoji/1f49e.png b/web/static/images/emoji/1f49e.png
new file mode 100644
index 000000000..0602d03c1
--- /dev/null
+++ b/web/static/images/emoji/1f49e.png
Binary files differ
diff --git a/web/static/images/emoji/1f49f.png b/web/static/images/emoji/1f49f.png
new file mode 100644
index 000000000..da8a1339b
--- /dev/null
+++ b/web/static/images/emoji/1f49f.png
Binary files differ
diff --git a/web/static/images/emoji/1f4a0.png b/web/static/images/emoji/1f4a0.png
new file mode 100644
index 000000000..6aec6cb19
--- /dev/null
+++ b/web/static/images/emoji/1f4a0.png
Binary files differ
diff --git a/web/static/images/emoji/1f4a1.png b/web/static/images/emoji/1f4a1.png
new file mode 100644
index 000000000..7596c82a7
--- /dev/null
+++ b/web/static/images/emoji/1f4a1.png
Binary files differ
diff --git a/web/static/images/emoji/1f4a2.png b/web/static/images/emoji/1f4a2.png
new file mode 100644
index 000000000..f69aa08d4
--- /dev/null
+++ b/web/static/images/emoji/1f4a2.png
Binary files differ
diff --git a/web/static/images/emoji/1f4a3.png b/web/static/images/emoji/1f4a3.png
new file mode 100644
index 000000000..774c5c91e
--- /dev/null
+++ b/web/static/images/emoji/1f4a3.png
Binary files differ
diff --git a/web/static/images/emoji/1f4a4.png b/web/static/images/emoji/1f4a4.png
new file mode 100644
index 000000000..05e245f20
--- /dev/null
+++ b/web/static/images/emoji/1f4a4.png
Binary files differ
diff --git a/web/static/images/emoji/1f4a5.png b/web/static/images/emoji/1f4a5.png
new file mode 100644
index 000000000..98a69a628
--- /dev/null
+++ b/web/static/images/emoji/1f4a5.png
Binary files differ
diff --git a/web/static/images/emoji/1f4a6.png b/web/static/images/emoji/1f4a6.png
new file mode 100644
index 000000000..81205fb52
--- /dev/null
+++ b/web/static/images/emoji/1f4a6.png
Binary files differ
diff --git a/web/static/images/emoji/1f4a7.png b/web/static/images/emoji/1f4a7.png
new file mode 100644
index 000000000..074982362
--- /dev/null
+++ b/web/static/images/emoji/1f4a7.png
Binary files differ
diff --git a/web/static/images/emoji/1f4a8.png b/web/static/images/emoji/1f4a8.png
new file mode 100644
index 000000000..d58c22281
--- /dev/null
+++ b/web/static/images/emoji/1f4a8.png
Binary files differ
diff --git a/web/static/images/emoji/1f4a9.png b/web/static/images/emoji/1f4a9.png
new file mode 100644
index 000000000..0c237a788
--- /dev/null
+++ b/web/static/images/emoji/1f4a9.png
Binary files differ
diff --git a/web/static/images/emoji/1f4aa.png b/web/static/images/emoji/1f4aa.png
new file mode 100644
index 000000000..9300534fa
--- /dev/null
+++ b/web/static/images/emoji/1f4aa.png
Binary files differ
diff --git a/web/static/images/emoji/1f4ab.png b/web/static/images/emoji/1f4ab.png
new file mode 100644
index 000000000..b6972196c
--- /dev/null
+++ b/web/static/images/emoji/1f4ab.png
Binary files differ
diff --git a/web/static/images/emoji/1f4ac.png b/web/static/images/emoji/1f4ac.png
new file mode 100644
index 000000000..4f6449572
--- /dev/null
+++ b/web/static/images/emoji/1f4ac.png
Binary files differ
diff --git a/web/static/images/emoji/1f4ad.png b/web/static/images/emoji/1f4ad.png
new file mode 100644
index 000000000..0ccbc2e30
--- /dev/null
+++ b/web/static/images/emoji/1f4ad.png
Binary files differ
diff --git a/web/static/images/emoji/1f4ae.png b/web/static/images/emoji/1f4ae.png
new file mode 100644
index 000000000..6d1c47e91
--- /dev/null
+++ b/web/static/images/emoji/1f4ae.png
Binary files differ
diff --git a/web/static/images/emoji/1f4af.png b/web/static/images/emoji/1f4af.png
new file mode 100644
index 000000000..cd308ad66
--- /dev/null
+++ b/web/static/images/emoji/1f4af.png
Binary files differ
diff --git a/web/static/images/emoji/1f4b0.png b/web/static/images/emoji/1f4b0.png
new file mode 100644
index 000000000..a44896ab0
--- /dev/null
+++ b/web/static/images/emoji/1f4b0.png
Binary files differ
diff --git a/web/static/images/emoji/1f4b1.png b/web/static/images/emoji/1f4b1.png
new file mode 100644
index 000000000..7cdbde70c
--- /dev/null
+++ b/web/static/images/emoji/1f4b1.png
Binary files differ
diff --git a/web/static/images/emoji/1f4b2.png b/web/static/images/emoji/1f4b2.png
new file mode 100644
index 000000000..10a5a4d8a
--- /dev/null
+++ b/web/static/images/emoji/1f4b2.png
Binary files differ
diff --git a/web/static/images/emoji/1f4b3.png b/web/static/images/emoji/1f4b3.png
new file mode 100644
index 000000000..e41515bb7
--- /dev/null
+++ b/web/static/images/emoji/1f4b3.png
Binary files differ
diff --git a/web/static/images/emoji/1f4b4.png b/web/static/images/emoji/1f4b4.png
new file mode 100644
index 000000000..c0545520f
--- /dev/null
+++ b/web/static/images/emoji/1f4b4.png
Binary files differ
diff --git a/web/static/images/emoji/1f4b5.png b/web/static/images/emoji/1f4b5.png
new file mode 100644
index 000000000..73843bf91
--- /dev/null
+++ b/web/static/images/emoji/1f4b5.png
Binary files differ
diff --git a/web/static/images/emoji/1f4b6.png b/web/static/images/emoji/1f4b6.png
new file mode 100644
index 000000000..4efcecc3c
--- /dev/null
+++ b/web/static/images/emoji/1f4b6.png
Binary files differ
diff --git a/web/static/images/emoji/1f4b7.png b/web/static/images/emoji/1f4b7.png
new file mode 100644
index 000000000..555e0823f
--- /dev/null
+++ b/web/static/images/emoji/1f4b7.png
Binary files differ
diff --git a/web/static/images/emoji/1f4b8.png b/web/static/images/emoji/1f4b8.png
new file mode 100644
index 000000000..46591e443
--- /dev/null
+++ b/web/static/images/emoji/1f4b8.png
Binary files differ
diff --git a/web/static/images/emoji/1f4b9.png b/web/static/images/emoji/1f4b9.png
new file mode 100644
index 000000000..6b7fb1cdd
--- /dev/null
+++ b/web/static/images/emoji/1f4b9.png
Binary files differ
diff --git a/web/static/images/emoji/1f4ba.png b/web/static/images/emoji/1f4ba.png
new file mode 100644
index 000000000..1ec8166b6
--- /dev/null
+++ b/web/static/images/emoji/1f4ba.png
Binary files differ
diff --git a/web/static/images/emoji/1f4bb.png b/web/static/images/emoji/1f4bb.png
new file mode 100644
index 000000000..e23340a04
--- /dev/null
+++ b/web/static/images/emoji/1f4bb.png
Binary files differ
diff --git a/web/static/images/emoji/1f4bc.png b/web/static/images/emoji/1f4bc.png
new file mode 100644
index 000000000..49293eb0a
--- /dev/null
+++ b/web/static/images/emoji/1f4bc.png
Binary files differ
diff --git a/web/static/images/emoji/1f4bd.png b/web/static/images/emoji/1f4bd.png
new file mode 100644
index 000000000..49d651f9e
--- /dev/null
+++ b/web/static/images/emoji/1f4bd.png
Binary files differ
diff --git a/web/static/images/emoji/1f4be.png b/web/static/images/emoji/1f4be.png
new file mode 100644
index 000000000..f4e52bf1b
--- /dev/null
+++ b/web/static/images/emoji/1f4be.png
Binary files differ
diff --git a/web/static/images/emoji/1f4bf.png b/web/static/images/emoji/1f4bf.png
new file mode 100644
index 000000000..10d5db668
--- /dev/null
+++ b/web/static/images/emoji/1f4bf.png
Binary files differ
diff --git a/web/static/images/emoji/1f4c0.png b/web/static/images/emoji/1f4c0.png
new file mode 100644
index 000000000..6f7b85774
--- /dev/null
+++ b/web/static/images/emoji/1f4c0.png
Binary files differ
diff --git a/web/static/images/emoji/1f4c1.png b/web/static/images/emoji/1f4c1.png
new file mode 100644
index 000000000..17adcfd26
--- /dev/null
+++ b/web/static/images/emoji/1f4c1.png
Binary files differ
diff --git a/web/static/images/emoji/1f4c2.png b/web/static/images/emoji/1f4c2.png
new file mode 100644
index 000000000..2d48340bf
--- /dev/null
+++ b/web/static/images/emoji/1f4c2.png
Binary files differ
diff --git a/web/static/images/emoji/1f4c3.png b/web/static/images/emoji/1f4c3.png
new file mode 100644
index 000000000..306b7e4d7
--- /dev/null
+++ b/web/static/images/emoji/1f4c3.png
Binary files differ
diff --git a/web/static/images/emoji/1f4c4.png b/web/static/images/emoji/1f4c4.png
new file mode 100644
index 000000000..f3023ba74
--- /dev/null
+++ b/web/static/images/emoji/1f4c4.png
Binary files differ
diff --git a/web/static/images/emoji/1f4c5.png b/web/static/images/emoji/1f4c5.png
new file mode 100644
index 000000000..61308e816
--- /dev/null
+++ b/web/static/images/emoji/1f4c5.png
Binary files differ
diff --git a/web/static/images/emoji/1f4c6.png b/web/static/images/emoji/1f4c6.png
new file mode 100644
index 000000000..7b1845ab2
--- /dev/null
+++ b/web/static/images/emoji/1f4c6.png
Binary files differ
diff --git a/web/static/images/emoji/1f4c7.png b/web/static/images/emoji/1f4c7.png
new file mode 100644
index 000000000..84407de9e
--- /dev/null
+++ b/web/static/images/emoji/1f4c7.png
Binary files differ
diff --git a/web/static/images/emoji/1f4c8.png b/web/static/images/emoji/1f4c8.png
new file mode 100644
index 000000000..74a525be1
--- /dev/null
+++ b/web/static/images/emoji/1f4c8.png
Binary files differ
diff --git a/web/static/images/emoji/1f4c9.png b/web/static/images/emoji/1f4c9.png
new file mode 100644
index 000000000..63ab4f0b4
--- /dev/null
+++ b/web/static/images/emoji/1f4c9.png
Binary files differ
diff --git a/web/static/images/emoji/1f4ca.png b/web/static/images/emoji/1f4ca.png
new file mode 100644
index 000000000..9b5a73c72
--- /dev/null
+++ b/web/static/images/emoji/1f4ca.png
Binary files differ
diff --git a/web/static/images/emoji/1f4cb.png b/web/static/images/emoji/1f4cb.png
new file mode 100644
index 000000000..7f50dfff7
--- /dev/null
+++ b/web/static/images/emoji/1f4cb.png
Binary files differ
diff --git a/web/static/images/emoji/1f4cc.png b/web/static/images/emoji/1f4cc.png
new file mode 100644
index 000000000..557ac45f0
--- /dev/null
+++ b/web/static/images/emoji/1f4cc.png
Binary files differ
diff --git a/web/static/images/emoji/1f4cd.png b/web/static/images/emoji/1f4cd.png
new file mode 100644
index 000000000..b16e5c41a
--- /dev/null
+++ b/web/static/images/emoji/1f4cd.png
Binary files differ
diff --git a/web/static/images/emoji/1f4ce.png b/web/static/images/emoji/1f4ce.png
new file mode 100644
index 000000000..e241e1189
--- /dev/null
+++ b/web/static/images/emoji/1f4ce.png
Binary files differ
diff --git a/web/static/images/emoji/1f4cf.png b/web/static/images/emoji/1f4cf.png
new file mode 100644
index 000000000..42e7ac39c
--- /dev/null
+++ b/web/static/images/emoji/1f4cf.png
Binary files differ
diff --git a/web/static/images/emoji/1f4d0.png b/web/static/images/emoji/1f4d0.png
new file mode 100644
index 000000000..b554c0625
--- /dev/null
+++ b/web/static/images/emoji/1f4d0.png
Binary files differ
diff --git a/web/static/images/emoji/1f4d1.png b/web/static/images/emoji/1f4d1.png
new file mode 100644
index 000000000..9cec88387
--- /dev/null
+++ b/web/static/images/emoji/1f4d1.png
Binary files differ
diff --git a/web/static/images/emoji/1f4d2.png b/web/static/images/emoji/1f4d2.png
new file mode 100644
index 000000000..b9a5484e4
--- /dev/null
+++ b/web/static/images/emoji/1f4d2.png
Binary files differ
diff --git a/web/static/images/emoji/1f4d3.png b/web/static/images/emoji/1f4d3.png
new file mode 100644
index 000000000..5ed4f4112
--- /dev/null
+++ b/web/static/images/emoji/1f4d3.png
Binary files differ
diff --git a/web/static/images/emoji/1f4d4.png b/web/static/images/emoji/1f4d4.png
new file mode 100644
index 000000000..839ee3e78
--- /dev/null
+++ b/web/static/images/emoji/1f4d4.png
Binary files differ
diff --git a/web/static/images/emoji/1f4d5.png b/web/static/images/emoji/1f4d5.png
new file mode 100644
index 000000000..e26390e0a
--- /dev/null
+++ b/web/static/images/emoji/1f4d5.png
Binary files differ
diff --git a/web/static/images/emoji/1f4d6.png b/web/static/images/emoji/1f4d6.png
new file mode 100644
index 000000000..01c836a7e
--- /dev/null
+++ b/web/static/images/emoji/1f4d6.png
Binary files differ
diff --git a/web/static/images/emoji/1f4d7.png b/web/static/images/emoji/1f4d7.png
new file mode 100644
index 000000000..8fa81b9ac
--- /dev/null
+++ b/web/static/images/emoji/1f4d7.png
Binary files differ
diff --git a/web/static/images/emoji/1f4d8.png b/web/static/images/emoji/1f4d8.png
new file mode 100644
index 000000000..673bf2bdb
--- /dev/null
+++ b/web/static/images/emoji/1f4d8.png
Binary files differ
diff --git a/web/static/images/emoji/1f4d9.png b/web/static/images/emoji/1f4d9.png
new file mode 100644
index 000000000..8ecfd9c10
--- /dev/null
+++ b/web/static/images/emoji/1f4d9.png
Binary files differ
diff --git a/web/static/images/emoji/1f4da.png b/web/static/images/emoji/1f4da.png
new file mode 100644
index 000000000..65abc1651
--- /dev/null
+++ b/web/static/images/emoji/1f4da.png
Binary files differ
diff --git a/web/static/images/emoji/1f4db.png b/web/static/images/emoji/1f4db.png
new file mode 100644
index 000000000..a1ffb38b3
--- /dev/null
+++ b/web/static/images/emoji/1f4db.png
Binary files differ
diff --git a/web/static/images/emoji/1f4dc.png b/web/static/images/emoji/1f4dc.png
new file mode 100644
index 000000000..c8ee30803
--- /dev/null
+++ b/web/static/images/emoji/1f4dc.png
Binary files differ
diff --git a/web/static/images/emoji/1f4dd.png b/web/static/images/emoji/1f4dd.png
new file mode 100644
index 000000000..61e5a08e6
--- /dev/null
+++ b/web/static/images/emoji/1f4dd.png
Binary files differ
diff --git a/web/static/images/emoji/1f4de.png b/web/static/images/emoji/1f4de.png
new file mode 100644
index 000000000..6a8259cb7
--- /dev/null
+++ b/web/static/images/emoji/1f4de.png
Binary files differ
diff --git a/web/static/images/emoji/1f4df.png b/web/static/images/emoji/1f4df.png
new file mode 100644
index 000000000..acfd131a0
--- /dev/null
+++ b/web/static/images/emoji/1f4df.png
Binary files differ
diff --git a/web/static/images/emoji/1f4e0.png b/web/static/images/emoji/1f4e0.png
new file mode 100644
index 000000000..10f81dad1
--- /dev/null
+++ b/web/static/images/emoji/1f4e0.png
Binary files differ
diff --git a/web/static/images/emoji/1f4e1.png b/web/static/images/emoji/1f4e1.png
new file mode 100644
index 000000000..7411b9235
--- /dev/null
+++ b/web/static/images/emoji/1f4e1.png
Binary files differ
diff --git a/web/static/images/emoji/1f4e2.png b/web/static/images/emoji/1f4e2.png
new file mode 100644
index 000000000..aaf588cd7
--- /dev/null
+++ b/web/static/images/emoji/1f4e2.png
Binary files differ
diff --git a/web/static/images/emoji/1f4e3.png b/web/static/images/emoji/1f4e3.png
new file mode 100644
index 000000000..51bc09152
--- /dev/null
+++ b/web/static/images/emoji/1f4e3.png
Binary files differ
diff --git a/web/static/images/emoji/1f4e4.png b/web/static/images/emoji/1f4e4.png
new file mode 100644
index 000000000..7afec2610
--- /dev/null
+++ b/web/static/images/emoji/1f4e4.png
Binary files differ
diff --git a/web/static/images/emoji/1f4e5.png b/web/static/images/emoji/1f4e5.png
new file mode 100644
index 000000000..266947ee9
--- /dev/null
+++ b/web/static/images/emoji/1f4e5.png
Binary files differ
diff --git a/web/static/images/emoji/1f4e6.png b/web/static/images/emoji/1f4e6.png
new file mode 100644
index 000000000..424c4fd19
--- /dev/null
+++ b/web/static/images/emoji/1f4e6.png
Binary files differ
diff --git a/web/static/images/emoji/1f4e7.png b/web/static/images/emoji/1f4e7.png
new file mode 100644
index 000000000..838ee67ed
--- /dev/null
+++ b/web/static/images/emoji/1f4e7.png
Binary files differ
diff --git a/web/static/images/emoji/1f4e8.png b/web/static/images/emoji/1f4e8.png
new file mode 100644
index 000000000..b16ed051f
--- /dev/null
+++ b/web/static/images/emoji/1f4e8.png
Binary files differ
diff --git a/web/static/images/emoji/1f4e9.png b/web/static/images/emoji/1f4e9.png
new file mode 100644
index 000000000..373cd8f0f
--- /dev/null
+++ b/web/static/images/emoji/1f4e9.png
Binary files differ
diff --git a/web/static/images/emoji/1f4ea.png b/web/static/images/emoji/1f4ea.png
new file mode 100644
index 000000000..7a9f1e301
--- /dev/null
+++ b/web/static/images/emoji/1f4ea.png
Binary files differ
diff --git a/web/static/images/emoji/1f4eb.png b/web/static/images/emoji/1f4eb.png
new file mode 100644
index 000000000..5e3aa1019
--- /dev/null
+++ b/web/static/images/emoji/1f4eb.png
Binary files differ
diff --git a/web/static/images/emoji/1f4ec.png b/web/static/images/emoji/1f4ec.png
new file mode 100644
index 000000000..f8c7362a8
--- /dev/null
+++ b/web/static/images/emoji/1f4ec.png
Binary files differ
diff --git a/web/static/images/emoji/1f4ed.png b/web/static/images/emoji/1f4ed.png
new file mode 100644
index 000000000..a4b4797ee
--- /dev/null
+++ b/web/static/images/emoji/1f4ed.png
Binary files differ
diff --git a/web/static/images/emoji/1f4ee.png b/web/static/images/emoji/1f4ee.png
new file mode 100644
index 000000000..1633e892c
--- /dev/null
+++ b/web/static/images/emoji/1f4ee.png
Binary files differ
diff --git a/web/static/images/emoji/1f4ef.png b/web/static/images/emoji/1f4ef.png
new file mode 100644
index 000000000..2313eeb45
--- /dev/null
+++ b/web/static/images/emoji/1f4ef.png
Binary files differ
diff --git a/web/static/images/emoji/1f4f0.png b/web/static/images/emoji/1f4f0.png
new file mode 100644
index 000000000..ae5e31494
--- /dev/null
+++ b/web/static/images/emoji/1f4f0.png
Binary files differ
diff --git a/web/static/images/emoji/1f4f1.png b/web/static/images/emoji/1f4f1.png
new file mode 100644
index 000000000..eea83475b
--- /dev/null
+++ b/web/static/images/emoji/1f4f1.png
Binary files differ
diff --git a/web/static/images/emoji/1f4f2.png b/web/static/images/emoji/1f4f2.png
new file mode 100644
index 000000000..e10f74a6a
--- /dev/null
+++ b/web/static/images/emoji/1f4f2.png
Binary files differ
diff --git a/web/static/images/emoji/1f4f3.png b/web/static/images/emoji/1f4f3.png
new file mode 100644
index 000000000..6da565442
--- /dev/null
+++ b/web/static/images/emoji/1f4f3.png
Binary files differ
diff --git a/web/static/images/emoji/1f4f4.png b/web/static/images/emoji/1f4f4.png
new file mode 100644
index 000000000..63d1deeaa
--- /dev/null
+++ b/web/static/images/emoji/1f4f4.png
Binary files differ
diff --git a/web/static/images/emoji/1f4f5.png b/web/static/images/emoji/1f4f5.png
new file mode 100644
index 000000000..8324e4361
--- /dev/null
+++ b/web/static/images/emoji/1f4f5.png
Binary files differ
diff --git a/web/static/images/emoji/1f4f6.png b/web/static/images/emoji/1f4f6.png
new file mode 100644
index 000000000..21956bb51
--- /dev/null
+++ b/web/static/images/emoji/1f4f6.png
Binary files differ
diff --git a/web/static/images/emoji/1f4f7.png b/web/static/images/emoji/1f4f7.png
new file mode 100644
index 000000000..0b4463e8b
--- /dev/null
+++ b/web/static/images/emoji/1f4f7.png
Binary files differ
diff --git a/web/static/images/emoji/1f4f8.png b/web/static/images/emoji/1f4f8.png
new file mode 100644
index 000000000..66f223b17
--- /dev/null
+++ b/web/static/images/emoji/1f4f8.png
Binary files differ
diff --git a/web/static/images/emoji/1f4f9.png b/web/static/images/emoji/1f4f9.png
new file mode 100644
index 000000000..1b3514f8a
--- /dev/null
+++ b/web/static/images/emoji/1f4f9.png
Binary files differ
diff --git a/web/static/images/emoji/1f4fa.png b/web/static/images/emoji/1f4fa.png
new file mode 100644
index 000000000..5318e2dc8
--- /dev/null
+++ b/web/static/images/emoji/1f4fa.png
Binary files differ
diff --git a/web/static/images/emoji/1f4fb.png b/web/static/images/emoji/1f4fb.png
new file mode 100644
index 000000000..e75747faa
--- /dev/null
+++ b/web/static/images/emoji/1f4fb.png
Binary files differ
diff --git a/web/static/images/emoji/1f4fc.png b/web/static/images/emoji/1f4fc.png
new file mode 100644
index 000000000..134e3a2c4
--- /dev/null
+++ b/web/static/images/emoji/1f4fc.png
Binary files differ
diff --git a/web/static/images/emoji/1f4fd.png b/web/static/images/emoji/1f4fd.png
new file mode 100644
index 000000000..46800d29d
--- /dev/null
+++ b/web/static/images/emoji/1f4fd.png
Binary files differ
diff --git a/web/static/images/emoji/1f4fe.png b/web/static/images/emoji/1f4fe.png
new file mode 100644
index 000000000..f301928e3
--- /dev/null
+++ b/web/static/images/emoji/1f4fe.png
Binary files differ
diff --git a/web/static/images/emoji/1f500.png b/web/static/images/emoji/1f500.png
new file mode 100644
index 000000000..96e03e168
--- /dev/null
+++ b/web/static/images/emoji/1f500.png
Binary files differ
diff --git a/web/static/images/emoji/1f501.png b/web/static/images/emoji/1f501.png
new file mode 100644
index 000000000..8420b4f5d
--- /dev/null
+++ b/web/static/images/emoji/1f501.png
Binary files differ
diff --git a/web/static/images/emoji/1f502.png b/web/static/images/emoji/1f502.png
new file mode 100644
index 000000000..2dacec71a
--- /dev/null
+++ b/web/static/images/emoji/1f502.png
Binary files differ
diff --git a/web/static/images/emoji/1f503.png b/web/static/images/emoji/1f503.png
new file mode 100644
index 000000000..fe7d5bafd
--- /dev/null
+++ b/web/static/images/emoji/1f503.png
Binary files differ
diff --git a/web/static/images/emoji/1f504.png b/web/static/images/emoji/1f504.png
new file mode 100644
index 000000000..7bd4e4d75
--- /dev/null
+++ b/web/static/images/emoji/1f504.png
Binary files differ
diff --git a/web/static/images/emoji/1f505.png b/web/static/images/emoji/1f505.png
new file mode 100644
index 000000000..aecba4603
--- /dev/null
+++ b/web/static/images/emoji/1f505.png
Binary files differ
diff --git a/web/static/images/emoji/1f506.png b/web/static/images/emoji/1f506.png
new file mode 100644
index 000000000..e5f548443
--- /dev/null
+++ b/web/static/images/emoji/1f506.png
Binary files differ
diff --git a/web/static/images/emoji/1f507.png b/web/static/images/emoji/1f507.png
new file mode 100644
index 000000000..04d987046
--- /dev/null
+++ b/web/static/images/emoji/1f507.png
Binary files differ
diff --git a/web/static/images/emoji/1f508.png b/web/static/images/emoji/1f508.png
new file mode 100644
index 000000000..38d5ee391
--- /dev/null
+++ b/web/static/images/emoji/1f508.png
Binary files differ
diff --git a/web/static/images/emoji/1f509.png b/web/static/images/emoji/1f509.png
new file mode 100644
index 000000000..0d7011bcb
--- /dev/null
+++ b/web/static/images/emoji/1f509.png
Binary files differ
diff --git a/web/static/images/emoji/1f50a.png b/web/static/images/emoji/1f50a.png
new file mode 100644
index 000000000..e84702e56
--- /dev/null
+++ b/web/static/images/emoji/1f50a.png
Binary files differ
diff --git a/web/static/images/emoji/1f50b.png b/web/static/images/emoji/1f50b.png
new file mode 100644
index 000000000..9de506348
--- /dev/null
+++ b/web/static/images/emoji/1f50b.png
Binary files differ
diff --git a/web/static/images/emoji/1f50c.png b/web/static/images/emoji/1f50c.png
new file mode 100644
index 000000000..e15d4d5ad
--- /dev/null
+++ b/web/static/images/emoji/1f50c.png
Binary files differ
diff --git a/web/static/images/emoji/1f50d.png b/web/static/images/emoji/1f50d.png
new file mode 100644
index 000000000..99982fbec
--- /dev/null
+++ b/web/static/images/emoji/1f50d.png
Binary files differ
diff --git a/web/static/images/emoji/1f50e.png b/web/static/images/emoji/1f50e.png
new file mode 100644
index 000000000..95d12da0e
--- /dev/null
+++ b/web/static/images/emoji/1f50e.png
Binary files differ
diff --git a/web/static/images/emoji/1f50f.png b/web/static/images/emoji/1f50f.png
new file mode 100644
index 000000000..274d6f888
--- /dev/null
+++ b/web/static/images/emoji/1f50f.png
Binary files differ
diff --git a/web/static/images/emoji/1f510.png b/web/static/images/emoji/1f510.png
new file mode 100644
index 000000000..d2bddb1eb
--- /dev/null
+++ b/web/static/images/emoji/1f510.png
Binary files differ
diff --git a/web/static/images/emoji/1f511.png b/web/static/images/emoji/1f511.png
new file mode 100644
index 000000000..2739df6db
--- /dev/null
+++ b/web/static/images/emoji/1f511.png
Binary files differ
diff --git a/web/static/images/emoji/1f512.png b/web/static/images/emoji/1f512.png
new file mode 100644
index 000000000..f1dc55a1a
--- /dev/null
+++ b/web/static/images/emoji/1f512.png
Binary files differ
diff --git a/web/static/images/emoji/1f513.png b/web/static/images/emoji/1f513.png
new file mode 100644
index 000000000..db05d1b73
--- /dev/null
+++ b/web/static/images/emoji/1f513.png
Binary files differ
diff --git a/web/static/images/emoji/1f514.png b/web/static/images/emoji/1f514.png
new file mode 100644
index 000000000..d1473557e
--- /dev/null
+++ b/web/static/images/emoji/1f514.png
Binary files differ
diff --git a/web/static/images/emoji/1f515.png b/web/static/images/emoji/1f515.png
new file mode 100644
index 000000000..30e8858aa
--- /dev/null
+++ b/web/static/images/emoji/1f515.png
Binary files differ
diff --git a/web/static/images/emoji/1f516.png b/web/static/images/emoji/1f516.png
new file mode 100644
index 000000000..05a3325c8
--- /dev/null
+++ b/web/static/images/emoji/1f516.png
Binary files differ
diff --git a/web/static/images/emoji/1f517.png b/web/static/images/emoji/1f517.png
new file mode 100644
index 000000000..0954f494a
--- /dev/null
+++ b/web/static/images/emoji/1f517.png
Binary files differ
diff --git a/web/static/images/emoji/1f518.png b/web/static/images/emoji/1f518.png
new file mode 100644
index 000000000..bbc36031e
--- /dev/null
+++ b/web/static/images/emoji/1f518.png
Binary files differ
diff --git a/web/static/images/emoji/1f519.png b/web/static/images/emoji/1f519.png
new file mode 100644
index 000000000..13983d277
--- /dev/null
+++ b/web/static/images/emoji/1f519.png
Binary files differ
diff --git a/web/static/images/emoji/1f51a.png b/web/static/images/emoji/1f51a.png
new file mode 100644
index 000000000..03bfb2869
--- /dev/null
+++ b/web/static/images/emoji/1f51a.png
Binary files differ
diff --git a/web/static/images/emoji/1f51b.png b/web/static/images/emoji/1f51b.png
new file mode 100644
index 000000000..3c369cb1d
--- /dev/null
+++ b/web/static/images/emoji/1f51b.png
Binary files differ
diff --git a/web/static/images/emoji/1f51c.png b/web/static/images/emoji/1f51c.png
new file mode 100644
index 000000000..c795ce03f
--- /dev/null
+++ b/web/static/images/emoji/1f51c.png
Binary files differ
diff --git a/web/static/images/emoji/1f51d.png b/web/static/images/emoji/1f51d.png
new file mode 100644
index 000000000..5c6eb3c52
--- /dev/null
+++ b/web/static/images/emoji/1f51d.png
Binary files differ
diff --git a/web/static/images/emoji/1f51e.png b/web/static/images/emoji/1f51e.png
new file mode 100644
index 000000000..603ce57ea
--- /dev/null
+++ b/web/static/images/emoji/1f51e.png
Binary files differ
diff --git a/web/static/images/emoji/1f51f.png b/web/static/images/emoji/1f51f.png
new file mode 100644
index 000000000..5f817b8d6
--- /dev/null
+++ b/web/static/images/emoji/1f51f.png
Binary files differ
diff --git a/web/static/images/emoji/1f520.png b/web/static/images/emoji/1f520.png
new file mode 100644
index 000000000..044554f6f
--- /dev/null
+++ b/web/static/images/emoji/1f520.png
Binary files differ
diff --git a/web/static/images/emoji/1f521.png b/web/static/images/emoji/1f521.png
new file mode 100644
index 000000000..a79d4311d
--- /dev/null
+++ b/web/static/images/emoji/1f521.png
Binary files differ
diff --git a/web/static/images/emoji/1f522.png b/web/static/images/emoji/1f522.png
new file mode 100644
index 000000000..17ec5f12a
--- /dev/null
+++ b/web/static/images/emoji/1f522.png
Binary files differ
diff --git a/web/static/images/emoji/1f523.png b/web/static/images/emoji/1f523.png
new file mode 100644
index 000000000..f1cdcb734
--- /dev/null
+++ b/web/static/images/emoji/1f523.png
Binary files differ
diff --git a/web/static/images/emoji/1f524.png b/web/static/images/emoji/1f524.png
new file mode 100644
index 000000000..51dc1bf76
--- /dev/null
+++ b/web/static/images/emoji/1f524.png
Binary files differ
diff --git a/web/static/images/emoji/1f525.png b/web/static/images/emoji/1f525.png
new file mode 100644
index 000000000..3149ed675
--- /dev/null
+++ b/web/static/images/emoji/1f525.png
Binary files differ
diff --git a/web/static/images/emoji/1f526.png b/web/static/images/emoji/1f526.png
new file mode 100644
index 000000000..3e64a0d0b
--- /dev/null
+++ b/web/static/images/emoji/1f526.png
Binary files differ
diff --git a/web/static/images/emoji/1f527.png b/web/static/images/emoji/1f527.png
new file mode 100644
index 000000000..64a0d6a76
--- /dev/null
+++ b/web/static/images/emoji/1f527.png
Binary files differ
diff --git a/web/static/images/emoji/1f528.png b/web/static/images/emoji/1f528.png
new file mode 100644
index 000000000..6d91d1320
--- /dev/null
+++ b/web/static/images/emoji/1f528.png
Binary files differ
diff --git a/web/static/images/emoji/1f529.png b/web/static/images/emoji/1f529.png
new file mode 100644
index 000000000..fee747a01
--- /dev/null
+++ b/web/static/images/emoji/1f529.png
Binary files differ
diff --git a/web/static/images/emoji/1f52a.png b/web/static/images/emoji/1f52a.png
new file mode 100644
index 000000000..43249ba94
--- /dev/null
+++ b/web/static/images/emoji/1f52a.png
Binary files differ
diff --git a/web/static/images/emoji/1f52b.png b/web/static/images/emoji/1f52b.png
new file mode 100644
index 000000000..f0e6b8fab
--- /dev/null
+++ b/web/static/images/emoji/1f52b.png
Binary files differ
diff --git a/web/static/images/emoji/1f52c.png b/web/static/images/emoji/1f52c.png
new file mode 100644
index 000000000..944293d1e
--- /dev/null
+++ b/web/static/images/emoji/1f52c.png
Binary files differ
diff --git a/web/static/images/emoji/1f52d.png b/web/static/images/emoji/1f52d.png
new file mode 100644
index 000000000..8fc07d50f
--- /dev/null
+++ b/web/static/images/emoji/1f52d.png
Binary files differ
diff --git a/web/static/images/emoji/1f52e.png b/web/static/images/emoji/1f52e.png
new file mode 100644
index 000000000..d9ee3b4f3
--- /dev/null
+++ b/web/static/images/emoji/1f52e.png
Binary files differ
diff --git a/web/static/images/emoji/1f52f.png b/web/static/images/emoji/1f52f.png
new file mode 100644
index 000000000..3b590a628
--- /dev/null
+++ b/web/static/images/emoji/1f52f.png
Binary files differ
diff --git a/web/static/images/emoji/1f530.png b/web/static/images/emoji/1f530.png
new file mode 100644
index 000000000..5f429bf63
--- /dev/null
+++ b/web/static/images/emoji/1f530.png
Binary files differ
diff --git a/web/static/images/emoji/1f531.png b/web/static/images/emoji/1f531.png
new file mode 100644
index 000000000..ae1e0bc88
--- /dev/null
+++ b/web/static/images/emoji/1f531.png
Binary files differ
diff --git a/web/static/images/emoji/1f532.png b/web/static/images/emoji/1f532.png
new file mode 100644
index 000000000..06c68f23e
--- /dev/null
+++ b/web/static/images/emoji/1f532.png
Binary files differ
diff --git a/web/static/images/emoji/1f533.png b/web/static/images/emoji/1f533.png
new file mode 100644
index 000000000..df974d948
--- /dev/null
+++ b/web/static/images/emoji/1f533.png
Binary files differ
diff --git a/web/static/images/emoji/1f534.png b/web/static/images/emoji/1f534.png
new file mode 100644
index 000000000..bd50ae446
--- /dev/null
+++ b/web/static/images/emoji/1f534.png
Binary files differ
diff --git a/web/static/images/emoji/1f535.png b/web/static/images/emoji/1f535.png
new file mode 100644
index 000000000..ddc4e7e59
--- /dev/null
+++ b/web/static/images/emoji/1f535.png
Binary files differ
diff --git a/web/static/images/emoji/1f536.png b/web/static/images/emoji/1f536.png
new file mode 100644
index 000000000..f8c060fd2
--- /dev/null
+++ b/web/static/images/emoji/1f536.png
Binary files differ
diff --git a/web/static/images/emoji/1f537.png b/web/static/images/emoji/1f537.png
new file mode 100644
index 000000000..fbe133557
--- /dev/null
+++ b/web/static/images/emoji/1f537.png
Binary files differ
diff --git a/web/static/images/emoji/1f538.png b/web/static/images/emoji/1f538.png
new file mode 100644
index 000000000..64a03b216
--- /dev/null
+++ b/web/static/images/emoji/1f538.png
Binary files differ
diff --git a/web/static/images/emoji/1f539.png b/web/static/images/emoji/1f539.png
new file mode 100644
index 000000000..9b8ded84a
--- /dev/null
+++ b/web/static/images/emoji/1f539.png
Binary files differ
diff --git a/web/static/images/emoji/1f53a.png b/web/static/images/emoji/1f53a.png
new file mode 100644
index 000000000..b321f2a49
--- /dev/null
+++ b/web/static/images/emoji/1f53a.png
Binary files differ
diff --git a/web/static/images/emoji/1f53b.png b/web/static/images/emoji/1f53b.png
new file mode 100644
index 000000000..4c9586d24
--- /dev/null
+++ b/web/static/images/emoji/1f53b.png
Binary files differ
diff --git a/web/static/images/emoji/1f53c.png b/web/static/images/emoji/1f53c.png
new file mode 100644
index 000000000..7752177fd
--- /dev/null
+++ b/web/static/images/emoji/1f53c.png
Binary files differ
diff --git a/web/static/images/emoji/1f53d.png b/web/static/images/emoji/1f53d.png
new file mode 100644
index 000000000..6694271c4
--- /dev/null
+++ b/web/static/images/emoji/1f53d.png
Binary files differ
diff --git a/web/static/images/emoji/1f546.png b/web/static/images/emoji/1f546.png
new file mode 100644
index 000000000..031328aa2
--- /dev/null
+++ b/web/static/images/emoji/1f546.png
Binary files differ
diff --git a/web/static/images/emoji/1f547.png b/web/static/images/emoji/1f547.png
new file mode 100644
index 000000000..983217302
--- /dev/null
+++ b/web/static/images/emoji/1f547.png
Binary files differ
diff --git a/web/static/images/emoji/1f548.png b/web/static/images/emoji/1f548.png
new file mode 100644
index 000000000..5ceabd8f7
--- /dev/null
+++ b/web/static/images/emoji/1f548.png
Binary files differ
diff --git a/web/static/images/emoji/1f549.png b/web/static/images/emoji/1f549.png
new file mode 100644
index 000000000..52cc9f00e
--- /dev/null
+++ b/web/static/images/emoji/1f549.png
Binary files differ
diff --git a/web/static/images/emoji/1f54a.png b/web/static/images/emoji/1f54a.png
new file mode 100644
index 000000000..e54bfc2b1
--- /dev/null
+++ b/web/static/images/emoji/1f54a.png
Binary files differ
diff --git a/web/static/images/emoji/1f550.png b/web/static/images/emoji/1f550.png
new file mode 100644
index 000000000..980085a07
--- /dev/null
+++ b/web/static/images/emoji/1f550.png
Binary files differ
diff --git a/web/static/images/emoji/1f551.png b/web/static/images/emoji/1f551.png
new file mode 100644
index 000000000..ba411f8f0
--- /dev/null
+++ b/web/static/images/emoji/1f551.png
Binary files differ
diff --git a/web/static/images/emoji/1f552.png b/web/static/images/emoji/1f552.png
new file mode 100644
index 000000000..7978c4251
--- /dev/null
+++ b/web/static/images/emoji/1f552.png
Binary files differ
diff --git a/web/static/images/emoji/1f553.png b/web/static/images/emoji/1f553.png
new file mode 100644
index 000000000..4cfceb291
--- /dev/null
+++ b/web/static/images/emoji/1f553.png
Binary files differ
diff --git a/web/static/images/emoji/1f554.png b/web/static/images/emoji/1f554.png
new file mode 100644
index 000000000..403b99fb2
--- /dev/null
+++ b/web/static/images/emoji/1f554.png
Binary files differ
diff --git a/web/static/images/emoji/1f555.png b/web/static/images/emoji/1f555.png
new file mode 100644
index 000000000..008ac2b9e
--- /dev/null
+++ b/web/static/images/emoji/1f555.png
Binary files differ
diff --git a/web/static/images/emoji/1f556.png b/web/static/images/emoji/1f556.png
new file mode 100644
index 000000000..067d11165
--- /dev/null
+++ b/web/static/images/emoji/1f556.png
Binary files differ
diff --git a/web/static/images/emoji/1f557.png b/web/static/images/emoji/1f557.png
new file mode 100644
index 000000000..c4bdc4080
--- /dev/null
+++ b/web/static/images/emoji/1f557.png
Binary files differ
diff --git a/web/static/images/emoji/1f558.png b/web/static/images/emoji/1f558.png
new file mode 100644
index 000000000..467de0ba5
--- /dev/null
+++ b/web/static/images/emoji/1f558.png
Binary files differ
diff --git a/web/static/images/emoji/1f559.png b/web/static/images/emoji/1f559.png
new file mode 100644
index 000000000..90f1576d2
--- /dev/null
+++ b/web/static/images/emoji/1f559.png
Binary files differ
diff --git a/web/static/images/emoji/1f55a.png b/web/static/images/emoji/1f55a.png
new file mode 100644
index 000000000..918ba245f
--- /dev/null
+++ b/web/static/images/emoji/1f55a.png
Binary files differ
diff --git a/web/static/images/emoji/1f55b.png b/web/static/images/emoji/1f55b.png
new file mode 100644
index 000000000..d5848e629
--- /dev/null
+++ b/web/static/images/emoji/1f55b.png
Binary files differ
diff --git a/web/static/images/emoji/1f55c.png b/web/static/images/emoji/1f55c.png
new file mode 100644
index 000000000..c4675548d
--- /dev/null
+++ b/web/static/images/emoji/1f55c.png
Binary files differ
diff --git a/web/static/images/emoji/1f55d.png b/web/static/images/emoji/1f55d.png
new file mode 100644
index 000000000..5482453d1
--- /dev/null
+++ b/web/static/images/emoji/1f55d.png
Binary files differ
diff --git a/web/static/images/emoji/1f55e.png b/web/static/images/emoji/1f55e.png
new file mode 100644
index 000000000..f66421993
--- /dev/null
+++ b/web/static/images/emoji/1f55e.png
Binary files differ
diff --git a/web/static/images/emoji/1f55f.png b/web/static/images/emoji/1f55f.png
new file mode 100644
index 000000000..b93f01e67
--- /dev/null
+++ b/web/static/images/emoji/1f55f.png
Binary files differ
diff --git a/web/static/images/emoji/1f560.png b/web/static/images/emoji/1f560.png
new file mode 100644
index 000000000..b2ad07307
--- /dev/null
+++ b/web/static/images/emoji/1f560.png
Binary files differ
diff --git a/web/static/images/emoji/1f561.png b/web/static/images/emoji/1f561.png
new file mode 100644
index 000000000..dbabd4eb9
--- /dev/null
+++ b/web/static/images/emoji/1f561.png
Binary files differ
diff --git a/web/static/images/emoji/1f562.png b/web/static/images/emoji/1f562.png
new file mode 100644
index 000000000..415894eda
--- /dev/null
+++ b/web/static/images/emoji/1f562.png
Binary files differ
diff --git a/web/static/images/emoji/1f563.png b/web/static/images/emoji/1f563.png
new file mode 100644
index 000000000..8e899ad48
--- /dev/null
+++ b/web/static/images/emoji/1f563.png
Binary files differ
diff --git a/web/static/images/emoji/1f564.png b/web/static/images/emoji/1f564.png
new file mode 100644
index 000000000..d9c91203c
--- /dev/null
+++ b/web/static/images/emoji/1f564.png
Binary files differ
diff --git a/web/static/images/emoji/1f565.png b/web/static/images/emoji/1f565.png
new file mode 100644
index 000000000..c530b7db4
--- /dev/null
+++ b/web/static/images/emoji/1f565.png
Binary files differ
diff --git a/web/static/images/emoji/1f566.png b/web/static/images/emoji/1f566.png
new file mode 100644
index 000000000..e39bbbbb1
--- /dev/null
+++ b/web/static/images/emoji/1f566.png
Binary files differ
diff --git a/web/static/images/emoji/1f567.png b/web/static/images/emoji/1f567.png
new file mode 100644
index 000000000..f67ed85f3
--- /dev/null
+++ b/web/static/images/emoji/1f567.png
Binary files differ
diff --git a/web/static/images/emoji/1f568.png b/web/static/images/emoji/1f568.png
new file mode 100644
index 000000000..2d90e65b3
--- /dev/null
+++ b/web/static/images/emoji/1f568.png
Binary files differ
diff --git a/web/static/images/emoji/1f569.png b/web/static/images/emoji/1f569.png
new file mode 100644
index 000000000..32b23d789
--- /dev/null
+++ b/web/static/images/emoji/1f569.png
Binary files differ
diff --git a/web/static/images/emoji/1f56a.png b/web/static/images/emoji/1f56a.png
new file mode 100644
index 000000000..80fda89dd
--- /dev/null
+++ b/web/static/images/emoji/1f56a.png
Binary files differ
diff --git a/web/static/images/emoji/1f56b.png b/web/static/images/emoji/1f56b.png
new file mode 100644
index 000000000..0101d8785
--- /dev/null
+++ b/web/static/images/emoji/1f56b.png
Binary files differ
diff --git a/web/static/images/emoji/1f56c.png b/web/static/images/emoji/1f56c.png
new file mode 100644
index 000000000..9cb585d4a
--- /dev/null
+++ b/web/static/images/emoji/1f56c.png
Binary files differ
diff --git a/web/static/images/emoji/1f56d.png b/web/static/images/emoji/1f56d.png
new file mode 100644
index 000000000..da703c458
--- /dev/null
+++ b/web/static/images/emoji/1f56d.png
Binary files differ
diff --git a/web/static/images/emoji/1f56e.png b/web/static/images/emoji/1f56e.png
new file mode 100644
index 000000000..2f69b084b
--- /dev/null
+++ b/web/static/images/emoji/1f56e.png
Binary files differ
diff --git a/web/static/images/emoji/1f56f.png b/web/static/images/emoji/1f56f.png
new file mode 100644
index 000000000..d3395073a
--- /dev/null
+++ b/web/static/images/emoji/1f56f.png
Binary files differ
diff --git a/web/static/images/emoji/1f570.png b/web/static/images/emoji/1f570.png
new file mode 100644
index 000000000..f944ec0c6
--- /dev/null
+++ b/web/static/images/emoji/1f570.png
Binary files differ
diff --git a/web/static/images/emoji/1f571.png b/web/static/images/emoji/1f571.png
new file mode 100644
index 000000000..e7df45a04
--- /dev/null
+++ b/web/static/images/emoji/1f571.png
Binary files differ
diff --git a/web/static/images/emoji/1f572.png b/web/static/images/emoji/1f572.png
new file mode 100644
index 000000000..f2b6fd31e
--- /dev/null
+++ b/web/static/images/emoji/1f572.png
Binary files differ
diff --git a/web/static/images/emoji/1f573.png b/web/static/images/emoji/1f573.png
new file mode 100644
index 000000000..ca20daa89
--- /dev/null
+++ b/web/static/images/emoji/1f573.png
Binary files differ
diff --git a/web/static/images/emoji/1f574.png b/web/static/images/emoji/1f574.png
new file mode 100644
index 000000000..1c526acbe
--- /dev/null
+++ b/web/static/images/emoji/1f574.png
Binary files differ
diff --git a/web/static/images/emoji/1f575.png b/web/static/images/emoji/1f575.png
new file mode 100644
index 000000000..9ee45b37b
--- /dev/null
+++ b/web/static/images/emoji/1f575.png
Binary files differ
diff --git a/web/static/images/emoji/1f576.png b/web/static/images/emoji/1f576.png
new file mode 100644
index 000000000..6ed2172a0
--- /dev/null
+++ b/web/static/images/emoji/1f576.png
Binary files differ
diff --git a/web/static/images/emoji/1f577.png b/web/static/images/emoji/1f577.png
new file mode 100644
index 000000000..9e1fe5441
--- /dev/null
+++ b/web/static/images/emoji/1f577.png
Binary files differ
diff --git a/web/static/images/emoji/1f578.png b/web/static/images/emoji/1f578.png
new file mode 100644
index 000000000..edad19093
--- /dev/null
+++ b/web/static/images/emoji/1f578.png
Binary files differ
diff --git a/web/static/images/emoji/1f579.png b/web/static/images/emoji/1f579.png
new file mode 100644
index 000000000..6808f30fb
--- /dev/null
+++ b/web/static/images/emoji/1f579.png
Binary files differ
diff --git a/web/static/images/emoji/1f57b.png b/web/static/images/emoji/1f57b.png
new file mode 100644
index 000000000..172c5fcd3
--- /dev/null
+++ b/web/static/images/emoji/1f57b.png
Binary files differ
diff --git a/web/static/images/emoji/1f57e.png b/web/static/images/emoji/1f57e.png
new file mode 100644
index 000000000..9f66689a1
--- /dev/null
+++ b/web/static/images/emoji/1f57e.png
Binary files differ
diff --git a/web/static/images/emoji/1f57f.png b/web/static/images/emoji/1f57f.png
new file mode 100644
index 000000000..0e3b2c3da
--- /dev/null
+++ b/web/static/images/emoji/1f57f.png
Binary files differ
diff --git a/web/static/images/emoji/1f581.png b/web/static/images/emoji/1f581.png
new file mode 100644
index 000000000..1b6d000b2
--- /dev/null
+++ b/web/static/images/emoji/1f581.png
Binary files differ
diff --git a/web/static/images/emoji/1f582.png b/web/static/images/emoji/1f582.png
new file mode 100644
index 000000000..ebc29b0a1
--- /dev/null
+++ b/web/static/images/emoji/1f582.png
Binary files differ
diff --git a/web/static/images/emoji/1f583.png b/web/static/images/emoji/1f583.png
new file mode 100644
index 000000000..77ad89fa7
--- /dev/null
+++ b/web/static/images/emoji/1f583.png
Binary files differ
diff --git a/web/static/images/emoji/1f585.png b/web/static/images/emoji/1f585.png
new file mode 100644
index 000000000..777f35a89
--- /dev/null
+++ b/web/static/images/emoji/1f585.png
Binary files differ
diff --git a/web/static/images/emoji/1f586.png b/web/static/images/emoji/1f586.png
new file mode 100644
index 000000000..dde00d62f
--- /dev/null
+++ b/web/static/images/emoji/1f586.png
Binary files differ
diff --git a/web/static/images/emoji/1f587.png b/web/static/images/emoji/1f587.png
new file mode 100644
index 000000000..e449161de
--- /dev/null
+++ b/web/static/images/emoji/1f587.png
Binary files differ
diff --git a/web/static/images/emoji/1f588.png b/web/static/images/emoji/1f588.png
new file mode 100644
index 000000000..8036d6cbe
--- /dev/null
+++ b/web/static/images/emoji/1f588.png
Binary files differ
diff --git a/web/static/images/emoji/1f589.png b/web/static/images/emoji/1f589.png
new file mode 100644
index 000000000..d11de2bf0
--- /dev/null
+++ b/web/static/images/emoji/1f589.png
Binary files differ
diff --git a/web/static/images/emoji/1f58a.png b/web/static/images/emoji/1f58a.png
new file mode 100644
index 000000000..b363fd8bd
--- /dev/null
+++ b/web/static/images/emoji/1f58a.png
Binary files differ
diff --git a/web/static/images/emoji/1f58b.png b/web/static/images/emoji/1f58b.png
new file mode 100644
index 000000000..0b4301c18
--- /dev/null
+++ b/web/static/images/emoji/1f58b.png
Binary files differ
diff --git a/web/static/images/emoji/1f58c.png b/web/static/images/emoji/1f58c.png
new file mode 100644
index 000000000..49eab81fa
--- /dev/null
+++ b/web/static/images/emoji/1f58c.png
Binary files differ
diff --git a/web/static/images/emoji/1f58d.png b/web/static/images/emoji/1f58d.png
new file mode 100644
index 000000000..3d8392f9b
--- /dev/null
+++ b/web/static/images/emoji/1f58d.png
Binary files differ
diff --git a/web/static/images/emoji/1f58e.png b/web/static/images/emoji/1f58e.png
new file mode 100644
index 000000000..629bd17a2
--- /dev/null
+++ b/web/static/images/emoji/1f58e.png
Binary files differ
diff --git a/web/static/images/emoji/1f58f.png b/web/static/images/emoji/1f58f.png
new file mode 100644
index 000000000..1e20ede48
--- /dev/null
+++ b/web/static/images/emoji/1f58f.png
Binary files differ
diff --git a/web/static/images/emoji/1f590.png b/web/static/images/emoji/1f590.png
new file mode 100644
index 000000000..09046e201
--- /dev/null
+++ b/web/static/images/emoji/1f590.png
Binary files differ
diff --git a/web/static/images/emoji/1f591.png b/web/static/images/emoji/1f591.png
new file mode 100644
index 000000000..e7d29d8fe
--- /dev/null
+++ b/web/static/images/emoji/1f591.png
Binary files differ
diff --git a/web/static/images/emoji/1f592.png b/web/static/images/emoji/1f592.png
new file mode 100644
index 000000000..c39f3300e
--- /dev/null
+++ b/web/static/images/emoji/1f592.png
Binary files differ
diff --git a/web/static/images/emoji/1f593.png b/web/static/images/emoji/1f593.png
new file mode 100644
index 000000000..ebcdca18a
--- /dev/null
+++ b/web/static/images/emoji/1f593.png
Binary files differ
diff --git a/web/static/images/emoji/1f594.png b/web/static/images/emoji/1f594.png
new file mode 100644
index 000000000..a5dadf257
--- /dev/null
+++ b/web/static/images/emoji/1f594.png
Binary files differ
diff --git a/web/static/images/emoji/1f595.png b/web/static/images/emoji/1f595.png
new file mode 100644
index 000000000..c4e5d4a91
--- /dev/null
+++ b/web/static/images/emoji/1f595.png
Binary files differ
diff --git a/web/static/images/emoji/1f596.png b/web/static/images/emoji/1f596.png
new file mode 100644
index 000000000..88e8765e0
--- /dev/null
+++ b/web/static/images/emoji/1f596.png
Binary files differ
diff --git a/web/static/images/emoji/1f597.png b/web/static/images/emoji/1f597.png
new file mode 100644
index 000000000..18468bc88
--- /dev/null
+++ b/web/static/images/emoji/1f597.png
Binary files differ
diff --git a/web/static/images/emoji/1f598.png b/web/static/images/emoji/1f598.png
new file mode 100644
index 000000000..1abfbc5f6
--- /dev/null
+++ b/web/static/images/emoji/1f598.png
Binary files differ
diff --git a/web/static/images/emoji/1f599.png b/web/static/images/emoji/1f599.png
new file mode 100644
index 000000000..5ea3694d6
--- /dev/null
+++ b/web/static/images/emoji/1f599.png
Binary files differ
diff --git a/web/static/images/emoji/1f59e.png b/web/static/images/emoji/1f59e.png
new file mode 100644
index 000000000..ef514b6fc
--- /dev/null
+++ b/web/static/images/emoji/1f59e.png
Binary files differ
diff --git a/web/static/images/emoji/1f59f.png b/web/static/images/emoji/1f59f.png
new file mode 100644
index 000000000..8a1a419ab
--- /dev/null
+++ b/web/static/images/emoji/1f59f.png
Binary files differ
diff --git a/web/static/images/emoji/1f5a5.png b/web/static/images/emoji/1f5a5.png
new file mode 100644
index 000000000..59fc83484
--- /dev/null
+++ b/web/static/images/emoji/1f5a5.png
Binary files differ
diff --git a/web/static/images/emoji/1f5a6.png b/web/static/images/emoji/1f5a6.png
new file mode 100644
index 000000000..ed5be833c
--- /dev/null
+++ b/web/static/images/emoji/1f5a6.png
Binary files differ
diff --git a/web/static/images/emoji/1f5a7.png b/web/static/images/emoji/1f5a7.png
new file mode 100644
index 000000000..c4bf3dc41
--- /dev/null
+++ b/web/static/images/emoji/1f5a7.png
Binary files differ
diff --git a/web/static/images/emoji/1f5a8.png b/web/static/images/emoji/1f5a8.png
new file mode 100644
index 000000000..8d6002d7b
--- /dev/null
+++ b/web/static/images/emoji/1f5a8.png
Binary files differ
diff --git a/web/static/images/emoji/1f5a9.png b/web/static/images/emoji/1f5a9.png
new file mode 100644
index 000000000..2de66973b
--- /dev/null
+++ b/web/static/images/emoji/1f5a9.png
Binary files differ
diff --git a/web/static/images/emoji/1f5aa.png b/web/static/images/emoji/1f5aa.png
new file mode 100644
index 000000000..248d29edd
--- /dev/null
+++ b/web/static/images/emoji/1f5aa.png
Binary files differ
diff --git a/web/static/images/emoji/1f5ab.png b/web/static/images/emoji/1f5ab.png
new file mode 100644
index 000000000..1bc1a86aa
--- /dev/null
+++ b/web/static/images/emoji/1f5ab.png
Binary files differ
diff --git a/web/static/images/emoji/1f5ad.png b/web/static/images/emoji/1f5ad.png
new file mode 100644
index 000000000..7d58690b1
--- /dev/null
+++ b/web/static/images/emoji/1f5ad.png
Binary files differ
diff --git a/web/static/images/emoji/1f5ae.png b/web/static/images/emoji/1f5ae.png
new file mode 100644
index 000000000..a603a417b
--- /dev/null
+++ b/web/static/images/emoji/1f5ae.png
Binary files differ
diff --git a/web/static/images/emoji/1f5af.png b/web/static/images/emoji/1f5af.png
new file mode 100644
index 000000000..2594e627b
--- /dev/null
+++ b/web/static/images/emoji/1f5af.png
Binary files differ
diff --git a/web/static/images/emoji/1f5b2.png b/web/static/images/emoji/1f5b2.png
new file mode 100644
index 000000000..3ecf9b87b
--- /dev/null
+++ b/web/static/images/emoji/1f5b2.png
Binary files differ
diff --git a/web/static/images/emoji/1f5b3.png b/web/static/images/emoji/1f5b3.png
new file mode 100644
index 000000000..548314b95
--- /dev/null
+++ b/web/static/images/emoji/1f5b3.png
Binary files differ
diff --git a/web/static/images/emoji/1f5b4.png b/web/static/images/emoji/1f5b4.png
new file mode 100644
index 000000000..c7b052aa3
--- /dev/null
+++ b/web/static/images/emoji/1f5b4.png
Binary files differ
diff --git a/web/static/images/emoji/1f5b8.png b/web/static/images/emoji/1f5b8.png
new file mode 100644
index 000000000..471074beb
--- /dev/null
+++ b/web/static/images/emoji/1f5b8.png
Binary files differ
diff --git a/web/static/images/emoji/1f5b9.png b/web/static/images/emoji/1f5b9.png
new file mode 100644
index 000000000..3da781788
--- /dev/null
+++ b/web/static/images/emoji/1f5b9.png
Binary files differ
diff --git a/web/static/images/emoji/1f5bc.png b/web/static/images/emoji/1f5bc.png
new file mode 100644
index 000000000..d2950ba9b
--- /dev/null
+++ b/web/static/images/emoji/1f5bc.png
Binary files differ
diff --git a/web/static/images/emoji/1f5bd.png b/web/static/images/emoji/1f5bd.png
new file mode 100644
index 000000000..d88582cd4
--- /dev/null
+++ b/web/static/images/emoji/1f5bd.png
Binary files differ
diff --git a/web/static/images/emoji/1f5be.png b/web/static/images/emoji/1f5be.png
new file mode 100644
index 000000000..a768f6c67
--- /dev/null
+++ b/web/static/images/emoji/1f5be.png
Binary files differ
diff --git a/web/static/images/emoji/1f5c0.png b/web/static/images/emoji/1f5c0.png
new file mode 100644
index 000000000..e0178906c
--- /dev/null
+++ b/web/static/images/emoji/1f5c0.png
Binary files differ
diff --git a/web/static/images/emoji/1f5c1.png b/web/static/images/emoji/1f5c1.png
new file mode 100644
index 000000000..bbdadc9b4
--- /dev/null
+++ b/web/static/images/emoji/1f5c1.png
Binary files differ
diff --git a/web/static/images/emoji/1f5c2.png b/web/static/images/emoji/1f5c2.png
new file mode 100644
index 000000000..b22199edd
--- /dev/null
+++ b/web/static/images/emoji/1f5c2.png
Binary files differ
diff --git a/web/static/images/emoji/1f5c3.png b/web/static/images/emoji/1f5c3.png
new file mode 100644
index 000000000..c9278f336
--- /dev/null
+++ b/web/static/images/emoji/1f5c3.png
Binary files differ
diff --git a/web/static/images/emoji/1f5c4.png b/web/static/images/emoji/1f5c4.png
new file mode 100644
index 000000000..e45c65729
--- /dev/null
+++ b/web/static/images/emoji/1f5c4.png
Binary files differ
diff --git a/web/static/images/emoji/1f5c6.png b/web/static/images/emoji/1f5c6.png
new file mode 100644
index 000000000..8b62bb697
--- /dev/null
+++ b/web/static/images/emoji/1f5c6.png
Binary files differ
diff --git a/web/static/images/emoji/1f5c7.png b/web/static/images/emoji/1f5c7.png
new file mode 100644
index 000000000..1dc65dea6
--- /dev/null
+++ b/web/static/images/emoji/1f5c7.png
Binary files differ
diff --git a/web/static/images/emoji/1f5c9.png b/web/static/images/emoji/1f5c9.png
new file mode 100644
index 000000000..b435ba36c
--- /dev/null
+++ b/web/static/images/emoji/1f5c9.png
Binary files differ
diff --git a/web/static/images/emoji/1f5ca.png b/web/static/images/emoji/1f5ca.png
new file mode 100644
index 000000000..868d40990
--- /dev/null
+++ b/web/static/images/emoji/1f5ca.png
Binary files differ
diff --git a/web/static/images/emoji/1f5ce.png b/web/static/images/emoji/1f5ce.png
new file mode 100644
index 000000000..1ef3ab963
--- /dev/null
+++ b/web/static/images/emoji/1f5ce.png
Binary files differ
diff --git a/web/static/images/emoji/1f5cf.png b/web/static/images/emoji/1f5cf.png
new file mode 100644
index 000000000..5c7c06403
--- /dev/null
+++ b/web/static/images/emoji/1f5cf.png
Binary files differ
diff --git a/web/static/images/emoji/1f5d0.png b/web/static/images/emoji/1f5d0.png
new file mode 100644
index 000000000..7d59ccd2d
--- /dev/null
+++ b/web/static/images/emoji/1f5d0.png
Binary files differ
diff --git a/web/static/images/emoji/1f5d1.png b/web/static/images/emoji/1f5d1.png
new file mode 100644
index 000000000..3baef5973
--- /dev/null
+++ b/web/static/images/emoji/1f5d1.png
Binary files differ
diff --git a/web/static/images/emoji/1f5d2.png b/web/static/images/emoji/1f5d2.png
new file mode 100644
index 000000000..28bc54348
--- /dev/null
+++ b/web/static/images/emoji/1f5d2.png
Binary files differ
diff --git a/web/static/images/emoji/1f5d3.png b/web/static/images/emoji/1f5d3.png
new file mode 100644
index 000000000..ce73aecfa
--- /dev/null
+++ b/web/static/images/emoji/1f5d3.png
Binary files differ
diff --git a/web/static/images/emoji/1f5d4.png b/web/static/images/emoji/1f5d4.png
new file mode 100644
index 000000000..237192814
--- /dev/null
+++ b/web/static/images/emoji/1f5d4.png
Binary files differ
diff --git a/web/static/images/emoji/1f5d8.png b/web/static/images/emoji/1f5d8.png
new file mode 100644
index 000000000..65b6a0ad9
--- /dev/null
+++ b/web/static/images/emoji/1f5d8.png
Binary files differ
diff --git a/web/static/images/emoji/1f5d9.png b/web/static/images/emoji/1f5d9.png
new file mode 100644
index 000000000..75c08401d
--- /dev/null
+++ b/web/static/images/emoji/1f5d9.png
Binary files differ
diff --git a/web/static/images/emoji/1f5dc.png b/web/static/images/emoji/1f5dc.png
new file mode 100644
index 000000000..08c06264e
--- /dev/null
+++ b/web/static/images/emoji/1f5dc.png
Binary files differ
diff --git a/web/static/images/emoji/1f5dd.png b/web/static/images/emoji/1f5dd.png
new file mode 100644
index 000000000..d153b6888
--- /dev/null
+++ b/web/static/images/emoji/1f5dd.png
Binary files differ
diff --git a/web/static/images/emoji/1f5de.png b/web/static/images/emoji/1f5de.png
new file mode 100644
index 000000000..4254eb5f2
--- /dev/null
+++ b/web/static/images/emoji/1f5de.png
Binary files differ
diff --git a/web/static/images/emoji/1f5e0.png b/web/static/images/emoji/1f5e0.png
new file mode 100644
index 000000000..d60c9803e
--- /dev/null
+++ b/web/static/images/emoji/1f5e0.png
Binary files differ
diff --git a/web/static/images/emoji/1f5e1.png b/web/static/images/emoji/1f5e1.png
new file mode 100644
index 000000000..8bfeac95d
--- /dev/null
+++ b/web/static/images/emoji/1f5e1.png
Binary files differ
diff --git a/web/static/images/emoji/1f5e2.png b/web/static/images/emoji/1f5e2.png
new file mode 100644
index 000000000..50f2cac22
--- /dev/null
+++ b/web/static/images/emoji/1f5e2.png
Binary files differ
diff --git a/web/static/images/emoji/1f5e3.png b/web/static/images/emoji/1f5e3.png
new file mode 100644
index 000000000..137a3c4c5
--- /dev/null
+++ b/web/static/images/emoji/1f5e3.png
Binary files differ
diff --git a/web/static/images/emoji/1f5e8.png b/web/static/images/emoji/1f5e8.png
new file mode 100644
index 000000000..81313baae
--- /dev/null
+++ b/web/static/images/emoji/1f5e8.png
Binary files differ
diff --git a/web/static/images/emoji/1f5e9.png b/web/static/images/emoji/1f5e9.png
new file mode 100644
index 000000000..4644940a0
--- /dev/null
+++ b/web/static/images/emoji/1f5e9.png
Binary files differ
diff --git a/web/static/images/emoji/1f5ea.png b/web/static/images/emoji/1f5ea.png
new file mode 100644
index 000000000..41b490e79
--- /dev/null
+++ b/web/static/images/emoji/1f5ea.png
Binary files differ
diff --git a/web/static/images/emoji/1f5eb.png b/web/static/images/emoji/1f5eb.png
new file mode 100644
index 000000000..5b054548e
--- /dev/null
+++ b/web/static/images/emoji/1f5eb.png
Binary files differ
diff --git a/web/static/images/emoji/1f5ec.png b/web/static/images/emoji/1f5ec.png
new file mode 100644
index 000000000..6d905ed80
--- /dev/null
+++ b/web/static/images/emoji/1f5ec.png
Binary files differ
diff --git a/web/static/images/emoji/1f5ed.png b/web/static/images/emoji/1f5ed.png
new file mode 100644
index 000000000..3ea461a24
--- /dev/null
+++ b/web/static/images/emoji/1f5ed.png
Binary files differ
diff --git a/web/static/images/emoji/1f5ee.png b/web/static/images/emoji/1f5ee.png
new file mode 100644
index 000000000..c4a4a073c
--- /dev/null
+++ b/web/static/images/emoji/1f5ee.png
Binary files differ
diff --git a/web/static/images/emoji/1f5ef.png b/web/static/images/emoji/1f5ef.png
new file mode 100644
index 000000000..8e25fa6b4
--- /dev/null
+++ b/web/static/images/emoji/1f5ef.png
Binary files differ
diff --git a/web/static/images/emoji/1f5f0.png b/web/static/images/emoji/1f5f0.png
new file mode 100644
index 000000000..f99be5272
--- /dev/null
+++ b/web/static/images/emoji/1f5f0.png
Binary files differ
diff --git a/web/static/images/emoji/1f5f1.png b/web/static/images/emoji/1f5f1.png
new file mode 100644
index 000000000..6bdf533f1
--- /dev/null
+++ b/web/static/images/emoji/1f5f1.png
Binary files differ
diff --git a/web/static/images/emoji/1f5f2.png b/web/static/images/emoji/1f5f2.png
new file mode 100644
index 000000000..67dfb3633
--- /dev/null
+++ b/web/static/images/emoji/1f5f2.png
Binary files differ
diff --git a/web/static/images/emoji/1f5f3.png b/web/static/images/emoji/1f5f3.png
new file mode 100644
index 000000000..e97e4727e
--- /dev/null
+++ b/web/static/images/emoji/1f5f3.png
Binary files differ
diff --git a/web/static/images/emoji/1f5f4.png b/web/static/images/emoji/1f5f4.png
new file mode 100644
index 000000000..431df8e24
--- /dev/null
+++ b/web/static/images/emoji/1f5f4.png
Binary files differ
diff --git a/web/static/images/emoji/1f5f5.png b/web/static/images/emoji/1f5f5.png
new file mode 100644
index 000000000..260410821
--- /dev/null
+++ b/web/static/images/emoji/1f5f5.png
Binary files differ
diff --git a/web/static/images/emoji/1f5f8.png b/web/static/images/emoji/1f5f8.png
new file mode 100644
index 000000000..350aaaa3e
--- /dev/null
+++ b/web/static/images/emoji/1f5f8.png
Binary files differ
diff --git a/web/static/images/emoji/1f5f9.png b/web/static/images/emoji/1f5f9.png
new file mode 100644
index 000000000..ecbc97fa4
--- /dev/null
+++ b/web/static/images/emoji/1f5f9.png
Binary files differ
diff --git a/web/static/images/emoji/1f5fa.png b/web/static/images/emoji/1f5fa.png
new file mode 100644
index 000000000..799747f8f
--- /dev/null
+++ b/web/static/images/emoji/1f5fa.png
Binary files differ
diff --git a/web/static/images/emoji/1f5fb.png b/web/static/images/emoji/1f5fb.png
new file mode 100644
index 000000000..51d1aeab1
--- /dev/null
+++ b/web/static/images/emoji/1f5fb.png
Binary files differ
diff --git a/web/static/images/emoji/1f5fc.png b/web/static/images/emoji/1f5fc.png
new file mode 100644
index 000000000..8833f08a5
--- /dev/null
+++ b/web/static/images/emoji/1f5fc.png
Binary files differ
diff --git a/web/static/images/emoji/1f5fd.png b/web/static/images/emoji/1f5fd.png
new file mode 100644
index 000000000..709fd6bff
--- /dev/null
+++ b/web/static/images/emoji/1f5fd.png
Binary files differ
diff --git a/web/static/images/emoji/1f5fe.png b/web/static/images/emoji/1f5fe.png
new file mode 100644
index 000000000..79bb896f9
--- /dev/null
+++ b/web/static/images/emoji/1f5fe.png
Binary files differ
diff --git a/web/static/images/emoji/1f5ff.png b/web/static/images/emoji/1f5ff.png
new file mode 100644
index 000000000..247d34e25
--- /dev/null
+++ b/web/static/images/emoji/1f5ff.png
Binary files differ
diff --git a/web/static/images/emoji/1f600.png b/web/static/images/emoji/1f600.png
new file mode 100644
index 000000000..1a5edc7be
--- /dev/null
+++ b/web/static/images/emoji/1f600.png
Binary files differ
diff --git a/web/static/images/emoji/1f601.png b/web/static/images/emoji/1f601.png
new file mode 100644
index 000000000..bf4d098b9
--- /dev/null
+++ b/web/static/images/emoji/1f601.png
Binary files differ
diff --git a/web/static/images/emoji/1f602.png b/web/static/images/emoji/1f602.png
new file mode 100644
index 000000000..bc1abb7a4
--- /dev/null
+++ b/web/static/images/emoji/1f602.png
Binary files differ
diff --git a/web/static/images/emoji/1f603.png b/web/static/images/emoji/1f603.png
new file mode 100644
index 000000000..eb281633c
--- /dev/null
+++ b/web/static/images/emoji/1f603.png
Binary files differ
diff --git a/web/static/images/emoji/1f604.png b/web/static/images/emoji/1f604.png
new file mode 100644
index 000000000..63beffb17
--- /dev/null
+++ b/web/static/images/emoji/1f604.png
Binary files differ
diff --git a/web/static/images/emoji/1f605.png b/web/static/images/emoji/1f605.png
new file mode 100644
index 000000000..691ffa771
--- /dev/null
+++ b/web/static/images/emoji/1f605.png
Binary files differ
diff --git a/web/static/images/emoji/1f606.png b/web/static/images/emoji/1f606.png
new file mode 100644
index 000000000..d7e70b1a4
--- /dev/null
+++ b/web/static/images/emoji/1f606.png
Binary files differ
diff --git a/web/static/images/emoji/1f607.png b/web/static/images/emoji/1f607.png
new file mode 100644
index 000000000..1c449201d
--- /dev/null
+++ b/web/static/images/emoji/1f607.png
Binary files differ
diff --git a/web/static/images/emoji/1f608.png b/web/static/images/emoji/1f608.png
new file mode 100644
index 000000000..6e36a04e7
--- /dev/null
+++ b/web/static/images/emoji/1f608.png
Binary files differ
diff --git a/web/static/images/emoji/1f609.png b/web/static/images/emoji/1f609.png
new file mode 100644
index 000000000..d2ae627f7
--- /dev/null
+++ b/web/static/images/emoji/1f609.png
Binary files differ
diff --git a/web/static/images/emoji/1f60a.png b/web/static/images/emoji/1f60a.png
new file mode 100644
index 000000000..1733df545
--- /dev/null
+++ b/web/static/images/emoji/1f60a.png
Binary files differ
diff --git a/web/static/images/emoji/1f60b.png b/web/static/images/emoji/1f60b.png
new file mode 100644
index 000000000..7a353a7e8
--- /dev/null
+++ b/web/static/images/emoji/1f60b.png
Binary files differ
diff --git a/web/static/images/emoji/1f60c.png b/web/static/images/emoji/1f60c.png
new file mode 100644
index 000000000..3cb7aeced
--- /dev/null
+++ b/web/static/images/emoji/1f60c.png
Binary files differ
diff --git a/web/static/images/emoji/1f60d.png b/web/static/images/emoji/1f60d.png
new file mode 100644
index 000000000..c48431cb8
--- /dev/null
+++ b/web/static/images/emoji/1f60d.png
Binary files differ
diff --git a/web/static/images/emoji/1f60e.png b/web/static/images/emoji/1f60e.png
new file mode 100644
index 000000000..6d97948de
--- /dev/null
+++ b/web/static/images/emoji/1f60e.png
Binary files differ
diff --git a/web/static/images/emoji/1f60f.png b/web/static/images/emoji/1f60f.png
new file mode 100644
index 000000000..c7b1ac127
--- /dev/null
+++ b/web/static/images/emoji/1f60f.png
Binary files differ
diff --git a/web/static/images/emoji/1f610.png b/web/static/images/emoji/1f610.png
new file mode 100644
index 000000000..6cabdf2f4
--- /dev/null
+++ b/web/static/images/emoji/1f610.png
Binary files differ
diff --git a/web/static/images/emoji/1f611.png b/web/static/images/emoji/1f611.png
new file mode 100644
index 000000000..404129c98
--- /dev/null
+++ b/web/static/images/emoji/1f611.png
Binary files differ
diff --git a/web/static/images/emoji/1f612.png b/web/static/images/emoji/1f612.png
new file mode 100644
index 000000000..9d406ca65
--- /dev/null
+++ b/web/static/images/emoji/1f612.png
Binary files differ
diff --git a/web/static/images/emoji/1f613.png b/web/static/images/emoji/1f613.png
new file mode 100644
index 000000000..1c590918c
--- /dev/null
+++ b/web/static/images/emoji/1f613.png
Binary files differ
diff --git a/web/static/images/emoji/1f614.png b/web/static/images/emoji/1f614.png
new file mode 100644
index 000000000..ac55cb0f6
--- /dev/null
+++ b/web/static/images/emoji/1f614.png
Binary files differ
diff --git a/web/static/images/emoji/1f615.png b/web/static/images/emoji/1f615.png
new file mode 100644
index 000000000..6bb66752f
--- /dev/null
+++ b/web/static/images/emoji/1f615.png
Binary files differ
diff --git a/web/static/images/emoji/1f616.png b/web/static/images/emoji/1f616.png
new file mode 100644
index 000000000..da0e1cad0
--- /dev/null
+++ b/web/static/images/emoji/1f616.png
Binary files differ
diff --git a/web/static/images/emoji/1f617.png b/web/static/images/emoji/1f617.png
new file mode 100644
index 000000000..b00212407
--- /dev/null
+++ b/web/static/images/emoji/1f617.png
Binary files differ
diff --git a/web/static/images/emoji/1f618.png b/web/static/images/emoji/1f618.png
new file mode 100644
index 000000000..834ee8ec9
--- /dev/null
+++ b/web/static/images/emoji/1f618.png
Binary files differ
diff --git a/web/static/images/emoji/1f619.png b/web/static/images/emoji/1f619.png
new file mode 100644
index 000000000..7cbac1bf0
--- /dev/null
+++ b/web/static/images/emoji/1f619.png
Binary files differ
diff --git a/web/static/images/emoji/1f61a.png b/web/static/images/emoji/1f61a.png
new file mode 100644
index 000000000..523ef0453
--- /dev/null
+++ b/web/static/images/emoji/1f61a.png
Binary files differ
diff --git a/web/static/images/emoji/1f61b.png b/web/static/images/emoji/1f61b.png
new file mode 100644
index 000000000..3fa455255
--- /dev/null
+++ b/web/static/images/emoji/1f61b.png
Binary files differ
diff --git a/web/static/images/emoji/1f61c.png b/web/static/images/emoji/1f61c.png
new file mode 100644
index 000000000..a93847556
--- /dev/null
+++ b/web/static/images/emoji/1f61c.png
Binary files differ
diff --git a/web/static/images/emoji/1f61d.png b/web/static/images/emoji/1f61d.png
new file mode 100644
index 000000000..b599a5f57
--- /dev/null
+++ b/web/static/images/emoji/1f61d.png
Binary files differ
diff --git a/web/static/images/emoji/1f61e.png b/web/static/images/emoji/1f61e.png
new file mode 100644
index 000000000..9643415e6
--- /dev/null
+++ b/web/static/images/emoji/1f61e.png
Binary files differ
diff --git a/web/static/images/emoji/1f61f.png b/web/static/images/emoji/1f61f.png
new file mode 100644
index 000000000..c26a5f5a4
--- /dev/null
+++ b/web/static/images/emoji/1f61f.png
Binary files differ
diff --git a/web/static/images/emoji/1f620.png b/web/static/images/emoji/1f620.png
new file mode 100644
index 000000000..103961ee4
--- /dev/null
+++ b/web/static/images/emoji/1f620.png
Binary files differ
diff --git a/web/static/images/emoji/1f621.png b/web/static/images/emoji/1f621.png
new file mode 100644
index 000000000..c7f2df28c
--- /dev/null
+++ b/web/static/images/emoji/1f621.png
Binary files differ
diff --git a/web/static/images/emoji/1f622.png b/web/static/images/emoji/1f622.png
new file mode 100644
index 000000000..dd17cbcca
--- /dev/null
+++ b/web/static/images/emoji/1f622.png
Binary files differ
diff --git a/web/static/images/emoji/1f623.png b/web/static/images/emoji/1f623.png
new file mode 100644
index 000000000..ba1550418
--- /dev/null
+++ b/web/static/images/emoji/1f623.png
Binary files differ
diff --git a/web/static/images/emoji/1f624.png b/web/static/images/emoji/1f624.png
new file mode 100644
index 000000000..5d0f2bf16
--- /dev/null
+++ b/web/static/images/emoji/1f624.png
Binary files differ
diff --git a/web/static/images/emoji/1f625.png b/web/static/images/emoji/1f625.png
new file mode 100644
index 000000000..bcea87523
--- /dev/null
+++ b/web/static/images/emoji/1f625.png
Binary files differ
diff --git a/web/static/images/emoji/1f626.png b/web/static/images/emoji/1f626.png
new file mode 100644
index 000000000..0593fe678
--- /dev/null
+++ b/web/static/images/emoji/1f626.png
Binary files differ
diff --git a/web/static/images/emoji/1f627.png b/web/static/images/emoji/1f627.png
new file mode 100644
index 000000000..31b14f781
--- /dev/null
+++ b/web/static/images/emoji/1f627.png
Binary files differ
diff --git a/web/static/images/emoji/1f628.png b/web/static/images/emoji/1f628.png
new file mode 100644
index 000000000..4ac78c208
--- /dev/null
+++ b/web/static/images/emoji/1f628.png
Binary files differ
diff --git a/web/static/images/emoji/1f629.png b/web/static/images/emoji/1f629.png
new file mode 100644
index 000000000..1c18789e8
--- /dev/null
+++ b/web/static/images/emoji/1f629.png
Binary files differ
diff --git a/web/static/images/emoji/1f62a.png b/web/static/images/emoji/1f62a.png
new file mode 100644
index 000000000..5269b493c
--- /dev/null
+++ b/web/static/images/emoji/1f62a.png
Binary files differ
diff --git a/web/static/images/emoji/1f62b.png b/web/static/images/emoji/1f62b.png
new file mode 100644
index 000000000..adf5fa0fc
--- /dev/null
+++ b/web/static/images/emoji/1f62b.png
Binary files differ
diff --git a/web/static/images/emoji/1f62c.png b/web/static/images/emoji/1f62c.png
new file mode 100644
index 000000000..ea4458d8f
--- /dev/null
+++ b/web/static/images/emoji/1f62c.png
Binary files differ
diff --git a/web/static/images/emoji/1f62d.png b/web/static/images/emoji/1f62d.png
new file mode 100644
index 000000000..1339cc6ec
--- /dev/null
+++ b/web/static/images/emoji/1f62d.png
Binary files differ
diff --git a/web/static/images/emoji/1f62e.png b/web/static/images/emoji/1f62e.png
new file mode 100644
index 000000000..3f9cc3fff
--- /dev/null
+++ b/web/static/images/emoji/1f62e.png
Binary files differ
diff --git a/web/static/images/emoji/1f62f.png b/web/static/images/emoji/1f62f.png
new file mode 100644
index 000000000..443ed5811
--- /dev/null
+++ b/web/static/images/emoji/1f62f.png
Binary files differ
diff --git a/web/static/images/emoji/1f630.png b/web/static/images/emoji/1f630.png
new file mode 100644
index 000000000..f488a3ec3
--- /dev/null
+++ b/web/static/images/emoji/1f630.png
Binary files differ
diff --git a/web/static/images/emoji/1f631.png b/web/static/images/emoji/1f631.png
new file mode 100644
index 000000000..ea77d3e6b
--- /dev/null
+++ b/web/static/images/emoji/1f631.png
Binary files differ
diff --git a/web/static/images/emoji/1f632.png b/web/static/images/emoji/1f632.png
new file mode 100644
index 000000000..7be652cab
--- /dev/null
+++ b/web/static/images/emoji/1f632.png
Binary files differ
diff --git a/web/static/images/emoji/1f633.png b/web/static/images/emoji/1f633.png
new file mode 100644
index 000000000..44bd60154
--- /dev/null
+++ b/web/static/images/emoji/1f633.png
Binary files differ
diff --git a/web/static/images/emoji/1f634.png b/web/static/images/emoji/1f634.png
new file mode 100644
index 000000000..04ed2ea52
--- /dev/null
+++ b/web/static/images/emoji/1f634.png
Binary files differ
diff --git a/web/static/images/emoji/1f635.png b/web/static/images/emoji/1f635.png
new file mode 100644
index 000000000..a23dc7e31
--- /dev/null
+++ b/web/static/images/emoji/1f635.png
Binary files differ
diff --git a/web/static/images/emoji/1f636.png b/web/static/images/emoji/1f636.png
new file mode 100644
index 000000000..549fff988
--- /dev/null
+++ b/web/static/images/emoji/1f636.png
Binary files differ
diff --git a/web/static/images/emoji/1f637.png b/web/static/images/emoji/1f637.png
new file mode 100644
index 000000000..7110927b8
--- /dev/null
+++ b/web/static/images/emoji/1f637.png
Binary files differ
diff --git a/web/static/images/emoji/1f638.png b/web/static/images/emoji/1f638.png
new file mode 100644
index 000000000..c54e14b53
--- /dev/null
+++ b/web/static/images/emoji/1f638.png
Binary files differ
diff --git a/web/static/images/emoji/1f639.png b/web/static/images/emoji/1f639.png
new file mode 100644
index 000000000..15a2aa0e3
--- /dev/null
+++ b/web/static/images/emoji/1f639.png
Binary files differ
diff --git a/web/static/images/emoji/1f63a.png b/web/static/images/emoji/1f63a.png
new file mode 100644
index 000000000..93872133e
--- /dev/null
+++ b/web/static/images/emoji/1f63a.png
Binary files differ
diff --git a/web/static/images/emoji/1f63b.png b/web/static/images/emoji/1f63b.png
new file mode 100644
index 000000000..7ef231efd
--- /dev/null
+++ b/web/static/images/emoji/1f63b.png
Binary files differ
diff --git a/web/static/images/emoji/1f63c.png b/web/static/images/emoji/1f63c.png
new file mode 100644
index 000000000..6cb9d069d
--- /dev/null
+++ b/web/static/images/emoji/1f63c.png
Binary files differ
diff --git a/web/static/images/emoji/1f63d.png b/web/static/images/emoji/1f63d.png
new file mode 100644
index 000000000..e62592137
--- /dev/null
+++ b/web/static/images/emoji/1f63d.png
Binary files differ
diff --git a/web/static/images/emoji/1f63e.png b/web/static/images/emoji/1f63e.png
new file mode 100644
index 000000000..a001bcfa7
--- /dev/null
+++ b/web/static/images/emoji/1f63e.png
Binary files differ
diff --git a/web/static/images/emoji/1f63f.png b/web/static/images/emoji/1f63f.png
new file mode 100644
index 000000000..c467c2198
--- /dev/null
+++ b/web/static/images/emoji/1f63f.png
Binary files differ
diff --git a/web/static/images/emoji/1f640.png b/web/static/images/emoji/1f640.png
new file mode 100644
index 000000000..a4e67e97d
--- /dev/null
+++ b/web/static/images/emoji/1f640.png
Binary files differ
diff --git a/web/static/images/emoji/1f641.png b/web/static/images/emoji/1f641.png
new file mode 100644
index 000000000..55e16c1cf
--- /dev/null
+++ b/web/static/images/emoji/1f641.png
Binary files differ
diff --git a/web/static/images/emoji/1f642.png b/web/static/images/emoji/1f642.png
new file mode 100644
index 000000000..1bb673b36
--- /dev/null
+++ b/web/static/images/emoji/1f642.png
Binary files differ
diff --git a/web/static/images/emoji/1f645.png b/web/static/images/emoji/1f645.png
new file mode 100644
index 000000000..d7eead9de
--- /dev/null
+++ b/web/static/images/emoji/1f645.png
Binary files differ
diff --git a/web/static/images/emoji/1f646.png b/web/static/images/emoji/1f646.png
new file mode 100644
index 000000000..fcafef225
--- /dev/null
+++ b/web/static/images/emoji/1f646.png
Binary files differ
diff --git a/web/static/images/emoji/1f647.png b/web/static/images/emoji/1f647.png
new file mode 100644
index 000000000..f763bdfe9
--- /dev/null
+++ b/web/static/images/emoji/1f647.png
Binary files differ
diff --git a/web/static/images/emoji/1f648.png b/web/static/images/emoji/1f648.png
new file mode 100644
index 000000000..df1fb6607
--- /dev/null
+++ b/web/static/images/emoji/1f648.png
Binary files differ
diff --git a/web/static/images/emoji/1f649.png b/web/static/images/emoji/1f649.png
new file mode 100644
index 000000000..e909ebf24
--- /dev/null
+++ b/web/static/images/emoji/1f649.png
Binary files differ
diff --git a/web/static/images/emoji/1f64a.png b/web/static/images/emoji/1f64a.png
new file mode 100644
index 000000000..c6f76937f
--- /dev/null
+++ b/web/static/images/emoji/1f64a.png
Binary files differ
diff --git a/web/static/images/emoji/1f64b.png b/web/static/images/emoji/1f64b.png
new file mode 100644
index 000000000..e9d54836a
--- /dev/null
+++ b/web/static/images/emoji/1f64b.png
Binary files differ
diff --git a/web/static/images/emoji/1f64c.png b/web/static/images/emoji/1f64c.png
new file mode 100644
index 000000000..8dbc25f83
--- /dev/null
+++ b/web/static/images/emoji/1f64c.png
Binary files differ
diff --git a/web/static/images/emoji/1f64d.png b/web/static/images/emoji/1f64d.png
new file mode 100644
index 000000000..81dbb96cd
--- /dev/null
+++ b/web/static/images/emoji/1f64d.png
Binary files differ
diff --git a/web/static/images/emoji/1f64e.png b/web/static/images/emoji/1f64e.png
new file mode 100644
index 000000000..466177621
--- /dev/null
+++ b/web/static/images/emoji/1f64e.png
Binary files differ
diff --git a/web/static/images/emoji/1f64f.png b/web/static/images/emoji/1f64f.png
new file mode 100644
index 000000000..47a5f03b2
--- /dev/null
+++ b/web/static/images/emoji/1f64f.png
Binary files differ
diff --git a/web/static/images/emoji/1f680.png b/web/static/images/emoji/1f680.png
new file mode 100644
index 000000000..0ca6d5fed
--- /dev/null
+++ b/web/static/images/emoji/1f680.png
Binary files differ
diff --git a/web/static/images/emoji/1f681.png b/web/static/images/emoji/1f681.png
new file mode 100644
index 000000000..838acddc7
--- /dev/null
+++ b/web/static/images/emoji/1f681.png
Binary files differ
diff --git a/web/static/images/emoji/1f682.png b/web/static/images/emoji/1f682.png
new file mode 100644
index 000000000..f7c52db71
--- /dev/null
+++ b/web/static/images/emoji/1f682.png
Binary files differ
diff --git a/web/static/images/emoji/1f683.png b/web/static/images/emoji/1f683.png
new file mode 100644
index 000000000..82d808866
--- /dev/null
+++ b/web/static/images/emoji/1f683.png
Binary files differ
diff --git a/web/static/images/emoji/1f684.png b/web/static/images/emoji/1f684.png
new file mode 100644
index 000000000..37daa558f
--- /dev/null
+++ b/web/static/images/emoji/1f684.png
Binary files differ
diff --git a/web/static/images/emoji/1f685.png b/web/static/images/emoji/1f685.png
new file mode 100644
index 000000000..14ab9c409
--- /dev/null
+++ b/web/static/images/emoji/1f685.png
Binary files differ
diff --git a/web/static/images/emoji/1f686.png b/web/static/images/emoji/1f686.png
new file mode 100644
index 000000000..22d843302
--- /dev/null
+++ b/web/static/images/emoji/1f686.png
Binary files differ
diff --git a/web/static/images/emoji/1f687.png b/web/static/images/emoji/1f687.png
new file mode 100644
index 000000000..747ab8ad1
--- /dev/null
+++ b/web/static/images/emoji/1f687.png
Binary files differ
diff --git a/web/static/images/emoji/1f688.png b/web/static/images/emoji/1f688.png
new file mode 100644
index 000000000..91cff3edb
--- /dev/null
+++ b/web/static/images/emoji/1f688.png
Binary files differ
diff --git a/web/static/images/emoji/1f689.png b/web/static/images/emoji/1f689.png
new file mode 100644
index 000000000..970d2799d
--- /dev/null
+++ b/web/static/images/emoji/1f689.png
Binary files differ
diff --git a/web/static/images/emoji/1f68a.png b/web/static/images/emoji/1f68a.png
new file mode 100644
index 000000000..851cf1827
--- /dev/null
+++ b/web/static/images/emoji/1f68a.png
Binary files differ
diff --git a/web/static/images/emoji/1f68b.png b/web/static/images/emoji/1f68b.png
new file mode 100644
index 000000000..93d810920
--- /dev/null
+++ b/web/static/images/emoji/1f68b.png
Binary files differ
diff --git a/web/static/images/emoji/1f68c.png b/web/static/images/emoji/1f68c.png
new file mode 100644
index 000000000..b4f9c0c1f
--- /dev/null
+++ b/web/static/images/emoji/1f68c.png
Binary files differ
diff --git a/web/static/images/emoji/1f68d.png b/web/static/images/emoji/1f68d.png
new file mode 100644
index 000000000..bac2d85e3
--- /dev/null
+++ b/web/static/images/emoji/1f68d.png
Binary files differ
diff --git a/web/static/images/emoji/1f68e.png b/web/static/images/emoji/1f68e.png
new file mode 100644
index 000000000..5207d82da
--- /dev/null
+++ b/web/static/images/emoji/1f68e.png
Binary files differ
diff --git a/web/static/images/emoji/1f68f.png b/web/static/images/emoji/1f68f.png
new file mode 100644
index 000000000..3e14a30b6
--- /dev/null
+++ b/web/static/images/emoji/1f68f.png
Binary files differ
diff --git a/web/static/images/emoji/1f690.png b/web/static/images/emoji/1f690.png
new file mode 100644
index 000000000..462d0a348
--- /dev/null
+++ b/web/static/images/emoji/1f690.png
Binary files differ
diff --git a/web/static/images/emoji/1f691.png b/web/static/images/emoji/1f691.png
new file mode 100644
index 000000000..9df138d9c
--- /dev/null
+++ b/web/static/images/emoji/1f691.png
Binary files differ
diff --git a/web/static/images/emoji/1f692.png b/web/static/images/emoji/1f692.png
new file mode 100644
index 000000000..0336bfdf5
--- /dev/null
+++ b/web/static/images/emoji/1f692.png
Binary files differ
diff --git a/web/static/images/emoji/1f693.png b/web/static/images/emoji/1f693.png
new file mode 100644
index 000000000..4281ed3bb
--- /dev/null
+++ b/web/static/images/emoji/1f693.png
Binary files differ
diff --git a/web/static/images/emoji/1f694.png b/web/static/images/emoji/1f694.png
new file mode 100644
index 000000000..2ab9c3302
--- /dev/null
+++ b/web/static/images/emoji/1f694.png
Binary files differ
diff --git a/web/static/images/emoji/1f695.png b/web/static/images/emoji/1f695.png
new file mode 100644
index 000000000..1b9af967a
--- /dev/null
+++ b/web/static/images/emoji/1f695.png
Binary files differ
diff --git a/web/static/images/emoji/1f696.png b/web/static/images/emoji/1f696.png
new file mode 100644
index 000000000..108d49693
--- /dev/null
+++ b/web/static/images/emoji/1f696.png
Binary files differ
diff --git a/web/static/images/emoji/1f697.png b/web/static/images/emoji/1f697.png
new file mode 100644
index 000000000..e266bd21e
--- /dev/null
+++ b/web/static/images/emoji/1f697.png
Binary files differ
diff --git a/web/static/images/emoji/1f698.png b/web/static/images/emoji/1f698.png
new file mode 100644
index 000000000..b9b0dafbf
--- /dev/null
+++ b/web/static/images/emoji/1f698.png
Binary files differ
diff --git a/web/static/images/emoji/1f699.png b/web/static/images/emoji/1f699.png
new file mode 100644
index 000000000..0c2e833ff
--- /dev/null
+++ b/web/static/images/emoji/1f699.png
Binary files differ
diff --git a/web/static/images/emoji/1f69a.png b/web/static/images/emoji/1f69a.png
new file mode 100644
index 000000000..ef99f12fb
--- /dev/null
+++ b/web/static/images/emoji/1f69a.png
Binary files differ
diff --git a/web/static/images/emoji/1f69b.png b/web/static/images/emoji/1f69b.png
new file mode 100644
index 000000000..4447dcfb5
--- /dev/null
+++ b/web/static/images/emoji/1f69b.png
Binary files differ
diff --git a/web/static/images/emoji/1f69c.png b/web/static/images/emoji/1f69c.png
new file mode 100644
index 000000000..fcd4000c5
--- /dev/null
+++ b/web/static/images/emoji/1f69c.png
Binary files differ
diff --git a/web/static/images/emoji/1f69d.png b/web/static/images/emoji/1f69d.png
new file mode 100644
index 000000000..83ba5af45
--- /dev/null
+++ b/web/static/images/emoji/1f69d.png
Binary files differ
diff --git a/web/static/images/emoji/1f69e.png b/web/static/images/emoji/1f69e.png
new file mode 100644
index 000000000..c69df1f8f
--- /dev/null
+++ b/web/static/images/emoji/1f69e.png
Binary files differ
diff --git a/web/static/images/emoji/1f69f.png b/web/static/images/emoji/1f69f.png
new file mode 100644
index 000000000..595e9b160
--- /dev/null
+++ b/web/static/images/emoji/1f69f.png
Binary files differ
diff --git a/web/static/images/emoji/1f6a0.png b/web/static/images/emoji/1f6a0.png
new file mode 100644
index 000000000..6dbd7307e
--- /dev/null
+++ b/web/static/images/emoji/1f6a0.png
Binary files differ
diff --git a/web/static/images/emoji/1f6a1.png b/web/static/images/emoji/1f6a1.png
new file mode 100644
index 000000000..32d56bec7
--- /dev/null
+++ b/web/static/images/emoji/1f6a1.png
Binary files differ
diff --git a/web/static/images/emoji/1f6a2.png b/web/static/images/emoji/1f6a2.png
new file mode 100644
index 000000000..08465890d
--- /dev/null
+++ b/web/static/images/emoji/1f6a2.png
Binary files differ
diff --git a/web/static/images/emoji/1f6a3.png b/web/static/images/emoji/1f6a3.png
new file mode 100644
index 000000000..3a16b632b
--- /dev/null
+++ b/web/static/images/emoji/1f6a3.png
Binary files differ
diff --git a/web/static/images/emoji/1f6a4.png b/web/static/images/emoji/1f6a4.png
new file mode 100644
index 000000000..a6b11a72e
--- /dev/null
+++ b/web/static/images/emoji/1f6a4.png
Binary files differ
diff --git a/web/static/images/emoji/1f6a5.png b/web/static/images/emoji/1f6a5.png
new file mode 100644
index 000000000..0a7704a26
--- /dev/null
+++ b/web/static/images/emoji/1f6a5.png
Binary files differ
diff --git a/web/static/images/emoji/1f6a6.png b/web/static/images/emoji/1f6a6.png
new file mode 100644
index 000000000..e533edda0
--- /dev/null
+++ b/web/static/images/emoji/1f6a6.png
Binary files differ
diff --git a/web/static/images/emoji/1f6a7.png b/web/static/images/emoji/1f6a7.png
new file mode 100644
index 000000000..d29f47b02
--- /dev/null
+++ b/web/static/images/emoji/1f6a7.png
Binary files differ
diff --git a/web/static/images/emoji/1f6a8.png b/web/static/images/emoji/1f6a8.png
new file mode 100644
index 000000000..72095645c
--- /dev/null
+++ b/web/static/images/emoji/1f6a8.png
Binary files differ
diff --git a/web/static/images/emoji/1f6a9.png b/web/static/images/emoji/1f6a9.png
new file mode 100644
index 000000000..89a1429a3
--- /dev/null
+++ b/web/static/images/emoji/1f6a9.png
Binary files differ
diff --git a/web/static/images/emoji/1f6aa.png b/web/static/images/emoji/1f6aa.png
new file mode 100644
index 000000000..4c8695fee
--- /dev/null
+++ b/web/static/images/emoji/1f6aa.png
Binary files differ
diff --git a/web/static/images/emoji/1f6ab.png b/web/static/images/emoji/1f6ab.png
new file mode 100644
index 000000000..6577a1058
--- /dev/null
+++ b/web/static/images/emoji/1f6ab.png
Binary files differ
diff --git a/web/static/images/emoji/1f6ac.png b/web/static/images/emoji/1f6ac.png
new file mode 100644
index 000000000..e8b49b893
--- /dev/null
+++ b/web/static/images/emoji/1f6ac.png
Binary files differ
diff --git a/web/static/images/emoji/1f6ad.png b/web/static/images/emoji/1f6ad.png
new file mode 100644
index 000000000..939a81ae8
--- /dev/null
+++ b/web/static/images/emoji/1f6ad.png
Binary files differ
diff --git a/web/static/images/emoji/1f6ae.png b/web/static/images/emoji/1f6ae.png
new file mode 100644
index 000000000..e1c1deb24
--- /dev/null
+++ b/web/static/images/emoji/1f6ae.png
Binary files differ
diff --git a/web/static/images/emoji/1f6af.png b/web/static/images/emoji/1f6af.png
new file mode 100644
index 000000000..c29f7edf6
--- /dev/null
+++ b/web/static/images/emoji/1f6af.png
Binary files differ
diff --git a/web/static/images/emoji/1f6b0.png b/web/static/images/emoji/1f6b0.png
new file mode 100644
index 000000000..9fd0e87e9
--- /dev/null
+++ b/web/static/images/emoji/1f6b0.png
Binary files differ
diff --git a/web/static/images/emoji/1f6b1.png b/web/static/images/emoji/1f6b1.png
new file mode 100644
index 000000000..34de27d65
--- /dev/null
+++ b/web/static/images/emoji/1f6b1.png
Binary files differ
diff --git a/web/static/images/emoji/1f6b2.png b/web/static/images/emoji/1f6b2.png
new file mode 100644
index 000000000..a37d60207
--- /dev/null
+++ b/web/static/images/emoji/1f6b2.png
Binary files differ
diff --git a/web/static/images/emoji/1f6b3.png b/web/static/images/emoji/1f6b3.png
new file mode 100644
index 000000000..278f1424e
--- /dev/null
+++ b/web/static/images/emoji/1f6b3.png
Binary files differ
diff --git a/web/static/images/emoji/1f6b4.png b/web/static/images/emoji/1f6b4.png
new file mode 100644
index 000000000..15b4c9666
--- /dev/null
+++ b/web/static/images/emoji/1f6b4.png
Binary files differ
diff --git a/web/static/images/emoji/1f6b5.png b/web/static/images/emoji/1f6b5.png
new file mode 100644
index 000000000..d2aa6f821
--- /dev/null
+++ b/web/static/images/emoji/1f6b5.png
Binary files differ
diff --git a/web/static/images/emoji/1f6b6.png b/web/static/images/emoji/1f6b6.png
new file mode 100644
index 000000000..174c4d0e2
--- /dev/null
+++ b/web/static/images/emoji/1f6b6.png
Binary files differ
diff --git a/web/static/images/emoji/1f6b7.png b/web/static/images/emoji/1f6b7.png
new file mode 100644
index 000000000..b015b4eaf
--- /dev/null
+++ b/web/static/images/emoji/1f6b7.png
Binary files differ
diff --git a/web/static/images/emoji/1f6b8.png b/web/static/images/emoji/1f6b8.png
new file mode 100644
index 000000000..56ad0fb15
--- /dev/null
+++ b/web/static/images/emoji/1f6b8.png
Binary files differ
diff --git a/web/static/images/emoji/1f6b9.png b/web/static/images/emoji/1f6b9.png
new file mode 100644
index 000000000..db526a641
--- /dev/null
+++ b/web/static/images/emoji/1f6b9.png
Binary files differ
diff --git a/web/static/images/emoji/1f6ba.png b/web/static/images/emoji/1f6ba.png
new file mode 100644
index 000000000..57a510e34
--- /dev/null
+++ b/web/static/images/emoji/1f6ba.png
Binary files differ
diff --git a/web/static/images/emoji/1f6bb.png b/web/static/images/emoji/1f6bb.png
new file mode 100644
index 000000000..76b3c2833
--- /dev/null
+++ b/web/static/images/emoji/1f6bb.png
Binary files differ
diff --git a/web/static/images/emoji/1f6bc.png b/web/static/images/emoji/1f6bc.png
new file mode 100644
index 000000000..c289fc5e5
--- /dev/null
+++ b/web/static/images/emoji/1f6bc.png
Binary files differ
diff --git a/web/static/images/emoji/1f6bd.png b/web/static/images/emoji/1f6bd.png
new file mode 100644
index 000000000..6cf5255d5
--- /dev/null
+++ b/web/static/images/emoji/1f6bd.png
Binary files differ
diff --git a/web/static/images/emoji/1f6be.png b/web/static/images/emoji/1f6be.png
new file mode 100644
index 000000000..b153f2c2a
--- /dev/null
+++ b/web/static/images/emoji/1f6be.png
Binary files differ
diff --git a/web/static/images/emoji/1f6bf.png b/web/static/images/emoji/1f6bf.png
new file mode 100644
index 000000000..860c4da66
--- /dev/null
+++ b/web/static/images/emoji/1f6bf.png
Binary files differ
diff --git a/web/static/images/emoji/1f6c0.png b/web/static/images/emoji/1f6c0.png
new file mode 100644
index 000000000..faca8ba79
--- /dev/null
+++ b/web/static/images/emoji/1f6c0.png
Binary files differ
diff --git a/web/static/images/emoji/1f6c1.png b/web/static/images/emoji/1f6c1.png
new file mode 100644
index 000000000..86b2a2629
--- /dev/null
+++ b/web/static/images/emoji/1f6c1.png
Binary files differ
diff --git a/web/static/images/emoji/1f6c2.png b/web/static/images/emoji/1f6c2.png
new file mode 100644
index 000000000..51359c754
--- /dev/null
+++ b/web/static/images/emoji/1f6c2.png
Binary files differ
diff --git a/web/static/images/emoji/1f6c3.png b/web/static/images/emoji/1f6c3.png
new file mode 100644
index 000000000..8c6811ce7
--- /dev/null
+++ b/web/static/images/emoji/1f6c3.png
Binary files differ
diff --git a/web/static/images/emoji/1f6c4.png b/web/static/images/emoji/1f6c4.png
new file mode 100644
index 000000000..3c6c63aff
--- /dev/null
+++ b/web/static/images/emoji/1f6c4.png
Binary files differ
diff --git a/web/static/images/emoji/1f6c5.png b/web/static/images/emoji/1f6c5.png
new file mode 100644
index 000000000..b39b9075f
--- /dev/null
+++ b/web/static/images/emoji/1f6c5.png
Binary files differ
diff --git a/web/static/images/emoji/1f6c6.png b/web/static/images/emoji/1f6c6.png
new file mode 100644
index 000000000..4f3048f3b
--- /dev/null
+++ b/web/static/images/emoji/1f6c6.png
Binary files differ
diff --git a/web/static/images/emoji/1f6c7.png b/web/static/images/emoji/1f6c7.png
new file mode 100644
index 000000000..ab45c0d19
--- /dev/null
+++ b/web/static/images/emoji/1f6c7.png
Binary files differ
diff --git a/web/static/images/emoji/1f6c8.png b/web/static/images/emoji/1f6c8.png
new file mode 100644
index 000000000..1adec5678
--- /dev/null
+++ b/web/static/images/emoji/1f6c8.png
Binary files differ
diff --git a/web/static/images/emoji/1f6c9.png b/web/static/images/emoji/1f6c9.png
new file mode 100644
index 000000000..ce9578948
--- /dev/null
+++ b/web/static/images/emoji/1f6c9.png
Binary files differ
diff --git a/web/static/images/emoji/1f6ca.png b/web/static/images/emoji/1f6ca.png
new file mode 100644
index 000000000..b8836a8ad
--- /dev/null
+++ b/web/static/images/emoji/1f6ca.png
Binary files differ
diff --git a/web/static/images/emoji/1f6cb.png b/web/static/images/emoji/1f6cb.png
new file mode 100644
index 000000000..fe7473eef
--- /dev/null
+++ b/web/static/images/emoji/1f6cb.png
Binary files differ
diff --git a/web/static/images/emoji/1f6cc.png b/web/static/images/emoji/1f6cc.png
new file mode 100644
index 000000000..4d232c9bb
--- /dev/null
+++ b/web/static/images/emoji/1f6cc.png
Binary files differ
diff --git a/web/static/images/emoji/1f6cd.png b/web/static/images/emoji/1f6cd.png
new file mode 100644
index 000000000..c4aa0049c
--- /dev/null
+++ b/web/static/images/emoji/1f6cd.png
Binary files differ
diff --git a/web/static/images/emoji/1f6ce.png b/web/static/images/emoji/1f6ce.png
new file mode 100644
index 000000000..5eb060df1
--- /dev/null
+++ b/web/static/images/emoji/1f6ce.png
Binary files differ
diff --git a/web/static/images/emoji/1f6cf.png b/web/static/images/emoji/1f6cf.png
new file mode 100644
index 000000000..2b23803bc
--- /dev/null
+++ b/web/static/images/emoji/1f6cf.png
Binary files differ
diff --git a/web/static/images/emoji/1f6e0.png b/web/static/images/emoji/1f6e0.png
new file mode 100644
index 000000000..eeea685b4
--- /dev/null
+++ b/web/static/images/emoji/1f6e0.png
Binary files differ
diff --git a/web/static/images/emoji/1f6e1.png b/web/static/images/emoji/1f6e1.png
new file mode 100644
index 000000000..30a63a8bf
--- /dev/null
+++ b/web/static/images/emoji/1f6e1.png
Binary files differ
diff --git a/web/static/images/emoji/1f6e2.png b/web/static/images/emoji/1f6e2.png
new file mode 100644
index 000000000..e7e597a98
--- /dev/null
+++ b/web/static/images/emoji/1f6e2.png
Binary files differ
diff --git a/web/static/images/emoji/1f6e3.png b/web/static/images/emoji/1f6e3.png
new file mode 100644
index 000000000..c7f7a5d48
--- /dev/null
+++ b/web/static/images/emoji/1f6e3.png
Binary files differ
diff --git a/web/static/images/emoji/1f6e4.png b/web/static/images/emoji/1f6e4.png
new file mode 100644
index 000000000..322831040
--- /dev/null
+++ b/web/static/images/emoji/1f6e4.png
Binary files differ
diff --git a/web/static/images/emoji/1f6e5.png b/web/static/images/emoji/1f6e5.png
new file mode 100644
index 000000000..1e720f431
--- /dev/null
+++ b/web/static/images/emoji/1f6e5.png
Binary files differ
diff --git a/web/static/images/emoji/1f6e6.png b/web/static/images/emoji/1f6e6.png
new file mode 100644
index 000000000..8b91ccced
--- /dev/null
+++ b/web/static/images/emoji/1f6e6.png
Binary files differ
diff --git a/web/static/images/emoji/1f6e7.png b/web/static/images/emoji/1f6e7.png
new file mode 100644
index 000000000..a5f67a8a4
--- /dev/null
+++ b/web/static/images/emoji/1f6e7.png
Binary files differ
diff --git a/web/static/images/emoji/1f6e8.png b/web/static/images/emoji/1f6e8.png
new file mode 100644
index 000000000..85afe1f2a
--- /dev/null
+++ b/web/static/images/emoji/1f6e8.png
Binary files differ
diff --git a/web/static/images/emoji/1f6e9.png b/web/static/images/emoji/1f6e9.png
new file mode 100644
index 000000000..bd369a205
--- /dev/null
+++ b/web/static/images/emoji/1f6e9.png
Binary files differ
diff --git a/web/static/images/emoji/1f6ea.png b/web/static/images/emoji/1f6ea.png
new file mode 100644
index 000000000..93456c816
--- /dev/null
+++ b/web/static/images/emoji/1f6ea.png
Binary files differ
diff --git a/web/static/images/emoji/1f6eb.png b/web/static/images/emoji/1f6eb.png
new file mode 100644
index 000000000..9b0f017be
--- /dev/null
+++ b/web/static/images/emoji/1f6eb.png
Binary files differ
diff --git a/web/static/images/emoji/1f6ec.png b/web/static/images/emoji/1f6ec.png
new file mode 100644
index 000000000..4d754bf59
--- /dev/null
+++ b/web/static/images/emoji/1f6ec.png
Binary files differ
diff --git a/web/static/images/emoji/1f6f0.png b/web/static/images/emoji/1f6f0.png
new file mode 100644
index 000000000..52eec7627
--- /dev/null
+++ b/web/static/images/emoji/1f6f0.png
Binary files differ
diff --git a/web/static/images/emoji/1f6f1.png b/web/static/images/emoji/1f6f1.png
new file mode 100644
index 000000000..39cb17c82
--- /dev/null
+++ b/web/static/images/emoji/1f6f1.png
Binary files differ
diff --git a/web/static/images/emoji/1f6f2.png b/web/static/images/emoji/1f6f2.png
new file mode 100644
index 000000000..97066ea6e
--- /dev/null
+++ b/web/static/images/emoji/1f6f2.png
Binary files differ
diff --git a/web/static/images/emoji/1f6f3.png b/web/static/images/emoji/1f6f3.png
new file mode 100644
index 000000000..512cb1200
--- /dev/null
+++ b/web/static/images/emoji/1f6f3.png
Binary files differ
diff --git a/web/static/images/emoji/203c.png b/web/static/images/emoji/203c.png
new file mode 100644
index 000000000..ab85c1d06
--- /dev/null
+++ b/web/static/images/emoji/203c.png
Binary files differ
diff --git a/web/static/images/emoji/2049.png b/web/static/images/emoji/2049.png
new file mode 100644
index 000000000..a8e1ec2a9
--- /dev/null
+++ b/web/static/images/emoji/2049.png
Binary files differ
diff --git a/web/static/images/emoji/2122.png b/web/static/images/emoji/2122.png
new file mode 100644
index 000000000..0ddad3d83
--- /dev/null
+++ b/web/static/images/emoji/2122.png
Binary files differ
diff --git a/web/static/images/emoji/2139.png b/web/static/images/emoji/2139.png
new file mode 100644
index 000000000..68059c871
--- /dev/null
+++ b/web/static/images/emoji/2139.png
Binary files differ
diff --git a/web/static/images/emoji/2194.png b/web/static/images/emoji/2194.png
new file mode 100644
index 000000000..9e5e99c58
--- /dev/null
+++ b/web/static/images/emoji/2194.png
Binary files differ
diff --git a/web/static/images/emoji/2195.png b/web/static/images/emoji/2195.png
new file mode 100644
index 000000000..bb668b036
--- /dev/null
+++ b/web/static/images/emoji/2195.png
Binary files differ
diff --git a/web/static/images/emoji/2196.png b/web/static/images/emoji/2196.png
new file mode 100644
index 000000000..5a75e42ba
--- /dev/null
+++ b/web/static/images/emoji/2196.png
Binary files differ
diff --git a/web/static/images/emoji/2197.png b/web/static/images/emoji/2197.png
new file mode 100644
index 000000000..267322593
--- /dev/null
+++ b/web/static/images/emoji/2197.png
Binary files differ
diff --git a/web/static/images/emoji/2198.png b/web/static/images/emoji/2198.png
new file mode 100644
index 000000000..4e7757c23
--- /dev/null
+++ b/web/static/images/emoji/2198.png
Binary files differ
diff --git a/web/static/images/emoji/2199.png b/web/static/images/emoji/2199.png
new file mode 100644
index 000000000..c5b1a2f7a
--- /dev/null
+++ b/web/static/images/emoji/2199.png
Binary files differ
diff --git a/web/static/images/emoji/21a9.png b/web/static/images/emoji/21a9.png
new file mode 100644
index 000000000..a9358a56e
--- /dev/null
+++ b/web/static/images/emoji/21a9.png
Binary files differ
diff --git a/web/static/images/emoji/21aa.png b/web/static/images/emoji/21aa.png
new file mode 100644
index 000000000..0512301c9
--- /dev/null
+++ b/web/static/images/emoji/21aa.png
Binary files differ
diff --git a/web/static/images/emoji/231a.png b/web/static/images/emoji/231a.png
new file mode 100644
index 000000000..50f16588a
--- /dev/null
+++ b/web/static/images/emoji/231a.png
Binary files differ
diff --git a/web/static/images/emoji/231b.png b/web/static/images/emoji/231b.png
new file mode 100644
index 000000000..06799f8c5
--- /dev/null
+++ b/web/static/images/emoji/231b.png
Binary files differ
diff --git a/web/static/images/emoji/23e9.png b/web/static/images/emoji/23e9.png
new file mode 100644
index 000000000..dda9bec2a
--- /dev/null
+++ b/web/static/images/emoji/23e9.png
Binary files differ
diff --git a/web/static/images/emoji/23ea.png b/web/static/images/emoji/23ea.png
new file mode 100644
index 000000000..cd693f938
--- /dev/null
+++ b/web/static/images/emoji/23ea.png
Binary files differ
diff --git a/web/static/images/emoji/23eb.png b/web/static/images/emoji/23eb.png
new file mode 100644
index 000000000..0878d9436
--- /dev/null
+++ b/web/static/images/emoji/23eb.png
Binary files differ
diff --git a/web/static/images/emoji/23ec.png b/web/static/images/emoji/23ec.png
new file mode 100644
index 000000000..698156f8d
--- /dev/null
+++ b/web/static/images/emoji/23ec.png
Binary files differ
diff --git a/web/static/images/emoji/23f0.png b/web/static/images/emoji/23f0.png
new file mode 100644
index 000000000..3f466f3a7
--- /dev/null
+++ b/web/static/images/emoji/23f0.png
Binary files differ
diff --git a/web/static/images/emoji/23f3.png b/web/static/images/emoji/23f3.png
new file mode 100644
index 000000000..bb0bbd8f7
--- /dev/null
+++ b/web/static/images/emoji/23f3.png
Binary files differ
diff --git a/web/static/images/emoji/24c2.png b/web/static/images/emoji/24c2.png
new file mode 100644
index 000000000..7de289795
--- /dev/null
+++ b/web/static/images/emoji/24c2.png
Binary files differ
diff --git a/web/static/images/emoji/25aa.png b/web/static/images/emoji/25aa.png
new file mode 100644
index 000000000..5a5559241
--- /dev/null
+++ b/web/static/images/emoji/25aa.png
Binary files differ
diff --git a/web/static/images/emoji/25ab.png b/web/static/images/emoji/25ab.png
new file mode 100644
index 000000000..5b115d325
--- /dev/null
+++ b/web/static/images/emoji/25ab.png
Binary files differ
diff --git a/web/static/images/emoji/25b6.png b/web/static/images/emoji/25b6.png
new file mode 100644
index 000000000..cbc672c1e
--- /dev/null
+++ b/web/static/images/emoji/25b6.png
Binary files differ
diff --git a/web/static/images/emoji/25c0.png b/web/static/images/emoji/25c0.png
new file mode 100644
index 000000000..66b208dd9
--- /dev/null
+++ b/web/static/images/emoji/25c0.png
Binary files differ
diff --git a/web/static/images/emoji/25fb.png b/web/static/images/emoji/25fb.png
new file mode 100644
index 000000000..f3c39550f
--- /dev/null
+++ b/web/static/images/emoji/25fb.png
Binary files differ
diff --git a/web/static/images/emoji/25fc.png b/web/static/images/emoji/25fc.png
new file mode 100644
index 000000000..0250c07f4
--- /dev/null
+++ b/web/static/images/emoji/25fc.png
Binary files differ
diff --git a/web/static/images/emoji/25fd.png b/web/static/images/emoji/25fd.png
new file mode 100644
index 000000000..7a34786e8
--- /dev/null
+++ b/web/static/images/emoji/25fd.png
Binary files differ
diff --git a/web/static/images/emoji/25fe.png b/web/static/images/emoji/25fe.png
new file mode 100644
index 000000000..6dd0df1c9
--- /dev/null
+++ b/web/static/images/emoji/25fe.png
Binary files differ
diff --git a/web/static/images/emoji/2600.png b/web/static/images/emoji/2600.png
new file mode 100644
index 000000000..d4f88fb8b
--- /dev/null
+++ b/web/static/images/emoji/2600.png
Binary files differ
diff --git a/web/static/images/emoji/2601.png b/web/static/images/emoji/2601.png
new file mode 100644
index 000000000..559c52f76
--- /dev/null
+++ b/web/static/images/emoji/2601.png
Binary files differ
diff --git a/web/static/images/emoji/260e.png b/web/static/images/emoji/260e.png
new file mode 100644
index 000000000..6a14f1bfe
--- /dev/null
+++ b/web/static/images/emoji/260e.png
Binary files differ
diff --git a/web/static/images/emoji/2611.png b/web/static/images/emoji/2611.png
new file mode 100644
index 000000000..e9826b1db
--- /dev/null
+++ b/web/static/images/emoji/2611.png
Binary files differ
diff --git a/web/static/images/emoji/2614.png b/web/static/images/emoji/2614.png
new file mode 100644
index 000000000..83672dd6c
--- /dev/null
+++ b/web/static/images/emoji/2614.png
Binary files differ
diff --git a/web/static/images/emoji/2615.png b/web/static/images/emoji/2615.png
new file mode 100644
index 000000000..109505f51
--- /dev/null
+++ b/web/static/images/emoji/2615.png
Binary files differ
diff --git a/web/static/images/emoji/261d.png b/web/static/images/emoji/261d.png
new file mode 100644
index 000000000..387fe59e2
--- /dev/null
+++ b/web/static/images/emoji/261d.png
Binary files differ
diff --git a/web/static/images/emoji/263a.png b/web/static/images/emoji/263a.png
new file mode 100644
index 000000000..ea6e93a65
--- /dev/null
+++ b/web/static/images/emoji/263a.png
Binary files differ
diff --git a/web/static/images/emoji/2648.png b/web/static/images/emoji/2648.png
new file mode 100644
index 000000000..8c26a2400
--- /dev/null
+++ b/web/static/images/emoji/2648.png
Binary files differ
diff --git a/web/static/images/emoji/2649.png b/web/static/images/emoji/2649.png
new file mode 100644
index 000000000..3d3434ccf
--- /dev/null
+++ b/web/static/images/emoji/2649.png
Binary files differ
diff --git a/web/static/images/emoji/264a.png b/web/static/images/emoji/264a.png
new file mode 100644
index 000000000..3d34ba7ca
--- /dev/null
+++ b/web/static/images/emoji/264a.png
Binary files differ
diff --git a/web/static/images/emoji/264b.png b/web/static/images/emoji/264b.png
new file mode 100644
index 000000000..6375eabb5
--- /dev/null
+++ b/web/static/images/emoji/264b.png
Binary files differ
diff --git a/web/static/images/emoji/264c.png b/web/static/images/emoji/264c.png
new file mode 100644
index 000000000..2290f822a
--- /dev/null
+++ b/web/static/images/emoji/264c.png
Binary files differ
diff --git a/web/static/images/emoji/264d.png b/web/static/images/emoji/264d.png
new file mode 100644
index 000000000..238424313
--- /dev/null
+++ b/web/static/images/emoji/264d.png
Binary files differ
diff --git a/web/static/images/emoji/264e.png b/web/static/images/emoji/264e.png
new file mode 100644
index 000000000..3f3c33443
--- /dev/null
+++ b/web/static/images/emoji/264e.png
Binary files differ
diff --git a/web/static/images/emoji/264f.png b/web/static/images/emoji/264f.png
new file mode 100644
index 000000000..f903e7665
--- /dev/null
+++ b/web/static/images/emoji/264f.png
Binary files differ
diff --git a/web/static/images/emoji/2650.png b/web/static/images/emoji/2650.png
new file mode 100644
index 000000000..b5d55c10f
--- /dev/null
+++ b/web/static/images/emoji/2650.png
Binary files differ
diff --git a/web/static/images/emoji/2651.png b/web/static/images/emoji/2651.png
new file mode 100644
index 000000000..255ac3183
--- /dev/null
+++ b/web/static/images/emoji/2651.png
Binary files differ
diff --git a/web/static/images/emoji/2652.png b/web/static/images/emoji/2652.png
new file mode 100644
index 000000000..2e645c9e3
--- /dev/null
+++ b/web/static/images/emoji/2652.png
Binary files differ
diff --git a/web/static/images/emoji/2653.png b/web/static/images/emoji/2653.png
new file mode 100644
index 000000000..939b88e60
--- /dev/null
+++ b/web/static/images/emoji/2653.png
Binary files differ
diff --git a/web/static/images/emoji/2660.png b/web/static/images/emoji/2660.png
new file mode 100644
index 000000000..1cb4bea46
--- /dev/null
+++ b/web/static/images/emoji/2660.png
Binary files differ
diff --git a/web/static/images/emoji/2663.png b/web/static/images/emoji/2663.png
new file mode 100644
index 000000000..307231d98
--- /dev/null
+++ b/web/static/images/emoji/2663.png
Binary files differ
diff --git a/web/static/images/emoji/2665.png b/web/static/images/emoji/2665.png
new file mode 100644
index 000000000..994a062cc
--- /dev/null
+++ b/web/static/images/emoji/2665.png
Binary files differ
diff --git a/web/static/images/emoji/2666.png b/web/static/images/emoji/2666.png
new file mode 100644
index 000000000..3e153dbe8
--- /dev/null
+++ b/web/static/images/emoji/2666.png
Binary files differ
diff --git a/web/static/images/emoji/2668.png b/web/static/images/emoji/2668.png
new file mode 100644
index 000000000..dbe158292
--- /dev/null
+++ b/web/static/images/emoji/2668.png
Binary files differ
diff --git a/web/static/images/emoji/267b.png b/web/static/images/emoji/267b.png
new file mode 100644
index 000000000..181391e86
--- /dev/null
+++ b/web/static/images/emoji/267b.png
Binary files differ
diff --git a/web/static/images/emoji/267f.png b/web/static/images/emoji/267f.png
new file mode 100644
index 000000000..638696ca9
--- /dev/null
+++ b/web/static/images/emoji/267f.png
Binary files differ
diff --git a/web/static/images/emoji/2693.png b/web/static/images/emoji/2693.png
new file mode 100644
index 000000000..f2a8200f0
--- /dev/null
+++ b/web/static/images/emoji/2693.png
Binary files differ
diff --git a/web/static/images/emoji/26a0.png b/web/static/images/emoji/26a0.png
new file mode 100644
index 000000000..8a5dd577a
--- /dev/null
+++ b/web/static/images/emoji/26a0.png
Binary files differ
diff --git a/web/static/images/emoji/26a1.png b/web/static/images/emoji/26a1.png
new file mode 100644
index 000000000..96ec4dccb
--- /dev/null
+++ b/web/static/images/emoji/26a1.png
Binary files differ
diff --git a/web/static/images/emoji/26aa.png b/web/static/images/emoji/26aa.png
new file mode 100644
index 000000000..84e8a43a2
--- /dev/null
+++ b/web/static/images/emoji/26aa.png
Binary files differ
diff --git a/web/static/images/emoji/26ab.png b/web/static/images/emoji/26ab.png
new file mode 100644
index 000000000..a9f021517
--- /dev/null
+++ b/web/static/images/emoji/26ab.png
Binary files differ
diff --git a/web/static/images/emoji/26bd.png b/web/static/images/emoji/26bd.png
new file mode 100644
index 000000000..a5b188cef
--- /dev/null
+++ b/web/static/images/emoji/26bd.png
Binary files differ
diff --git a/web/static/images/emoji/26be.png b/web/static/images/emoji/26be.png
new file mode 100644
index 000000000..4ba7a75a6
--- /dev/null
+++ b/web/static/images/emoji/26be.png
Binary files differ
diff --git a/web/static/images/emoji/26c4.png b/web/static/images/emoji/26c4.png
new file mode 100644
index 000000000..5cfd23ec0
--- /dev/null
+++ b/web/static/images/emoji/26c4.png
Binary files differ
diff --git a/web/static/images/emoji/26c5.png b/web/static/images/emoji/26c5.png
new file mode 100644
index 000000000..a5c8d31b8
--- /dev/null
+++ b/web/static/images/emoji/26c5.png
Binary files differ
diff --git a/web/static/images/emoji/26ce.png b/web/static/images/emoji/26ce.png
new file mode 100644
index 000000000..600ad3a3c
--- /dev/null
+++ b/web/static/images/emoji/26ce.png
Binary files differ
diff --git a/web/static/images/emoji/26d4.png b/web/static/images/emoji/26d4.png
new file mode 100644
index 000000000..aca2edaa7
--- /dev/null
+++ b/web/static/images/emoji/26d4.png
Binary files differ
diff --git a/web/static/images/emoji/26ea.png b/web/static/images/emoji/26ea.png
new file mode 100644
index 000000000..e1f25e25a
--- /dev/null
+++ b/web/static/images/emoji/26ea.png
Binary files differ
diff --git a/web/static/images/emoji/26f2.png b/web/static/images/emoji/26f2.png
new file mode 100644
index 000000000..465d2a127
--- /dev/null
+++ b/web/static/images/emoji/26f2.png
Binary files differ
diff --git a/web/static/images/emoji/26f3.png b/web/static/images/emoji/26f3.png
new file mode 100644
index 000000000..c03f80917
--- /dev/null
+++ b/web/static/images/emoji/26f3.png
Binary files differ
diff --git a/web/static/images/emoji/26f5.png b/web/static/images/emoji/26f5.png
new file mode 100644
index 000000000..9e862f831
--- /dev/null
+++ b/web/static/images/emoji/26f5.png
Binary files differ
diff --git a/web/static/images/emoji/26fa.png b/web/static/images/emoji/26fa.png
new file mode 100644
index 000000000..db3101b4a
--- /dev/null
+++ b/web/static/images/emoji/26fa.png
Binary files differ
diff --git a/web/static/images/emoji/26fd.png b/web/static/images/emoji/26fd.png
new file mode 100644
index 000000000..db5b15c89
--- /dev/null
+++ b/web/static/images/emoji/26fd.png
Binary files differ
diff --git a/web/static/images/emoji/2702.png b/web/static/images/emoji/2702.png
new file mode 100644
index 000000000..0a2d1b07f
--- /dev/null
+++ b/web/static/images/emoji/2702.png
Binary files differ
diff --git a/web/static/images/emoji/2705.png b/web/static/images/emoji/2705.png
new file mode 100644
index 000000000..241a4f6f9
--- /dev/null
+++ b/web/static/images/emoji/2705.png
Binary files differ
diff --git a/web/static/images/emoji/2708.png b/web/static/images/emoji/2708.png
new file mode 100644
index 000000000..bf1786717
--- /dev/null
+++ b/web/static/images/emoji/2708.png
Binary files differ
diff --git a/web/static/images/emoji/2709.png b/web/static/images/emoji/2709.png
new file mode 100644
index 000000000..c0bb4ebfd
--- /dev/null
+++ b/web/static/images/emoji/2709.png
Binary files differ
diff --git a/web/static/images/emoji/270a.png b/web/static/images/emoji/270a.png
new file mode 100644
index 000000000..97e5b0639
--- /dev/null
+++ b/web/static/images/emoji/270a.png
Binary files differ
diff --git a/web/static/images/emoji/270b.png b/web/static/images/emoji/270b.png
new file mode 100644
index 000000000..89de966a3
--- /dev/null
+++ b/web/static/images/emoji/270b.png
Binary files differ
diff --git a/web/static/images/emoji/270c.png b/web/static/images/emoji/270c.png
new file mode 100644
index 000000000..0b7aa52d1
--- /dev/null
+++ b/web/static/images/emoji/270c.png
Binary files differ
diff --git a/web/static/images/emoji/270f.png b/web/static/images/emoji/270f.png
new file mode 100644
index 000000000..693ee8429
--- /dev/null
+++ b/web/static/images/emoji/270f.png
Binary files differ
diff --git a/web/static/images/emoji/2712.png b/web/static/images/emoji/2712.png
new file mode 100644
index 000000000..6f1a76cde
--- /dev/null
+++ b/web/static/images/emoji/2712.png
Binary files differ
diff --git a/web/static/images/emoji/2714.png b/web/static/images/emoji/2714.png
new file mode 100644
index 000000000..239ea09ee
--- /dev/null
+++ b/web/static/images/emoji/2714.png
Binary files differ
diff --git a/web/static/images/emoji/2716.png b/web/static/images/emoji/2716.png
new file mode 100644
index 000000000..a75fd57e0
--- /dev/null
+++ b/web/static/images/emoji/2716.png
Binary files differ
diff --git a/web/static/images/emoji/2728.png b/web/static/images/emoji/2728.png
new file mode 100644
index 000000000..f7faa7270
--- /dev/null
+++ b/web/static/images/emoji/2728.png
Binary files differ
diff --git a/web/static/images/emoji/2733.png b/web/static/images/emoji/2733.png
new file mode 100644
index 000000000..aaa681d4f
--- /dev/null
+++ b/web/static/images/emoji/2733.png
Binary files differ
diff --git a/web/static/images/emoji/2734.png b/web/static/images/emoji/2734.png
new file mode 100644
index 000000000..ea1ba7edb
--- /dev/null
+++ b/web/static/images/emoji/2734.png
Binary files differ
diff --git a/web/static/images/emoji/2744.png b/web/static/images/emoji/2744.png
new file mode 100644
index 000000000..743b9fd98
--- /dev/null
+++ b/web/static/images/emoji/2744.png
Binary files differ
diff --git a/web/static/images/emoji/2747.png b/web/static/images/emoji/2747.png
new file mode 100644
index 000000000..cb37090c7
--- /dev/null
+++ b/web/static/images/emoji/2747.png
Binary files differ
diff --git a/web/static/images/emoji/274c.png b/web/static/images/emoji/274c.png
new file mode 100644
index 000000000..18de93090
--- /dev/null
+++ b/web/static/images/emoji/274c.png
Binary files differ
diff --git a/web/static/images/emoji/274e.png b/web/static/images/emoji/274e.png
new file mode 100644
index 000000000..90ca18394
--- /dev/null
+++ b/web/static/images/emoji/274e.png
Binary files differ
diff --git a/web/static/images/emoji/2753.png b/web/static/images/emoji/2753.png
new file mode 100644
index 000000000..9e84758ee
--- /dev/null
+++ b/web/static/images/emoji/2753.png
Binary files differ
diff --git a/web/static/images/emoji/2754.png b/web/static/images/emoji/2754.png
new file mode 100644
index 000000000..7808b13e3
--- /dev/null
+++ b/web/static/images/emoji/2754.png
Binary files differ
diff --git a/web/static/images/emoji/2755.png b/web/static/images/emoji/2755.png
new file mode 100644
index 000000000..759d6e7f7
--- /dev/null
+++ b/web/static/images/emoji/2755.png
Binary files differ
diff --git a/web/static/images/emoji/2757.png b/web/static/images/emoji/2757.png
new file mode 100644
index 000000000..b8fca78bc
--- /dev/null
+++ b/web/static/images/emoji/2757.png
Binary files differ
diff --git a/web/static/images/emoji/2764.png b/web/static/images/emoji/2764.png
new file mode 100644
index 000000000..af35e2223
--- /dev/null
+++ b/web/static/images/emoji/2764.png
Binary files differ
diff --git a/web/static/images/emoji/2795.png b/web/static/images/emoji/2795.png
new file mode 100644
index 000000000..198cde00e
--- /dev/null
+++ b/web/static/images/emoji/2795.png
Binary files differ
diff --git a/web/static/images/emoji/2796.png b/web/static/images/emoji/2796.png
new file mode 100644
index 000000000..60195e0d4
--- /dev/null
+++ b/web/static/images/emoji/2796.png
Binary files differ
diff --git a/web/static/images/emoji/2797.png b/web/static/images/emoji/2797.png
new file mode 100644
index 000000000..b883d27f5
--- /dev/null
+++ b/web/static/images/emoji/2797.png
Binary files differ
diff --git a/web/static/images/emoji/27a1.png b/web/static/images/emoji/27a1.png
new file mode 100644
index 000000000..67ab92488
--- /dev/null
+++ b/web/static/images/emoji/27a1.png
Binary files differ
diff --git a/web/static/images/emoji/27b0.png b/web/static/images/emoji/27b0.png
new file mode 100644
index 000000000..1c7b496c5
--- /dev/null
+++ b/web/static/images/emoji/27b0.png
Binary files differ
diff --git a/web/static/images/emoji/27bf.png b/web/static/images/emoji/27bf.png
new file mode 100644
index 000000000..a9b9248ba
--- /dev/null
+++ b/web/static/images/emoji/27bf.png
Binary files differ
diff --git a/web/static/images/emoji/2934.png b/web/static/images/emoji/2934.png
new file mode 100644
index 000000000..b6c5b0610
--- /dev/null
+++ b/web/static/images/emoji/2934.png
Binary files differ
diff --git a/web/static/images/emoji/2935.png b/web/static/images/emoji/2935.png
new file mode 100644
index 000000000..79234629f
--- /dev/null
+++ b/web/static/images/emoji/2935.png
Binary files differ
diff --git a/web/static/images/emoji/2b05.png b/web/static/images/emoji/2b05.png
new file mode 100644
index 000000000..58a76a59c
--- /dev/null
+++ b/web/static/images/emoji/2b05.png
Binary files differ
diff --git a/web/static/images/emoji/2b06.png b/web/static/images/emoji/2b06.png
new file mode 100644
index 000000000..d50437a6a
--- /dev/null
+++ b/web/static/images/emoji/2b06.png
Binary files differ
diff --git a/web/static/images/emoji/2b07.png b/web/static/images/emoji/2b07.png
new file mode 100644
index 000000000..cf9664792
--- /dev/null
+++ b/web/static/images/emoji/2b07.png
Binary files differ
diff --git a/web/static/images/emoji/2b1b.png b/web/static/images/emoji/2b1b.png
new file mode 100644
index 000000000..a8ca8cb81
--- /dev/null
+++ b/web/static/images/emoji/2b1b.png
Binary files differ
diff --git a/web/static/images/emoji/2b1c.png b/web/static/images/emoji/2b1c.png
new file mode 100644
index 000000000..2f6071f06
--- /dev/null
+++ b/web/static/images/emoji/2b1c.png
Binary files differ
diff --git a/web/static/images/emoji/2b50.png b/web/static/images/emoji/2b50.png
new file mode 100644
index 000000000..00f6758a2
--- /dev/null
+++ b/web/static/images/emoji/2b50.png
Binary files differ
diff --git a/web/static/images/emoji/2b55.png b/web/static/images/emoji/2b55.png
new file mode 100644
index 000000000..f141dc452
--- /dev/null
+++ b/web/static/images/emoji/2b55.png
Binary files differ
diff --git a/web/static/images/emoji/3030.png b/web/static/images/emoji/3030.png
new file mode 100644
index 000000000..3b346827b
--- /dev/null
+++ b/web/static/images/emoji/3030.png
Binary files differ
diff --git a/web/static/images/emoji/303d.png b/web/static/images/emoji/303d.png
new file mode 100644
index 000000000..d39063ed9
--- /dev/null
+++ b/web/static/images/emoji/303d.png
Binary files differ
diff --git a/web/static/images/emoji/3297.png b/web/static/images/emoji/3297.png
new file mode 100644
index 000000000..b3ffe6fe4
--- /dev/null
+++ b/web/static/images/emoji/3297.png
Binary files differ
diff --git a/web/static/images/emoji/3299.png b/web/static/images/emoji/3299.png
new file mode 100644
index 000000000..5ff746bec
--- /dev/null
+++ b/web/static/images/emoji/3299.png
Binary files differ
diff --git a/web/static/images/emoji/8ball.png b/web/static/images/emoji/8ball.png
index c2c710d45..7bf80b6d7 100755..100644
--- a/web/static/images/emoji/8ball.png
+++ b/web/static/images/emoji/8ball.png
Binary files differ
diff --git a/web/static/images/emoji/a.png b/web/static/images/emoji/a.png
index 09ff6d6f1..7b1f9663c 100755..100644
--- a/web/static/images/emoji/a.png
+++ b/web/static/images/emoji/a.png
Binary files differ
diff --git a/web/static/images/emoji/ab.png b/web/static/images/emoji/ab.png
index 2a5222047..386ec09fe 100755..100644
--- a/web/static/images/emoji/ab.png
+++ b/web/static/images/emoji/ab.png
Binary files differ
diff --git a/web/static/images/emoji/abc.png b/web/static/images/emoji/abc.png
index 505d40a15..51dc1bf76 100755..100644
--- a/web/static/images/emoji/abc.png
+++ b/web/static/images/emoji/abc.png
Binary files differ
diff --git a/web/static/images/emoji/abcd.png b/web/static/images/emoji/abcd.png
index 5218470b6..a79d4311d 100755..100644
--- a/web/static/images/emoji/abcd.png
+++ b/web/static/images/emoji/abcd.png
Binary files differ
diff --git a/web/static/images/emoji/accept.png b/web/static/images/emoji/accept.png
index 2d2009031..10cf9e29a 100755..100644
--- a/web/static/images/emoji/accept.png
+++ b/web/static/images/emoji/accept.png
Binary files differ
diff --git a/web/static/images/emoji/admission_tickets.png b/web/static/images/emoji/admission_tickets.png
new file mode 100644
index 000000000..e12819269
--- /dev/null
+++ b/web/static/images/emoji/admission_tickets.png
Binary files differ
diff --git a/web/static/images/emoji/aerial_tramway.png b/web/static/images/emoji/aerial_tramway.png
index 38f6dfe23..32d56bec7 100755..100644
--- a/web/static/images/emoji/aerial_tramway.png
+++ b/web/static/images/emoji/aerial_tramway.png
Binary files differ
diff --git a/web/static/images/emoji/airplane.png b/web/static/images/emoji/airplane.png
index 8407cb675..bf1786717 100755..100644
--- a/web/static/images/emoji/airplane.png
+++ b/web/static/images/emoji/airplane.png
Binary files differ
diff --git a/web/static/images/emoji/airplane_arriving.png b/web/static/images/emoji/airplane_arriving.png
new file mode 100644
index 000000000..4d754bf59
--- /dev/null
+++ b/web/static/images/emoji/airplane_arriving.png
Binary files differ
diff --git a/web/static/images/emoji/airplane_departure.png b/web/static/images/emoji/airplane_departure.png
new file mode 100644
index 000000000..9b0f017be
--- /dev/null
+++ b/web/static/images/emoji/airplane_departure.png
Binary files differ
diff --git a/web/static/images/emoji/alarm_clock.png b/web/static/images/emoji/alarm_clock.png
index 86ca8c8ed..3f466f3a7 100755..100644
--- a/web/static/images/emoji/alarm_clock.png
+++ b/web/static/images/emoji/alarm_clock.png
Binary files differ
diff --git a/web/static/images/emoji/alien.png b/web/static/images/emoji/alien.png
index 416de47be..6d0fc8399 100755..100644
--- a/web/static/images/emoji/alien.png
+++ b/web/static/images/emoji/alien.png
Binary files differ
diff --git a/web/static/images/emoji/ambulance.png b/web/static/images/emoji/ambulance.png
index b740f45db..9df138d9c 100755..100644
--- a/web/static/images/emoji/ambulance.png
+++ b/web/static/images/emoji/ambulance.png
Binary files differ
diff --git a/web/static/images/emoji/anchor.png b/web/static/images/emoji/anchor.png
index 0c5192e64..f2a8200f0 100755..100644
--- a/web/static/images/emoji/anchor.png
+++ b/web/static/images/emoji/anchor.png
Binary files differ
diff --git a/web/static/images/emoji/angel.png b/web/static/images/emoji/angel.png
index da52c310c..46546001f 100755..100644
--- a/web/static/images/emoji/angel.png
+++ b/web/static/images/emoji/angel.png
Binary files differ
diff --git a/web/static/images/emoji/anger.png b/web/static/images/emoji/anger.png
index 6fb4dca18..f69aa08d4 100755..100644
--- a/web/static/images/emoji/anger.png
+++ b/web/static/images/emoji/anger.png
Binary files differ
diff --git a/web/static/images/emoji/angry.png b/web/static/images/emoji/angry.png
index f95bfa897..103961ee4 100755..100644
--- a/web/static/images/emoji/angry.png
+++ b/web/static/images/emoji/angry.png
Binary files differ
diff --git a/web/static/images/emoji/anguished.png b/web/static/images/emoji/anguished.png
index c62594726..31b14f781 100755..100644
--- a/web/static/images/emoji/anguished.png
+++ b/web/static/images/emoji/anguished.png
Binary files differ
diff --git a/web/static/images/emoji/ant.png b/web/static/images/emoji/ant.png
index b92d1cc14..1b6ba80c0 100755..100644
--- a/web/static/images/emoji/ant.png
+++ b/web/static/images/emoji/ant.png
Binary files differ
diff --git a/web/static/images/emoji/apple.png b/web/static/images/emoji/apple.png
index 08aa17b95..bcc5c94aa 100755..100644
--- a/web/static/images/emoji/apple.png
+++ b/web/static/images/emoji/apple.png
Binary files differ
diff --git a/web/static/images/emoji/aquarius.png b/web/static/images/emoji/aquarius.png
index cbff66edc..2e645c9e3 100755..100644
--- a/web/static/images/emoji/aquarius.png
+++ b/web/static/images/emoji/aquarius.png
Binary files differ
diff --git a/web/static/images/emoji/aries.png b/web/static/images/emoji/aries.png
index aab5e8809..8c26a2400 100755..100644
--- a/web/static/images/emoji/aries.png
+++ b/web/static/images/emoji/aries.png
Binary files differ
diff --git a/web/static/images/emoji/arrow_backward.png b/web/static/images/emoji/arrow_backward.png
index 088621834..66b208dd9 100755..100644
--- a/web/static/images/emoji/arrow_backward.png
+++ b/web/static/images/emoji/arrow_backward.png
Binary files differ
diff --git a/web/static/images/emoji/arrow_double_down.png b/web/static/images/emoji/arrow_double_down.png
index 2ecbebcda..698156f8d 100755..100644
--- a/web/static/images/emoji/arrow_double_down.png
+++ b/web/static/images/emoji/arrow_double_down.png
Binary files differ
diff --git a/web/static/images/emoji/arrow_double_up.png b/web/static/images/emoji/arrow_double_up.png
index 2bd6659b1..0878d9436 100755..100644
--- a/web/static/images/emoji/arrow_double_up.png
+++ b/web/static/images/emoji/arrow_double_up.png
Binary files differ
diff --git a/web/static/images/emoji/arrow_down.png b/web/static/images/emoji/arrow_down.png
index e6702f02b..cf9664792 100755..100644
--- a/web/static/images/emoji/arrow_down.png
+++ b/web/static/images/emoji/arrow_down.png
Binary files differ
diff --git a/web/static/images/emoji/arrow_down_small.png b/web/static/images/emoji/arrow_down_small.png
index 22d383a92..6694271c4 100755..100644
--- a/web/static/images/emoji/arrow_down_small.png
+++ b/web/static/images/emoji/arrow_down_small.png
Binary files differ
diff --git a/web/static/images/emoji/arrow_forward.png b/web/static/images/emoji/arrow_forward.png
index fbfe711b6..cbc672c1e 100755..100644
--- a/web/static/images/emoji/arrow_forward.png
+++ b/web/static/images/emoji/arrow_forward.png
Binary files differ
diff --git a/web/static/images/emoji/arrow_heading_down.png b/web/static/images/emoji/arrow_heading_down.png
index 56dd3b9d3..79234629f 100755..100644
--- a/web/static/images/emoji/arrow_heading_down.png
+++ b/web/static/images/emoji/arrow_heading_down.png
Binary files differ
diff --git a/web/static/images/emoji/arrow_heading_up.png b/web/static/images/emoji/arrow_heading_up.png
index c8f670a1e..b6c5b0610 100755..100644
--- a/web/static/images/emoji/arrow_heading_up.png
+++ b/web/static/images/emoji/arrow_heading_up.png
Binary files differ
diff --git a/web/static/images/emoji/arrow_left.png b/web/static/images/emoji/arrow_left.png
index d64ac619c..58a76a59c 100755..100644
--- a/web/static/images/emoji/arrow_left.png
+++ b/web/static/images/emoji/arrow_left.png
Binary files differ
diff --git a/web/static/images/emoji/arrow_lower_left.png b/web/static/images/emoji/arrow_lower_left.png
index 55fb03c41..c5b1a2f7a 100755..100644
--- a/web/static/images/emoji/arrow_lower_left.png
+++ b/web/static/images/emoji/arrow_lower_left.png
Binary files differ
diff --git a/web/static/images/emoji/arrow_lower_right.png b/web/static/images/emoji/arrow_lower_right.png
index da8fb8294..4e7757c23 100755..100644
--- a/web/static/images/emoji/arrow_lower_right.png
+++ b/web/static/images/emoji/arrow_lower_right.png
Binary files differ
diff --git a/web/static/images/emoji/arrow_right.png b/web/static/images/emoji/arrow_right.png
index 6d483b514..67ab92488 100755..100644
--- a/web/static/images/emoji/arrow_right.png
+++ b/web/static/images/emoji/arrow_right.png
Binary files differ
diff --git a/web/static/images/emoji/arrow_right_hook.png b/web/static/images/emoji/arrow_right_hook.png
index 8b4ea6e17..0512301c9 100755..100644
--- a/web/static/images/emoji/arrow_right_hook.png
+++ b/web/static/images/emoji/arrow_right_hook.png
Binary files differ
diff --git a/web/static/images/emoji/arrow_up.png b/web/static/images/emoji/arrow_up.png
index b5b0688d3..d50437a6a 100755..100644
--- a/web/static/images/emoji/arrow_up.png
+++ b/web/static/images/emoji/arrow_up.png
Binary files differ
diff --git a/web/static/images/emoji/arrow_up_down.png b/web/static/images/emoji/arrow_up_down.png
index be423de78..bb668b036 100755..100644
--- a/web/static/images/emoji/arrow_up_down.png
+++ b/web/static/images/emoji/arrow_up_down.png
Binary files differ
diff --git a/web/static/images/emoji/arrow_up_small.png b/web/static/images/emoji/arrow_up_small.png
index 3f40bfb89..7752177fd 100755..100644
--- a/web/static/images/emoji/arrow_up_small.png
+++ b/web/static/images/emoji/arrow_up_small.png
Binary files differ
diff --git a/web/static/images/emoji/arrow_upper_left.png b/web/static/images/emoji/arrow_upper_left.png
index 2950ae2f9..5a75e42ba 100755..100644
--- a/web/static/images/emoji/arrow_upper_left.png
+++ b/web/static/images/emoji/arrow_upper_left.png
Binary files differ
diff --git a/web/static/images/emoji/arrow_upper_right.png b/web/static/images/emoji/arrow_upper_right.png
index e23790ba1..267322593 100755..100644
--- a/web/static/images/emoji/arrow_upper_right.png
+++ b/web/static/images/emoji/arrow_upper_right.png
Binary files differ
diff --git a/web/static/images/emoji/arrows_clockwise.png b/web/static/images/emoji/arrows_clockwise.png
index 5f84d7e72..fe7d5bafd 100755..100644
--- a/web/static/images/emoji/arrows_clockwise.png
+++ b/web/static/images/emoji/arrows_clockwise.png
Binary files differ
diff --git a/web/static/images/emoji/arrows_counterclockwise.png b/web/static/images/emoji/arrows_counterclockwise.png
index 3e06f5b3c..7bd4e4d75 100755..100644
--- a/web/static/images/emoji/arrows_counterclockwise.png
+++ b/web/static/images/emoji/arrows_counterclockwise.png
Binary files differ
diff --git a/web/static/images/emoji/art.png b/web/static/images/emoji/art.png
index d45212b03..05116974d 100755..100644
--- a/web/static/images/emoji/art.png
+++ b/web/static/images/emoji/art.png
Binary files differ
diff --git a/web/static/images/emoji/articulated_lorry.png b/web/static/images/emoji/articulated_lorry.png
index 81ec1f917..4447dcfb5 100755..100644
--- a/web/static/images/emoji/articulated_lorry.png
+++ b/web/static/images/emoji/articulated_lorry.png
Binary files differ
diff --git a/web/static/images/emoji/astonished.png b/web/static/images/emoji/astonished.png
index 858a83484..7be652cab 100755..100644
--- a/web/static/images/emoji/astonished.png
+++ b/web/static/images/emoji/astonished.png
Binary files differ
diff --git a/web/static/images/emoji/athletic_shoe.png b/web/static/images/emoji/athletic_shoe.png
new file mode 100644
index 000000000..e2cd2d3d4
--- /dev/null
+++ b/web/static/images/emoji/athletic_shoe.png
Binary files differ
diff --git a/web/static/images/emoji/atm.png b/web/static/images/emoji/atm.png
index c2846e792..0769e688b 100755..100644
--- a/web/static/images/emoji/atm.png
+++ b/web/static/images/emoji/atm.png
Binary files differ
diff --git a/web/static/images/emoji/b.png b/web/static/images/emoji/b.png
index 8742b3d2e..cf87ad1fc 100755..100644
--- a/web/static/images/emoji/b.png
+++ b/web/static/images/emoji/b.png
Binary files differ
diff --git a/web/static/images/emoji/baby.png b/web/static/images/emoji/baby.png
index 3b29da40b..7bfa3d4b5 100755..100644
--- a/web/static/images/emoji/baby.png
+++ b/web/static/images/emoji/baby.png
Binary files differ
diff --git a/web/static/images/emoji/baby_bottle.png b/web/static/images/emoji/baby_bottle.png
index 1b2cfe5e3..64e9edee3 100755..100644
--- a/web/static/images/emoji/baby_bottle.png
+++ b/web/static/images/emoji/baby_bottle.png
Binary files differ
diff --git a/web/static/images/emoji/baby_chick.png b/web/static/images/emoji/baby_chick.png
index 9be8d2930..66785c880 100755..100644
--- a/web/static/images/emoji/baby_chick.png
+++ b/web/static/images/emoji/baby_chick.png
Binary files differ
diff --git a/web/static/images/emoji/baby_symbol.png b/web/static/images/emoji/baby_symbol.png
index 2e58725cf..c289fc5e5 100755..100644
--- a/web/static/images/emoji/baby_symbol.png
+++ b/web/static/images/emoji/baby_symbol.png
Binary files differ
diff --git a/web/static/images/emoji/back.png b/web/static/images/emoji/back.png
index 0cde62876..13983d277 100755..100644
--- a/web/static/images/emoji/back.png
+++ b/web/static/images/emoji/back.png
Binary files differ
diff --git a/web/static/images/emoji/baggage_claim.png b/web/static/images/emoji/baggage_claim.png
index 59ae044a4..3c6c63aff 100755..100644
--- a/web/static/images/emoji/baggage_claim.png
+++ b/web/static/images/emoji/baggage_claim.png
Binary files differ
diff --git a/web/static/images/emoji/balloon.png b/web/static/images/emoji/balloon.png
index 034489702..3cea35eba 100755..100644
--- a/web/static/images/emoji/balloon.png
+++ b/web/static/images/emoji/balloon.png
Binary files differ
diff --git a/web/static/images/emoji/ballot_box_with_ballot.png b/web/static/images/emoji/ballot_box_with_ballot.png
new file mode 100644
index 000000000..e97e4727e
--- /dev/null
+++ b/web/static/images/emoji/ballot_box_with_ballot.png
Binary files differ
diff --git a/web/static/images/emoji/ballot_box_with_check.png b/web/static/images/emoji/ballot_box_with_check.png
index f07a466c7..e9826b1db 100755..100644
--- a/web/static/images/emoji/ballot_box_with_check.png
+++ b/web/static/images/emoji/ballot_box_with_check.png
Binary files differ
diff --git a/web/static/images/emoji/bamboo.png b/web/static/images/emoji/bamboo.png
index fc858d0fc..4e27cc4c5 100755..100644
--- a/web/static/images/emoji/bamboo.png
+++ b/web/static/images/emoji/bamboo.png
Binary files differ
diff --git a/web/static/images/emoji/banana.png b/web/static/images/emoji/banana.png
index a0563afb9..5e68af770 100755..100644
--- a/web/static/images/emoji/banana.png
+++ b/web/static/images/emoji/banana.png
Binary files differ
diff --git a/web/static/images/emoji/bangbang.png b/web/static/images/emoji/bangbang.png
index 7270f0afe..ab85c1d06 100755..100644
--- a/web/static/images/emoji/bangbang.png
+++ b/web/static/images/emoji/bangbang.png
Binary files differ
diff --git a/web/static/images/emoji/bank.png b/web/static/images/emoji/bank.png
index 1faa8777e..5cde6caa9 100755..100644
--- a/web/static/images/emoji/bank.png
+++ b/web/static/images/emoji/bank.png
Binary files differ
diff --git a/web/static/images/emoji/bar_chart.png b/web/static/images/emoji/bar_chart.png
index 09d7301c4..9b5a73c72 100755..100644
--- a/web/static/images/emoji/bar_chart.png
+++ b/web/static/images/emoji/bar_chart.png
Binary files differ
diff --git a/web/static/images/emoji/barber.png b/web/static/images/emoji/barber.png
index a10cb2322..e2267ff8f 100755..100644
--- a/web/static/images/emoji/barber.png
+++ b/web/static/images/emoji/barber.png
Binary files differ
diff --git a/web/static/images/emoji/baseball.png b/web/static/images/emoji/baseball.png
index da004e2ea..4ba7a75a6 100755..100644
--- a/web/static/images/emoji/baseball.png
+++ b/web/static/images/emoji/baseball.png
Binary files differ
diff --git a/web/static/images/emoji/basketball.png b/web/static/images/emoji/basketball.png
index ef694bec4..e9b1c735a 100755..100644
--- a/web/static/images/emoji/basketball.png
+++ b/web/static/images/emoji/basketball.png
Binary files differ
diff --git a/web/static/images/emoji/bath.png b/web/static/images/emoji/bath.png
index 8f75d1d24..faca8ba79 100755..100644
--- a/web/static/images/emoji/bath.png
+++ b/web/static/images/emoji/bath.png
Binary files differ
diff --git a/web/static/images/emoji/bathtub.png b/web/static/images/emoji/bathtub.png
index 1c3f844ab..86b2a2629 100755..100644
--- a/web/static/images/emoji/bathtub.png
+++ b/web/static/images/emoji/bathtub.png
Binary files differ
diff --git a/web/static/images/emoji/battery.png b/web/static/images/emoji/battery.png
index aa7eedce4..9de506348 100755..100644
--- a/web/static/images/emoji/battery.png
+++ b/web/static/images/emoji/battery.png
Binary files differ
diff --git a/web/static/images/emoji/beach_with_umbrella.png b/web/static/images/emoji/beach_with_umbrella.png
new file mode 100644
index 000000000..0e244c164
--- /dev/null
+++ b/web/static/images/emoji/beach_with_umbrella.png
Binary files differ
diff --git a/web/static/images/emoji/bear.png b/web/static/images/emoji/bear.png
index f5afe920e..32387186f 100755..100644
--- a/web/static/images/emoji/bear.png
+++ b/web/static/images/emoji/bear.png
Binary files differ
diff --git a/web/static/images/emoji/bed.png b/web/static/images/emoji/bed.png
new file mode 100644
index 000000000..2b23803bc
--- /dev/null
+++ b/web/static/images/emoji/bed.png
Binary files differ
diff --git a/web/static/images/emoji/bee.png b/web/static/images/emoji/bee.png
index f53733953..e67b7703b 100755..100644
--- a/web/static/images/emoji/bee.png
+++ b/web/static/images/emoji/bee.png
Binary files differ
diff --git a/web/static/images/emoji/beer.png b/web/static/images/emoji/beer.png
index cd78bed74..de0c3ddd9 100755..100644
--- a/web/static/images/emoji/beer.png
+++ b/web/static/images/emoji/beer.png
Binary files differ
diff --git a/web/static/images/emoji/beers.png b/web/static/images/emoji/beers.png
index cc5e4ab5a..04ba4d9f4 100755..100644
--- a/web/static/images/emoji/beers.png
+++ b/web/static/images/emoji/beers.png
Binary files differ
diff --git a/web/static/images/emoji/beetle.png b/web/static/images/emoji/beetle.png
index 222577ca7..c35380926 100755..100644
--- a/web/static/images/emoji/beetle.png
+++ b/web/static/images/emoji/beetle.png
Binary files differ
diff --git a/web/static/images/emoji/beginner.png b/web/static/images/emoji/beginner.png
index 1f022d175..5f429bf63 100755..100644
--- a/web/static/images/emoji/beginner.png
+++ b/web/static/images/emoji/beginner.png
Binary files differ
diff --git a/web/static/images/emoji/bell.png b/web/static/images/emoji/bell.png
index 69acceb28..d1473557e 100755..100644
--- a/web/static/images/emoji/bell.png
+++ b/web/static/images/emoji/bell.png
Binary files differ
diff --git a/web/static/images/emoji/bellhop_bell.png b/web/static/images/emoji/bellhop_bell.png
new file mode 100644
index 000000000..5eb060df1
--- /dev/null
+++ b/web/static/images/emoji/bellhop_bell.png
Binary files differ
diff --git a/web/static/images/emoji/bento.png b/web/static/images/emoji/bento.png
index d6801124a..58af834fd 100755..100644
--- a/web/static/images/emoji/bento.png
+++ b/web/static/images/emoji/bento.png
Binary files differ
diff --git a/web/static/images/emoji/bicyclist.png b/web/static/images/emoji/bicyclist.png
index cbbd7c386..15b4c9666 100755..100644
--- a/web/static/images/emoji/bicyclist.png
+++ b/web/static/images/emoji/bicyclist.png
Binary files differ
diff --git a/web/static/images/emoji/bike.png b/web/static/images/emoji/bike.png
index 657386027..a37d60207 100755..100644
--- a/web/static/images/emoji/bike.png
+++ b/web/static/images/emoji/bike.png
Binary files differ
diff --git a/web/static/images/emoji/bikini.png b/web/static/images/emoji/bikini.png
index 4ff63b40f..62d142f31 100755..100644
--- a/web/static/images/emoji/bikini.png
+++ b/web/static/images/emoji/bikini.png
Binary files differ
diff --git a/web/static/images/emoji/bird.png b/web/static/images/emoji/bird.png
index e6be8c027..077178a42 100755..100644
--- a/web/static/images/emoji/bird.png
+++ b/web/static/images/emoji/bird.png
Binary files differ
diff --git a/web/static/images/emoji/birthday.png b/web/static/images/emoji/birthday.png
index 36e8edcbe..c5253b099 100755..100644
--- a/web/static/images/emoji/birthday.png
+++ b/web/static/images/emoji/birthday.png
Binary files differ
diff --git a/web/static/images/emoji/black_circle.png b/web/static/images/emoji/black_circle.png
index e46f9df61..a9f021517 100755..100644
--- a/web/static/images/emoji/black_circle.png
+++ b/web/static/images/emoji/black_circle.png
Binary files differ
diff --git a/web/static/images/emoji/black_joker.png b/web/static/images/emoji/black_joker.png
index 4c78f3614..1cbc43e84 100755..100644
--- a/web/static/images/emoji/black_joker.png
+++ b/web/static/images/emoji/black_joker.png
Binary files differ
diff --git a/web/static/images/emoji/black_large_square.png b/web/static/images/emoji/black_large_square.png
new file mode 100644
index 000000000..a8ca8cb81
--- /dev/null
+++ b/web/static/images/emoji/black_large_square.png
Binary files differ
diff --git a/web/static/images/emoji/black_medium_small_square.png b/web/static/images/emoji/black_medium_small_square.png
index 25bfe9c45..6dd0df1c9 100755..100644
--- a/web/static/images/emoji/black_medium_small_square.png
+++ b/web/static/images/emoji/black_medium_small_square.png
Binary files differ
diff --git a/web/static/images/emoji/black_medium_square.png b/web/static/images/emoji/black_medium_square.png
index 204cce12c..0250c07f4 100755..100644
--- a/web/static/images/emoji/black_medium_square.png
+++ b/web/static/images/emoji/black_medium_square.png
Binary files differ
diff --git a/web/static/images/emoji/black_nib.png b/web/static/images/emoji/black_nib.png
index 29f6994c1..6f1a76cde 100755..100644
--- a/web/static/images/emoji/black_nib.png
+++ b/web/static/images/emoji/black_nib.png
Binary files differ
diff --git a/web/static/images/emoji/black_small_square.png b/web/static/images/emoji/black_small_square.png
index a247751ec..5a5559241 100755..100644
--- a/web/static/images/emoji/black_small_square.png
+++ b/web/static/images/emoji/black_small_square.png
Binary files differ
diff --git a/web/static/images/emoji/black_square.png b/web/static/images/emoji/black_square.png
deleted file mode 100755
index 71da10de8..000000000
--- a/web/static/images/emoji/black_square.png
+++ /dev/null
Binary files differ
diff --git a/web/static/images/emoji/black_square_button.png b/web/static/images/emoji/black_square_button.png
index f2597e956..06c68f23e 100755..100644
--- a/web/static/images/emoji/black_square_button.png
+++ b/web/static/images/emoji/black_square_button.png
Binary files differ
diff --git a/web/static/images/emoji/blossom.png b/web/static/images/emoji/blossom.png
index 55a97353b..ffc25f252 100755..100644
--- a/web/static/images/emoji/blossom.png
+++ b/web/static/images/emoji/blossom.png
Binary files differ
diff --git a/web/static/images/emoji/blowfish.png b/web/static/images/emoji/blowfish.png
index d3ad46585..7529feff7 100755..100644
--- a/web/static/images/emoji/blowfish.png
+++ b/web/static/images/emoji/blowfish.png
Binary files differ
diff --git a/web/static/images/emoji/blue_book.png b/web/static/images/emoji/blue_book.png
index e2b9e8c79..673bf2bdb 100755..100644
--- a/web/static/images/emoji/blue_book.png
+++ b/web/static/images/emoji/blue_book.png
Binary files differ
diff --git a/web/static/images/emoji/blue_car.png b/web/static/images/emoji/blue_car.png
index 978291e08..0c2e833ff 100755..100644
--- a/web/static/images/emoji/blue_car.png
+++ b/web/static/images/emoji/blue_car.png
Binary files differ
diff --git a/web/static/images/emoji/blue_heart.png b/web/static/images/emoji/blue_heart.png
index baa29b31b..494ab723e 100755..100644
--- a/web/static/images/emoji/blue_heart.png
+++ b/web/static/images/emoji/blue_heart.png
Binary files differ
diff --git a/web/static/images/emoji/blush.png b/web/static/images/emoji/blush.png
index 3a95eb61a..1733df545 100755..100644
--- a/web/static/images/emoji/blush.png
+++ b/web/static/images/emoji/blush.png
Binary files differ
diff --git a/web/static/images/emoji/boar.png b/web/static/images/emoji/boar.png
index 8196ad4a1..2ccb92fd1 100755..100644
--- a/web/static/images/emoji/boar.png
+++ b/web/static/images/emoji/boar.png
Binary files differ
diff --git a/web/static/images/emoji/boat.png b/web/static/images/emoji/boat.png
index ff656dc62..9e862f831 100755..100644
--- a/web/static/images/emoji/boat.png
+++ b/web/static/images/emoji/boat.png
Binary files differ
diff --git a/web/static/images/emoji/bomb.png b/web/static/images/emoji/bomb.png
index 3289787dc..774c5c91e 100755..100644
--- a/web/static/images/emoji/bomb.png
+++ b/web/static/images/emoji/bomb.png
Binary files differ
diff --git a/web/static/images/emoji/book.png b/web/static/images/emoji/book.png
index 8b698415c..01c836a7e 100755..100644
--- a/web/static/images/emoji/book.png
+++ b/web/static/images/emoji/book.png
Binary files differ
diff --git a/web/static/images/emoji/bookmark.png b/web/static/images/emoji/bookmark.png
index 6fc4ed902..05a3325c8 100755..100644
--- a/web/static/images/emoji/bookmark.png
+++ b/web/static/images/emoji/bookmark.png
Binary files differ
diff --git a/web/static/images/emoji/bookmark_tabs.png b/web/static/images/emoji/bookmark_tabs.png
index 83782ff0c..9cec88387 100755..100644
--- a/web/static/images/emoji/bookmark_tabs.png
+++ b/web/static/images/emoji/bookmark_tabs.png
Binary files differ
diff --git a/web/static/images/emoji/books.png b/web/static/images/emoji/books.png
index dca06a1ad..65abc1651 100755..100644
--- a/web/static/images/emoji/books.png
+++ b/web/static/images/emoji/books.png
Binary files differ
diff --git a/web/static/images/emoji/boom.png b/web/static/images/emoji/boom.png
index 9d5bd0401..98a69a628 100755..100644
--- a/web/static/images/emoji/boom.png
+++ b/web/static/images/emoji/boom.png
Binary files differ
diff --git a/web/static/images/emoji/boot.png b/web/static/images/emoji/boot.png
index 58d0fdbcd..856256d5b 100755..100644
--- a/web/static/images/emoji/boot.png
+++ b/web/static/images/emoji/boot.png
Binary files differ
diff --git a/web/static/images/emoji/bouquet.png b/web/static/images/emoji/bouquet.png
index ce637832e..e42118f7f 100755..100644
--- a/web/static/images/emoji/bouquet.png
+++ b/web/static/images/emoji/bouquet.png
Binary files differ
diff --git a/web/static/images/emoji/bow.png b/web/static/images/emoji/bow.png
index 024cb6104..f763bdfe9 100755..100644
--- a/web/static/images/emoji/bow.png
+++ b/web/static/images/emoji/bow.png
Binary files differ
diff --git a/web/static/images/emoji/bowling.png b/web/static/images/emoji/bowling.png
index 13d8ece2e..e41edfbdb 100755..100644
--- a/web/static/images/emoji/bowling.png
+++ b/web/static/images/emoji/bowling.png
Binary files differ
diff --git a/web/static/images/emoji/bowtie.png b/web/static/images/emoji/bowtie.png
index 28ff0c787..28ff0c787 100755..100644
--- a/web/static/images/emoji/bowtie.png
+++ b/web/static/images/emoji/bowtie.png
Binary files differ
diff --git a/web/static/images/emoji/boy.png b/web/static/images/emoji/boy.png
index f79f1f298..ddcf29ca6 100755..100644
--- a/web/static/images/emoji/boy.png
+++ b/web/static/images/emoji/boy.png
Binary files differ
diff --git a/web/static/images/emoji/bread.png b/web/static/images/emoji/bread.png
index 7e7c63753..3ca73ebc7 100755..100644
--- a/web/static/images/emoji/bread.png
+++ b/web/static/images/emoji/bread.png
Binary files differ
diff --git a/web/static/images/emoji/bride_with_veil.png b/web/static/images/emoji/bride_with_veil.png
index dd0b0cfda..a19e3389e 100755..100644
--- a/web/static/images/emoji/bride_with_veil.png
+++ b/web/static/images/emoji/bride_with_veil.png
Binary files differ
diff --git a/web/static/images/emoji/bridge_at_night.png b/web/static/images/emoji/bridge_at_night.png
index 495b06c3d..44cf8852e 100755..100644
--- a/web/static/images/emoji/bridge_at_night.png
+++ b/web/static/images/emoji/bridge_at_night.png
Binary files differ
diff --git a/web/static/images/emoji/briefcase.png b/web/static/images/emoji/briefcase.png
index 46e82b001..49293eb0a 100755..100644
--- a/web/static/images/emoji/briefcase.png
+++ b/web/static/images/emoji/briefcase.png
Binary files differ
diff --git a/web/static/images/emoji/broken_heart.png b/web/static/images/emoji/broken_heart.png
index a1bc850ec..b7ee9b4e5 100755..100644
--- a/web/static/images/emoji/broken_heart.png
+++ b/web/static/images/emoji/broken_heart.png
Binary files differ
diff --git a/web/static/images/emoji/bug.png b/web/static/images/emoji/bug.png
index c2eaf7a70..06b35cf5a 100755..100644
--- a/web/static/images/emoji/bug.png
+++ b/web/static/images/emoji/bug.png
Binary files differ
diff --git a/web/static/images/emoji/building_construction.png b/web/static/images/emoji/building_construction.png
new file mode 100644
index 000000000..05a287fee
--- /dev/null
+++ b/web/static/images/emoji/building_construction.png
Binary files differ
diff --git a/web/static/images/emoji/bulb.png b/web/static/images/emoji/bulb.png
index 23afca1c7..7596c82a7 100755..100644
--- a/web/static/images/emoji/bulb.png
+++ b/web/static/images/emoji/bulb.png
Binary files differ
diff --git a/web/static/images/emoji/bullettrain_front.png b/web/static/images/emoji/bullettrain_front.png
index 16651acff..14ab9c409 100755..100644
--- a/web/static/images/emoji/bullettrain_front.png
+++ b/web/static/images/emoji/bullettrain_front.png
Binary files differ
diff --git a/web/static/images/emoji/bullettrain_side.png b/web/static/images/emoji/bullettrain_side.png
index 8eca36845..37daa558f 100755..100644
--- a/web/static/images/emoji/bullettrain_side.png
+++ b/web/static/images/emoji/bullettrain_side.png
Binary files differ
diff --git a/web/static/images/emoji/bus.png b/web/static/images/emoji/bus.png
index 823aa39e4..b4f9c0c1f 100755..100644
--- a/web/static/images/emoji/bus.png
+++ b/web/static/images/emoji/bus.png
Binary files differ
diff --git a/web/static/images/emoji/busstop.png b/web/static/images/emoji/busstop.png
index 94894847b..3e14a30b6 100755..100644
--- a/web/static/images/emoji/busstop.png
+++ b/web/static/images/emoji/busstop.png
Binary files differ
diff --git a/web/static/images/emoji/bust_in_silhouette.png b/web/static/images/emoji/bust_in_silhouette.png
index dd7defe28..db3a468fc 100755..100644
--- a/web/static/images/emoji/bust_in_silhouette.png
+++ b/web/static/images/emoji/bust_in_silhouette.png
Binary files differ
diff --git a/web/static/images/emoji/busts_in_silhouette.png b/web/static/images/emoji/busts_in_silhouette.png
index 1f3aabcff..f6018ac0e 100755..100644
--- a/web/static/images/emoji/busts_in_silhouette.png
+++ b/web/static/images/emoji/busts_in_silhouette.png
Binary files differ
diff --git a/web/static/images/emoji/cactus.png b/web/static/images/emoji/cactus.png
index 5a2c3cc72..0204fd343 100755..100644
--- a/web/static/images/emoji/cactus.png
+++ b/web/static/images/emoji/cactus.png
Binary files differ
diff --git a/web/static/images/emoji/cake.png b/web/static/images/emoji/cake.png
index efeb9b4b2..0be915e5b 100755..100644
--- a/web/static/images/emoji/cake.png
+++ b/web/static/images/emoji/cake.png
Binary files differ
diff --git a/web/static/images/emoji/calendar.png b/web/static/images/emoji/calendar.png
index 900b868bb..7b1845ab2 100755..100644
--- a/web/static/images/emoji/calendar.png
+++ b/web/static/images/emoji/calendar.png
Binary files differ
diff --git a/web/static/images/emoji/calling.png b/web/static/images/emoji/calling.png
index 837897f26..e10f74a6a 100755..100644
--- a/web/static/images/emoji/calling.png
+++ b/web/static/images/emoji/calling.png
Binary files differ
diff --git a/web/static/images/emoji/camel.png b/web/static/images/emoji/camel.png
index 496c186ae..f332bf333 100755..100644
--- a/web/static/images/emoji/camel.png
+++ b/web/static/images/emoji/camel.png
Binary files differ
diff --git a/web/static/images/emoji/camera.png b/web/static/images/emoji/camera.png
index 397d03b39..0b4463e8b 100755..100644
--- a/web/static/images/emoji/camera.png
+++ b/web/static/images/emoji/camera.png
Binary files differ
diff --git a/web/static/images/emoji/camera_with_flash.png b/web/static/images/emoji/camera_with_flash.png
new file mode 100644
index 000000000..66f223b17
--- /dev/null
+++ b/web/static/images/emoji/camera_with_flash.png
Binary files differ
diff --git a/web/static/images/emoji/camping.png b/web/static/images/emoji/camping.png
new file mode 100644
index 000000000..d45a07fcf
--- /dev/null
+++ b/web/static/images/emoji/camping.png
Binary files differ
diff --git a/web/static/images/emoji/cancer.png b/web/static/images/emoji/cancer.png
index ea43a4a2a..6375eabb5 100755..100644
--- a/web/static/images/emoji/cancer.png
+++ b/web/static/images/emoji/cancer.png
Binary files differ
diff --git a/web/static/images/emoji/candle.png b/web/static/images/emoji/candle.png
new file mode 100644
index 000000000..d3395073a
--- /dev/null
+++ b/web/static/images/emoji/candle.png
Binary files differ
diff --git a/web/static/images/emoji/candy.png b/web/static/images/emoji/candy.png
index 33722f236..c067807c1 100755..100644
--- a/web/static/images/emoji/candy.png
+++ b/web/static/images/emoji/candy.png
Binary files differ
diff --git a/web/static/images/emoji/capital_abcd.png b/web/static/images/emoji/capital_abcd.png
index ffc0cba4b..044554f6f 100755..100644
--- a/web/static/images/emoji/capital_abcd.png
+++ b/web/static/images/emoji/capital_abcd.png
Binary files differ
diff --git a/web/static/images/emoji/capricorn.png b/web/static/images/emoji/capricorn.png
index f2044e789..255ac3183 100755..100644
--- a/web/static/images/emoji/capricorn.png
+++ b/web/static/images/emoji/capricorn.png
Binary files differ
diff --git a/web/static/images/emoji/car.png b/web/static/images/emoji/car.png
index d70a2f062..e266bd21e 100755..100644
--- a/web/static/images/emoji/car.png
+++ b/web/static/images/emoji/car.png
Binary files differ
diff --git a/web/static/images/emoji/card_file_box.png b/web/static/images/emoji/card_file_box.png
new file mode 100644
index 000000000..c9278f336
--- /dev/null
+++ b/web/static/images/emoji/card_file_box.png
Binary files differ
diff --git a/web/static/images/emoji/card_index.png b/web/static/images/emoji/card_index.png
index 374e94e9e..84407de9e 100755..100644
--- a/web/static/images/emoji/card_index.png
+++ b/web/static/images/emoji/card_index.png
Binary files differ
diff --git a/web/static/images/emoji/card_index_dividers.png b/web/static/images/emoji/card_index_dividers.png
new file mode 100644
index 000000000..b22199edd
--- /dev/null
+++ b/web/static/images/emoji/card_index_dividers.png
Binary files differ
diff --git a/web/static/images/emoji/carousel_horse.png b/web/static/images/emoji/carousel_horse.png
index 765d2c0a8..33f159f06 100755..100644
--- a/web/static/images/emoji/carousel_horse.png
+++ b/web/static/images/emoji/carousel_horse.png
Binary files differ
diff --git a/web/static/images/emoji/cat.png b/web/static/images/emoji/cat.png
index 09b9ef79a..126d2ef79 100755..100644
--- a/web/static/images/emoji/cat.png
+++ b/web/static/images/emoji/cat.png
Binary files differ
diff --git a/web/static/images/emoji/cat2.png b/web/static/images/emoji/cat2.png
index 6dbc4c71e..79f06af48 100755..100644
--- a/web/static/images/emoji/cat2.png
+++ b/web/static/images/emoji/cat2.png
Binary files differ
diff --git a/web/static/images/emoji/cd.png b/web/static/images/emoji/cd.png
index baff835c4..10d5db668 100755..100644
--- a/web/static/images/emoji/cd.png
+++ b/web/static/images/emoji/cd.png
Binary files differ
diff --git a/web/static/images/emoji/chart.png b/web/static/images/emoji/chart.png
index ac2c4bb09..6b7fb1cdd 100755..100644
--- a/web/static/images/emoji/chart.png
+++ b/web/static/images/emoji/chart.png
Binary files differ
diff --git a/web/static/images/emoji/chart_with_downwards_trend.png b/web/static/images/emoji/chart_with_downwards_trend.png
index cb0d2a113..63ab4f0b4 100755..100644
--- a/web/static/images/emoji/chart_with_downwards_trend.png
+++ b/web/static/images/emoji/chart_with_downwards_trend.png
Binary files differ
diff --git a/web/static/images/emoji/chart_with_upwards_trend.png b/web/static/images/emoji/chart_with_upwards_trend.png
index 7c66745c9..74a525be1 100755..100644
--- a/web/static/images/emoji/chart_with_upwards_trend.png
+++ b/web/static/images/emoji/chart_with_upwards_trend.png
Binary files differ
diff --git a/web/static/images/emoji/checkered_flag.png b/web/static/images/emoji/checkered_flag.png
index ead4a68dd..9f1d564f6 100755..100644
--- a/web/static/images/emoji/checkered_flag.png
+++ b/web/static/images/emoji/checkered_flag.png
Binary files differ
diff --git a/web/static/images/emoji/cherries.png b/web/static/images/emoji/cherries.png
index 8d3e044f2..982292e95 100755..100644
--- a/web/static/images/emoji/cherries.png
+++ b/web/static/images/emoji/cherries.png
Binary files differ
diff --git a/web/static/images/emoji/cherry_blossom.png b/web/static/images/emoji/cherry_blossom.png
index e03155499..7cd8a22e7 100755..100644
--- a/web/static/images/emoji/cherry_blossom.png
+++ b/web/static/images/emoji/cherry_blossom.png
Binary files differ
diff --git a/web/static/images/emoji/chestnut.png b/web/static/images/emoji/chestnut.png
index 066fb6bf6..f983cb132 100755..100644
--- a/web/static/images/emoji/chestnut.png
+++ b/web/static/images/emoji/chestnut.png
Binary files differ
diff --git a/web/static/images/emoji/chicken.png b/web/static/images/emoji/chicken.png
index 6d25c0ef4..182ffb343 100755..100644
--- a/web/static/images/emoji/chicken.png
+++ b/web/static/images/emoji/chicken.png
Binary files differ
diff --git a/web/static/images/emoji/children_crossing.png b/web/static/images/emoji/children_crossing.png
index b0302ae62..56ad0fb15 100755..100644
--- a/web/static/images/emoji/children_crossing.png
+++ b/web/static/images/emoji/children_crossing.png
Binary files differ
diff --git a/web/static/images/emoji/chipmunk.png b/web/static/images/emoji/chipmunk.png
new file mode 100644
index 000000000..2881d09be
--- /dev/null
+++ b/web/static/images/emoji/chipmunk.png
Binary files differ
diff --git a/web/static/images/emoji/chocolate_bar.png b/web/static/images/emoji/chocolate_bar.png
index c7ec19d07..f76d0902e 100755..100644
--- a/web/static/images/emoji/chocolate_bar.png
+++ b/web/static/images/emoji/chocolate_bar.png
Binary files differ
diff --git a/web/static/images/emoji/christmas_tree.png b/web/static/images/emoji/christmas_tree.png
index d813b9593..7674eb441 100755..100644
--- a/web/static/images/emoji/christmas_tree.png
+++ b/web/static/images/emoji/christmas_tree.png
Binary files differ
diff --git a/web/static/images/emoji/church.png b/web/static/images/emoji/church.png
index 4c07c6b9e..e1f25e25a 100755..100644
--- a/web/static/images/emoji/church.png
+++ b/web/static/images/emoji/church.png
Binary files differ
diff --git a/web/static/images/emoji/cinema.png b/web/static/images/emoji/cinema.png
index a990ccf99..972b57df7 100755..100644
--- a/web/static/images/emoji/cinema.png
+++ b/web/static/images/emoji/cinema.png
Binary files differ
diff --git a/web/static/images/emoji/circus_tent.png b/web/static/images/emoji/circus_tent.png
index 4af8719aa..713b4f085 100755..100644
--- a/web/static/images/emoji/circus_tent.png
+++ b/web/static/images/emoji/circus_tent.png
Binary files differ
diff --git a/web/static/images/emoji/city_sunrise.png b/web/static/images/emoji/city_sunrise.png
index 91ca2a40b..a65691bb0 100755..100644
--- a/web/static/images/emoji/city_sunrise.png
+++ b/web/static/images/emoji/city_sunrise.png
Binary files differ
diff --git a/web/static/images/emoji/city_sunset.png b/web/static/images/emoji/city_sunset.png
index 7cb178a2c..f64483fb6 100755..100644
--- a/web/static/images/emoji/city_sunset.png
+++ b/web/static/images/emoji/city_sunset.png
Binary files differ
diff --git a/web/static/images/emoji/cityscape.png b/web/static/images/emoji/cityscape.png
new file mode 100644
index 000000000..4d331db74
--- /dev/null
+++ b/web/static/images/emoji/cityscape.png
Binary files differ
diff --git a/web/static/images/emoji/cl.png b/web/static/images/emoji/cl.png
index 15ac67525..ccd6494e6 100755..100644
--- a/web/static/images/emoji/cl.png
+++ b/web/static/images/emoji/cl.png
Binary files differ
diff --git a/web/static/images/emoji/clap.png b/web/static/images/emoji/clap.png
index d01c982a7..ccb725e96 100755..100644
--- a/web/static/images/emoji/clap.png
+++ b/web/static/images/emoji/clap.png
Binary files differ
diff --git a/web/static/images/emoji/clapper.png b/web/static/images/emoji/clapper.png
index 4e1dc111d..54bbba809 100755..100644
--- a/web/static/images/emoji/clapper.png
+++ b/web/static/images/emoji/clapper.png
Binary files differ
diff --git a/web/static/images/emoji/classical_building.png b/web/static/images/emoji/classical_building.png
new file mode 100644
index 000000000..71150c7c5
--- /dev/null
+++ b/web/static/images/emoji/classical_building.png
Binary files differ
diff --git a/web/static/images/emoji/clipboard.png b/web/static/images/emoji/clipboard.png
index e2c74e6df..7f50dfff7 100755..100644
--- a/web/static/images/emoji/clipboard.png
+++ b/web/static/images/emoji/clipboard.png
Binary files differ
diff --git a/web/static/images/emoji/clock1.png b/web/static/images/emoji/clock1.png
index 9174d4e0b..980085a07 100755..100644
--- a/web/static/images/emoji/clock1.png
+++ b/web/static/images/emoji/clock1.png
Binary files differ
diff --git a/web/static/images/emoji/clock10.png b/web/static/images/emoji/clock10.png
index 39f590d69..90f1576d2 100755..100644
--- a/web/static/images/emoji/clock10.png
+++ b/web/static/images/emoji/clock10.png
Binary files differ
diff --git a/web/static/images/emoji/clock1030.png b/web/static/images/emoji/clock1030.png
index 0483b3059..c530b7db4 100755..100644
--- a/web/static/images/emoji/clock1030.png
+++ b/web/static/images/emoji/clock1030.png
Binary files differ
diff --git a/web/static/images/emoji/clock11.png b/web/static/images/emoji/clock11.png
index ddb53fada..918ba245f 100755..100644
--- a/web/static/images/emoji/clock11.png
+++ b/web/static/images/emoji/clock11.png
Binary files differ
diff --git a/web/static/images/emoji/clock1130.png b/web/static/images/emoji/clock1130.png
index 415999ec8..e39bbbbb1 100755..100644
--- a/web/static/images/emoji/clock1130.png
+++ b/web/static/images/emoji/clock1130.png
Binary files differ
diff --git a/web/static/images/emoji/clock12.png b/web/static/images/emoji/clock12.png
index 87b132878..d5848e629 100755..100644
--- a/web/static/images/emoji/clock12.png
+++ b/web/static/images/emoji/clock12.png
Binary files differ
diff --git a/web/static/images/emoji/clock1230.png b/web/static/images/emoji/clock1230.png
index a6527154d..f67ed85f3 100755..100644
--- a/web/static/images/emoji/clock1230.png
+++ b/web/static/images/emoji/clock1230.png
Binary files differ
diff --git a/web/static/images/emoji/clock130.png b/web/static/images/emoji/clock130.png
index 90ea5b914..c4675548d 100755..100644
--- a/web/static/images/emoji/clock130.png
+++ b/web/static/images/emoji/clock130.png
Binary files differ
diff --git a/web/static/images/emoji/clock2.png b/web/static/images/emoji/clock2.png
index 65b3b3af0..ba411f8f0 100755..100644
--- a/web/static/images/emoji/clock2.png
+++ b/web/static/images/emoji/clock2.png
Binary files differ
diff --git a/web/static/images/emoji/clock230.png b/web/static/images/emoji/clock230.png
index f12c6912a..5482453d1 100755..100644
--- a/web/static/images/emoji/clock230.png
+++ b/web/static/images/emoji/clock230.png
Binary files differ
diff --git a/web/static/images/emoji/clock3.png b/web/static/images/emoji/clock3.png
index 3e44d64e2..7978c4251 100755..100644
--- a/web/static/images/emoji/clock3.png
+++ b/web/static/images/emoji/clock3.png
Binary files differ
diff --git a/web/static/images/emoji/clock330.png b/web/static/images/emoji/clock330.png
index 1dc9628ea..f66421993 100755..100644
--- a/web/static/images/emoji/clock330.png
+++ b/web/static/images/emoji/clock330.png
Binary files differ
diff --git a/web/static/images/emoji/clock4.png b/web/static/images/emoji/clock4.png
index 948ed1a38..4cfceb291 100755..100644
--- a/web/static/images/emoji/clock4.png
+++ b/web/static/images/emoji/clock4.png
Binary files differ
diff --git a/web/static/images/emoji/clock430.png b/web/static/images/emoji/clock430.png
index 5d6b16a2d..b93f01e67 100755..100644
--- a/web/static/images/emoji/clock430.png
+++ b/web/static/images/emoji/clock430.png
Binary files differ
diff --git a/web/static/images/emoji/clock5.png b/web/static/images/emoji/clock5.png
index b010b4f8a..403b99fb2 100755..100644
--- a/web/static/images/emoji/clock5.png
+++ b/web/static/images/emoji/clock5.png
Binary files differ
diff --git a/web/static/images/emoji/clock530.png b/web/static/images/emoji/clock530.png
index e08d4ad2b..b2ad07307 100755..100644
--- a/web/static/images/emoji/clock530.png
+++ b/web/static/images/emoji/clock530.png
Binary files differ
diff --git a/web/static/images/emoji/clock6.png b/web/static/images/emoji/clock6.png
index 76bf8cf18..008ac2b9e 100755..100644
--- a/web/static/images/emoji/clock6.png
+++ b/web/static/images/emoji/clock6.png
Binary files differ
diff --git a/web/static/images/emoji/clock630.png b/web/static/images/emoji/clock630.png
index 46f0681f1..dbabd4eb9 100755..100644
--- a/web/static/images/emoji/clock630.png
+++ b/web/static/images/emoji/clock630.png
Binary files differ
diff --git a/web/static/images/emoji/clock7.png b/web/static/images/emoji/clock7.png
index d48f645d8..067d11165 100755..100644
--- a/web/static/images/emoji/clock7.png
+++ b/web/static/images/emoji/clock7.png
Binary files differ
diff --git a/web/static/images/emoji/clock730.png b/web/static/images/emoji/clock730.png
index f2807de2f..415894eda 100755..100644
--- a/web/static/images/emoji/clock730.png
+++ b/web/static/images/emoji/clock730.png
Binary files differ
diff --git a/web/static/images/emoji/clock8.png b/web/static/images/emoji/clock8.png
index 74c770d89..c4bdc4080 100755..100644
--- a/web/static/images/emoji/clock8.png
+++ b/web/static/images/emoji/clock8.png
Binary files differ
diff --git a/web/static/images/emoji/clock830.png b/web/static/images/emoji/clock830.png
index f58f3dadd..8e899ad48 100755..100644
--- a/web/static/images/emoji/clock830.png
+++ b/web/static/images/emoji/clock830.png
Binary files differ
diff --git a/web/static/images/emoji/clock9.png b/web/static/images/emoji/clock9.png
index f009d14ac..467de0ba5 100755..100644
--- a/web/static/images/emoji/clock9.png
+++ b/web/static/images/emoji/clock9.png
Binary files differ
diff --git a/web/static/images/emoji/clock930.png b/web/static/images/emoji/clock930.png
index fd3522142..d9c91203c 100755..100644
--- a/web/static/images/emoji/clock930.png
+++ b/web/static/images/emoji/clock930.png
Binary files differ
diff --git a/web/static/images/emoji/closed_book.png b/web/static/images/emoji/closed_book.png
index 484029c5e..e26390e0a 100755..100644
--- a/web/static/images/emoji/closed_book.png
+++ b/web/static/images/emoji/closed_book.png
Binary files differ
diff --git a/web/static/images/emoji/closed_lock_with_key.png b/web/static/images/emoji/closed_lock_with_key.png
index e6fdf6cb2..d2bddb1eb 100755..100644
--- a/web/static/images/emoji/closed_lock_with_key.png
+++ b/web/static/images/emoji/closed_lock_with_key.png
Binary files differ
diff --git a/web/static/images/emoji/closed_umbrella.png b/web/static/images/emoji/closed_umbrella.png
index 0b719f086..00afbfb40 100755..100644
--- a/web/static/images/emoji/closed_umbrella.png
+++ b/web/static/images/emoji/closed_umbrella.png
Binary files differ
diff --git a/web/static/images/emoji/cloud.png b/web/static/images/emoji/cloud.png
index b31c08c0b..559c52f76 100755..100644
--- a/web/static/images/emoji/cloud.png
+++ b/web/static/images/emoji/cloud.png
Binary files differ
diff --git a/web/static/images/emoji/clubs.png b/web/static/images/emoji/clubs.png
index bfab53656..307231d98 100755..100644
--- a/web/static/images/emoji/clubs.png
+++ b/web/static/images/emoji/clubs.png
Binary files differ
diff --git a/web/static/images/emoji/cn.png b/web/static/images/emoji/cn.png
index b30dcc53d..0151923f3 100755..100644
--- a/web/static/images/emoji/cn.png
+++ b/web/static/images/emoji/cn.png
Binary files differ
diff --git a/web/static/images/emoji/cocktail.png b/web/static/images/emoji/cocktail.png
index 28b45ea51..abff15aa8 100755..100644
--- a/web/static/images/emoji/cocktail.png
+++ b/web/static/images/emoji/cocktail.png
Binary files differ
diff --git a/web/static/images/emoji/coffee.png b/web/static/images/emoji/coffee.png
index 57e1adcb0..109505f51 100755..100644
--- a/web/static/images/emoji/coffee.png
+++ b/web/static/images/emoji/coffee.png
Binary files differ
diff --git a/web/static/images/emoji/cold_sweat.png b/web/static/images/emoji/cold_sweat.png
index b9e39bc60..f488a3ec3 100755..100644
--- a/web/static/images/emoji/cold_sweat.png
+++ b/web/static/images/emoji/cold_sweat.png
Binary files differ
diff --git a/web/static/images/emoji/collision.png b/web/static/images/emoji/collision.png
index 9d5bd0401..98a69a628 100755..100644
--- a/web/static/images/emoji/collision.png
+++ b/web/static/images/emoji/collision.png
Binary files differ
diff --git a/web/static/images/emoji/compression.png b/web/static/images/emoji/compression.png
new file mode 100644
index 000000000..08c06264e
--- /dev/null
+++ b/web/static/images/emoji/compression.png
Binary files differ
diff --git a/web/static/images/emoji/computer.png b/web/static/images/emoji/computer.png
index d4d268762..e23340a04 100755..100644
--- a/web/static/images/emoji/computer.png
+++ b/web/static/images/emoji/computer.png
Binary files differ
diff --git a/web/static/images/emoji/confetti_ball.png b/web/static/images/emoji/confetti_ball.png
index bd293e3d8..74c61e434 100755..100644
--- a/web/static/images/emoji/confetti_ball.png
+++ b/web/static/images/emoji/confetti_ball.png
Binary files differ
diff --git a/web/static/images/emoji/confounded.png b/web/static/images/emoji/confounded.png
index 762c3766a..da0e1cad0 100755..100644
--- a/web/static/images/emoji/confounded.png
+++ b/web/static/images/emoji/confounded.png
Binary files differ
diff --git a/web/static/images/emoji/confused.png b/web/static/images/emoji/confused.png
index 8dc494db0..6bb66752f 100755..100644
--- a/web/static/images/emoji/confused.png
+++ b/web/static/images/emoji/confused.png
Binary files differ
diff --git a/web/static/images/emoji/congratulations.png b/web/static/images/emoji/congratulations.png
index 85814e33c..b3ffe6fe4 100755..100644
--- a/web/static/images/emoji/congratulations.png
+++ b/web/static/images/emoji/congratulations.png
Binary files differ
diff --git a/web/static/images/emoji/construction.png b/web/static/images/emoji/construction.png
index 523e9f10b..d29f47b02 100755..100644
--- a/web/static/images/emoji/construction.png
+++ b/web/static/images/emoji/construction.png
Binary files differ
diff --git a/web/static/images/emoji/construction_worker.png b/web/static/images/emoji/construction_worker.png
index 4d6486047..862e51f40 100755..100644
--- a/web/static/images/emoji/construction_worker.png
+++ b/web/static/images/emoji/construction_worker.png
Binary files differ
diff --git a/web/static/images/emoji/control_knobs.png b/web/static/images/emoji/control_knobs.png
new file mode 100644
index 000000000..ab4045342
--- /dev/null
+++ b/web/static/images/emoji/control_knobs.png
Binary files differ
diff --git a/web/static/images/emoji/convenience_store.png b/web/static/images/emoji/convenience_store.png
index 671696c2d..fbfc257ee 100755..100644
--- a/web/static/images/emoji/convenience_store.png
+++ b/web/static/images/emoji/convenience_store.png
Binary files differ
diff --git a/web/static/images/emoji/cookie.png b/web/static/images/emoji/cookie.png
index 653edb258..8eb640e8d 100755..100644
--- a/web/static/images/emoji/cookie.png
+++ b/web/static/images/emoji/cookie.png
Binary files differ
diff --git a/web/static/images/emoji/cool.png b/web/static/images/emoji/cool.png
index 937dcd792..07c22b8c5 100755..100644
--- a/web/static/images/emoji/cool.png
+++ b/web/static/images/emoji/cool.png
Binary files differ
diff --git a/web/static/images/emoji/cop.png b/web/static/images/emoji/cop.png
index 43a5a84f8..818cab806 100755..100644
--- a/web/static/images/emoji/cop.png
+++ b/web/static/images/emoji/cop.png
Binary files differ
diff --git a/web/static/images/emoji/copyright.png b/web/static/images/emoji/copyright.png
index 38493c33f..9872c5b7e 100755..100644
--- a/web/static/images/emoji/copyright.png
+++ b/web/static/images/emoji/copyright.png
Binary files differ
diff --git a/web/static/images/emoji/corn.png b/web/static/images/emoji/corn.png
index fe5d8b128..e5f2304bd 100755..100644
--- a/web/static/images/emoji/corn.png
+++ b/web/static/images/emoji/corn.png
Binary files differ
diff --git a/web/static/images/emoji/couch_and_lamp.png b/web/static/images/emoji/couch_and_lamp.png
new file mode 100644
index 000000000..fe7473eef
--- /dev/null
+++ b/web/static/images/emoji/couch_and_lamp.png
Binary files differ
diff --git a/web/static/images/emoji/couple.png b/web/static/images/emoji/couple.png
index 9e51f40e1..616f8520b 100755..100644
--- a/web/static/images/emoji/couple.png
+++ b/web/static/images/emoji/couple.png
Binary files differ
diff --git a/web/static/images/emoji/couple_with_heart.png b/web/static/images/emoji/couple_with_heart.png
index c503f40a9..44d4e18bd 100755..100644
--- a/web/static/images/emoji/couple_with_heart.png
+++ b/web/static/images/emoji/couple_with_heart.png
Binary files differ
diff --git a/web/static/images/emoji/couplekiss.png b/web/static/images/emoji/couplekiss.png
index d02790822..0280fba18 100755..100644
--- a/web/static/images/emoji/couplekiss.png
+++ b/web/static/images/emoji/couplekiss.png
Binary files differ
diff --git a/web/static/images/emoji/cow.png b/web/static/images/emoji/cow.png
index 12e1ab6c0..15196a069 100755..100644
--- a/web/static/images/emoji/cow.png
+++ b/web/static/images/emoji/cow.png
Binary files differ
diff --git a/web/static/images/emoji/cow2.png b/web/static/images/emoji/cow2.png
index 594c92155..b3767f6c5 100755..100644
--- a/web/static/images/emoji/cow2.png
+++ b/web/static/images/emoji/cow2.png
Binary files differ
diff --git a/web/static/images/emoji/credit_card.png b/web/static/images/emoji/credit_card.png
index be1c1dd30..e41515bb7 100755..100644
--- a/web/static/images/emoji/credit_card.png
+++ b/web/static/images/emoji/credit_card.png
Binary files differ
diff --git a/web/static/images/emoji/crescent_moon.png b/web/static/images/emoji/crescent_moon.png
index afdb450d1..2a0b9f39b 100755..100644
--- a/web/static/images/emoji/crescent_moon.png
+++ b/web/static/images/emoji/crescent_moon.png
Binary files differ
diff --git a/web/static/images/emoji/crocodile.png b/web/static/images/emoji/crocodile.png
index 7435d5ab3..3b53cacf8 100755..100644
--- a/web/static/images/emoji/crocodile.png
+++ b/web/static/images/emoji/crocodile.png
Binary files differ
diff --git a/web/static/images/emoji/crossed_flags.png b/web/static/images/emoji/crossed_flags.png
index 2397bcd0f..5d88b0ad0 100755..100644
--- a/web/static/images/emoji/crossed_flags.png
+++ b/web/static/images/emoji/crossed_flags.png
Binary files differ
diff --git a/web/static/images/emoji/crown.png b/web/static/images/emoji/crown.png
index 39da1d528..54ca7998c 100755..100644
--- a/web/static/images/emoji/crown.png
+++ b/web/static/images/emoji/crown.png
Binary files differ
diff --git a/web/static/images/emoji/cry.png b/web/static/images/emoji/cry.png
index 6d0d9afd2..dd17cbcca 100755..100644
--- a/web/static/images/emoji/cry.png
+++ b/web/static/images/emoji/cry.png
Binary files differ
diff --git a/web/static/images/emoji/crying_cat_face.png b/web/static/images/emoji/crying_cat_face.png
index 42d4c27ca..c467c2198 100755..100644
--- a/web/static/images/emoji/crying_cat_face.png
+++ b/web/static/images/emoji/crying_cat_face.png
Binary files differ
diff --git a/web/static/images/emoji/crystal_ball.png b/web/static/images/emoji/crystal_ball.png
index 6d2c6c42d..d9ee3b4f3 100755..100644
--- a/web/static/images/emoji/crystal_ball.png
+++ b/web/static/images/emoji/crystal_ball.png
Binary files differ
diff --git a/web/static/images/emoji/cupid.png b/web/static/images/emoji/cupid.png
index 498728476..49260219c 100755..100644
--- a/web/static/images/emoji/cupid.png
+++ b/web/static/images/emoji/cupid.png
Binary files differ
diff --git a/web/static/images/emoji/curly_loop.png b/web/static/images/emoji/curly_loop.png
index 7dd841d00..1c7b496c5 100755..100644
--- a/web/static/images/emoji/curly_loop.png
+++ b/web/static/images/emoji/curly_loop.png
Binary files differ
diff --git a/web/static/images/emoji/currency_exchange.png b/web/static/images/emoji/currency_exchange.png
index 6ebebe70a..7cdbde70c 100755..100644
--- a/web/static/images/emoji/currency_exchange.png
+++ b/web/static/images/emoji/currency_exchange.png
Binary files differ
diff --git a/web/static/images/emoji/curry.png b/web/static/images/emoji/curry.png
index 7983c706a..0afd63ca1 100755..100644
--- a/web/static/images/emoji/curry.png
+++ b/web/static/images/emoji/curry.png
Binary files differ
diff --git a/web/static/images/emoji/custard.png b/web/static/images/emoji/custard.png
index 9f843b4c1..44af92a57 100755..100644
--- a/web/static/images/emoji/custard.png
+++ b/web/static/images/emoji/custard.png
Binary files differ
diff --git a/web/static/images/emoji/customs.png b/web/static/images/emoji/customs.png
index 92691e311..8c6811ce7 100755..100644
--- a/web/static/images/emoji/customs.png
+++ b/web/static/images/emoji/customs.png
Binary files differ
diff --git a/web/static/images/emoji/cyclone.png b/web/static/images/emoji/cyclone.png
index 5fd2e4512..bd243229a 100755..100644
--- a/web/static/images/emoji/cyclone.png
+++ b/web/static/images/emoji/cyclone.png
Binary files differ
diff --git a/web/static/images/emoji/dagger_knife.png b/web/static/images/emoji/dagger_knife.png
new file mode 100644
index 000000000..8bfeac95d
--- /dev/null
+++ b/web/static/images/emoji/dagger_knife.png
Binary files differ
diff --git a/web/static/images/emoji/dancer.png b/web/static/images/emoji/dancer.png
index 7a7bf59f1..8e3c67dd2 100755..100644
--- a/web/static/images/emoji/dancer.png
+++ b/web/static/images/emoji/dancer.png
Binary files differ
diff --git a/web/static/images/emoji/dancers.png b/web/static/images/emoji/dancers.png
index 2dfb451a7..8829c0e87 100755..100644
--- a/web/static/images/emoji/dancers.png
+++ b/web/static/images/emoji/dancers.png
Binary files differ
diff --git a/web/static/images/emoji/dango.png b/web/static/images/emoji/dango.png
index 2d042aebe..d679ebc02 100755..100644
--- a/web/static/images/emoji/dango.png
+++ b/web/static/images/emoji/dango.png
Binary files differ
diff --git a/web/static/images/emoji/dark_sunglasses.png b/web/static/images/emoji/dark_sunglasses.png
new file mode 100644
index 000000000..6ed2172a0
--- /dev/null
+++ b/web/static/images/emoji/dark_sunglasses.png
Binary files differ
diff --git a/web/static/images/emoji/dart.png b/web/static/images/emoji/dart.png
index 5f16864cb..527b6a94e 100755..100644
--- a/web/static/images/emoji/dart.png
+++ b/web/static/images/emoji/dart.png
Binary files differ
diff --git a/web/static/images/emoji/dash.png b/web/static/images/emoji/dash.png
index dc2c0a8f4..d58c22281 100755..100644
--- a/web/static/images/emoji/dash.png
+++ b/web/static/images/emoji/dash.png
Binary files differ
diff --git a/web/static/images/emoji/date.png b/web/static/images/emoji/date.png
index 6ad2efa5f..61308e816 100755..100644
--- a/web/static/images/emoji/date.png
+++ b/web/static/images/emoji/date.png
Binary files differ
diff --git a/web/static/images/emoji/de.png b/web/static/images/emoji/de.png
index 16a28548c..168ab43c3 100755..100644
--- a/web/static/images/emoji/de.png
+++ b/web/static/images/emoji/de.png
Binary files differ
diff --git a/web/static/images/emoji/deciduous_tree.png b/web/static/images/emoji/deciduous_tree.png
index 3fdf8c007..1a54ec34b 100755..100644
--- a/web/static/images/emoji/deciduous_tree.png
+++ b/web/static/images/emoji/deciduous_tree.png
Binary files differ
diff --git a/web/static/images/emoji/department_store.png b/web/static/images/emoji/department_store.png
index 68d959c50..bc83c16f6 100755..100644
--- a/web/static/images/emoji/department_store.png
+++ b/web/static/images/emoji/department_store.png
Binary files differ
diff --git a/web/static/images/emoji/derelict_house_building.png b/web/static/images/emoji/derelict_house_building.png
new file mode 100644
index 000000000..316e082d1
--- /dev/null
+++ b/web/static/images/emoji/derelict_house_building.png
Binary files differ
diff --git a/web/static/images/emoji/desert.png b/web/static/images/emoji/desert.png
new file mode 100644
index 000000000..b627c829b
--- /dev/null
+++ b/web/static/images/emoji/desert.png
Binary files differ
diff --git a/web/static/images/emoji/desert_island.png b/web/static/images/emoji/desert_island.png
new file mode 100644
index 000000000..946ef26a5
--- /dev/null
+++ b/web/static/images/emoji/desert_island.png
Binary files differ
diff --git a/web/static/images/emoji/desktop_computer.png b/web/static/images/emoji/desktop_computer.png
new file mode 100644
index 000000000..59fc83484
--- /dev/null
+++ b/web/static/images/emoji/desktop_computer.png
Binary files differ
diff --git a/web/static/images/emoji/diamond_shape_with_a_dot_inside.png b/web/static/images/emoji/diamond_shape_with_a_dot_inside.png
index dfd1098b3..6aec6cb19 100755..100644
--- a/web/static/images/emoji/diamond_shape_with_a_dot_inside.png
+++ b/web/static/images/emoji/diamond_shape_with_a_dot_inside.png
Binary files differ
diff --git a/web/static/images/emoji/diamonds.png b/web/static/images/emoji/diamonds.png
index fe0827758..3e153dbe8 100755..100644
--- a/web/static/images/emoji/diamonds.png
+++ b/web/static/images/emoji/diamonds.png
Binary files differ
diff --git a/web/static/images/emoji/disappointed.png b/web/static/images/emoji/disappointed.png
index 825520087..9643415e6 100755..100644
--- a/web/static/images/emoji/disappointed.png
+++ b/web/static/images/emoji/disappointed.png
Binary files differ
diff --git a/web/static/images/emoji/disappointed_relieved.png b/web/static/images/emoji/disappointed_relieved.png
index fa5f9e7f9..bcea87523 100755..100644
--- a/web/static/images/emoji/disappointed_relieved.png
+++ b/web/static/images/emoji/disappointed_relieved.png
Binary files differ
diff --git a/web/static/images/emoji/dizzy.png b/web/static/images/emoji/dizzy.png
index 3702b6131..b6972196c 100755..100644
--- a/web/static/images/emoji/dizzy.png
+++ b/web/static/images/emoji/dizzy.png
Binary files differ
diff --git a/web/static/images/emoji/dizzy_face.png b/web/static/images/emoji/dizzy_face.png
index 8001d6ff8..a23dc7e31 100755..100644
--- a/web/static/images/emoji/dizzy_face.png
+++ b/web/static/images/emoji/dizzy_face.png
Binary files differ
diff --git a/web/static/images/emoji/do_not_litter.png b/web/static/images/emoji/do_not_litter.png
index 38c7ae7af..c29f7edf6 100755..100644
--- a/web/static/images/emoji/do_not_litter.png
+++ b/web/static/images/emoji/do_not_litter.png
Binary files differ
diff --git a/web/static/images/emoji/dog.png b/web/static/images/emoji/dog.png
index 389a02bf2..3c107deb4 100755..100644
--- a/web/static/images/emoji/dog.png
+++ b/web/static/images/emoji/dog.png
Binary files differ
diff --git a/web/static/images/emoji/dog2.png b/web/static/images/emoji/dog2.png
index c7f6a24ac..7057ffe66 100755..100644
--- a/web/static/images/emoji/dog2.png
+++ b/web/static/images/emoji/dog2.png
Binary files differ
diff --git a/web/static/images/emoji/dollar.png b/web/static/images/emoji/dollar.png
index 63de88495..73843bf91 100755..100644
--- a/web/static/images/emoji/dollar.png
+++ b/web/static/images/emoji/dollar.png
Binary files differ
diff --git a/web/static/images/emoji/dolls.png b/web/static/images/emoji/dolls.png
index 47ce33900..dcd7b9385 100755..100644
--- a/web/static/images/emoji/dolls.png
+++ b/web/static/images/emoji/dolls.png
Binary files differ
diff --git a/web/static/images/emoji/dolphin.png b/web/static/images/emoji/dolphin.png
index 9326077a9..4dde4cc13 100755..100644
--- a/web/static/images/emoji/dolphin.png
+++ b/web/static/images/emoji/dolphin.png
Binary files differ
diff --git a/web/static/images/emoji/donut.png b/web/static/images/emoji/donut.png
deleted file mode 100755
index ccf869129..000000000
--- a/web/static/images/emoji/donut.png
+++ /dev/null
Binary files differ
diff --git a/web/static/images/emoji/door.png b/web/static/images/emoji/door.png
index 83c819ae4..4c8695fee 100755..100644
--- a/web/static/images/emoji/door.png
+++ b/web/static/images/emoji/door.png
Binary files differ
diff --git a/web/static/images/emoji/doughnut.png b/web/static/images/emoji/doughnut.png
index ccf869129..b415c96bc 100755..100644
--- a/web/static/images/emoji/doughnut.png
+++ b/web/static/images/emoji/doughnut.png
Binary files differ
diff --git a/web/static/images/emoji/dove_of_peace.png b/web/static/images/emoji/dove_of_peace.png
new file mode 100644
index 000000000..e54bfc2b1
--- /dev/null
+++ b/web/static/images/emoji/dove_of_peace.png
Binary files differ
diff --git a/web/static/images/emoji/dragon.png b/web/static/images/emoji/dragon.png
index 88d4784b8..b5b635770 100755..100644
--- a/web/static/images/emoji/dragon.png
+++ b/web/static/images/emoji/dragon.png
Binary files differ
diff --git a/web/static/images/emoji/dragon_face.png b/web/static/images/emoji/dragon_face.png
index e5e556bd1..aba3bd471 100755..100644
--- a/web/static/images/emoji/dragon_face.png
+++ b/web/static/images/emoji/dragon_face.png
Binary files differ
diff --git a/web/static/images/emoji/dress.png b/web/static/images/emoji/dress.png
index 6434e2e2f..512fe8bfe 100755..100644
--- a/web/static/images/emoji/dress.png
+++ b/web/static/images/emoji/dress.png
Binary files differ
diff --git a/web/static/images/emoji/dromedary_camel.png b/web/static/images/emoji/dromedary_camel.png
index c8c7b9ffa..e881a8b5f 100755..100644
--- a/web/static/images/emoji/dromedary_camel.png
+++ b/web/static/images/emoji/dromedary_camel.png
Binary files differ
diff --git a/web/static/images/emoji/droplet.png b/web/static/images/emoji/droplet.png
index cae7f4951..074982362 100755..100644
--- a/web/static/images/emoji/droplet.png
+++ b/web/static/images/emoji/droplet.png
Binary files differ
diff --git a/web/static/images/emoji/dvd.png b/web/static/images/emoji/dvd.png
index 363c83d01..6f7b85774 100755..100644
--- a/web/static/images/emoji/dvd.png
+++ b/web/static/images/emoji/dvd.png
Binary files differ
diff --git a/web/static/images/emoji/e-mail.png b/web/static/images/emoji/e-mail.png
index 176a8e1e8..838ee67ed 100755..100644
--- a/web/static/images/emoji/e-mail.png
+++ b/web/static/images/emoji/e-mail.png
Binary files differ
diff --git a/web/static/images/emoji/ear.png b/web/static/images/emoji/ear.png
index 2bbbf10c9..a29807228 100755..100644
--- a/web/static/images/emoji/ear.png
+++ b/web/static/images/emoji/ear.png
Binary files differ
diff --git a/web/static/images/emoji/ear_of_rice.png b/web/static/images/emoji/ear_of_rice.png
index a9bba5c2c..9d3f454f8 100755..100644
--- a/web/static/images/emoji/ear_of_rice.png
+++ b/web/static/images/emoji/ear_of_rice.png
Binary files differ
diff --git a/web/static/images/emoji/earth_africa.png b/web/static/images/emoji/earth_africa.png
index 44ce5ecb6..a4bbace54 100755..100644
--- a/web/static/images/emoji/earth_africa.png
+++ b/web/static/images/emoji/earth_africa.png
Binary files differ
diff --git a/web/static/images/emoji/earth_americas.png b/web/static/images/emoji/earth_americas.png
index 97d717671..13a307f3c 100755..100644
--- a/web/static/images/emoji/earth_americas.png
+++ b/web/static/images/emoji/earth_americas.png
Binary files differ
diff --git a/web/static/images/emoji/earth_asia.png b/web/static/images/emoji/earth_asia.png
index 95ec357ca..908e483fa 100755..100644
--- a/web/static/images/emoji/earth_asia.png
+++ b/web/static/images/emoji/earth_asia.png
Binary files differ
diff --git a/web/static/images/emoji/egg.png b/web/static/images/emoji/egg.png
index c3de6ae4e..b5c090a17 100755..100644
--- a/web/static/images/emoji/egg.png
+++ b/web/static/images/emoji/egg.png
Binary files differ
diff --git a/web/static/images/emoji/eggplant.png b/web/static/images/emoji/eggplant.png
index 66f25fce4..75c902569 100755..100644
--- a/web/static/images/emoji/eggplant.png
+++ b/web/static/images/emoji/eggplant.png
Binary files differ
diff --git a/web/static/images/emoji/eight.png b/web/static/images/emoji/eight.png
index 7bdb42232..48c5ca813 100755..100644
--- a/web/static/images/emoji/eight.png
+++ b/web/static/images/emoji/eight.png
Binary files differ
diff --git a/web/static/images/emoji/eight_pointed_black_star.png b/web/static/images/emoji/eight_pointed_black_star.png
index 2420a7768..ea1ba7edb 100755..100644
--- a/web/static/images/emoji/eight_pointed_black_star.png
+++ b/web/static/images/emoji/eight_pointed_black_star.png
Binary files differ
diff --git a/web/static/images/emoji/eight_spoked_asterisk.png b/web/static/images/emoji/eight_spoked_asterisk.png
index 946a20333..aaa681d4f 100755..100644
--- a/web/static/images/emoji/eight_spoked_asterisk.png
+++ b/web/static/images/emoji/eight_spoked_asterisk.png
Binary files differ
diff --git a/web/static/images/emoji/electric_plug.png b/web/static/images/emoji/electric_plug.png
index 2837bab4f..e15d4d5ad 100755..100644
--- a/web/static/images/emoji/electric_plug.png
+++ b/web/static/images/emoji/electric_plug.png
Binary files differ
diff --git a/web/static/images/emoji/elephant.png b/web/static/images/emoji/elephant.png
index 5ca04570e..af079ec4d 100755..100644
--- a/web/static/images/emoji/elephant.png
+++ b/web/static/images/emoji/elephant.png
Binary files differ
diff --git a/web/static/images/emoji/email.png b/web/static/images/emoji/email.png
index 0e01fd5f0..c0bb4ebfd 100755..100644
--- a/web/static/images/emoji/email.png
+++ b/web/static/images/emoji/email.png
Binary files differ
diff --git a/web/static/images/emoji/end.png b/web/static/images/emoji/end.png
index 61a4399ad..03bfb2869 100755..100644
--- a/web/static/images/emoji/end.png
+++ b/web/static/images/emoji/end.png
Binary files differ
diff --git a/web/static/images/emoji/envelope.png b/web/static/images/emoji/envelope.png
index 3631861bb..c0bb4ebfd 100755..100644
--- a/web/static/images/emoji/envelope.png
+++ b/web/static/images/emoji/envelope.png
Binary files differ
diff --git a/web/static/images/emoji/envelope_with_arrow.png b/web/static/images/emoji/envelope_with_arrow.png
new file mode 100644
index 000000000..373cd8f0f
--- /dev/null
+++ b/web/static/images/emoji/envelope_with_arrow.png
Binary files differ
diff --git a/web/static/images/emoji/es.png b/web/static/images/emoji/es.png
index 71b30bff3..16a772cd1 100755..100644
--- a/web/static/images/emoji/es.png
+++ b/web/static/images/emoji/es.png
Binary files differ
diff --git a/web/static/images/emoji/euro.png b/web/static/images/emoji/euro.png
index 1c5904b71..4efcecc3c 100755..100644
--- a/web/static/images/emoji/euro.png
+++ b/web/static/images/emoji/euro.png
Binary files differ
diff --git a/web/static/images/emoji/european_castle.png b/web/static/images/emoji/european_castle.png
index 8229b8a8a..35cdcf722 100755..100644
--- a/web/static/images/emoji/european_castle.png
+++ b/web/static/images/emoji/european_castle.png
Binary files differ
diff --git a/web/static/images/emoji/european_post_office.png b/web/static/images/emoji/european_post_office.png
index 0f65b1453..b1cc0ddb8 100755..100644
--- a/web/static/images/emoji/european_post_office.png
+++ b/web/static/images/emoji/european_post_office.png
Binary files differ
diff --git a/web/static/images/emoji/evergreen_tree.png b/web/static/images/emoji/evergreen_tree.png
index ae8ad1037..dd88a6934 100755..100644
--- a/web/static/images/emoji/evergreen_tree.png
+++ b/web/static/images/emoji/evergreen_tree.png
Binary files differ
diff --git a/web/static/images/emoji/exclamation.png b/web/static/images/emoji/exclamation.png
index 77bbdeabc..b8fca78bc 100755..100644
--- a/web/static/images/emoji/exclamation.png
+++ b/web/static/images/emoji/exclamation.png
Binary files differ
diff --git a/web/static/images/emoji/expressionless.png b/web/static/images/emoji/expressionless.png
index 913ff4e2f..404129c98 100755..100644
--- a/web/static/images/emoji/expressionless.png
+++ b/web/static/images/emoji/expressionless.png
Binary files differ
diff --git a/web/static/images/emoji/eye.png b/web/static/images/emoji/eye.png
new file mode 100644
index 000000000..66182c9f1
--- /dev/null
+++ b/web/static/images/emoji/eye.png
Binary files differ
diff --git a/web/static/images/emoji/eyeglasses.png b/web/static/images/emoji/eyeglasses.png
index a3cf75a27..f1f4612ba 100755..100644
--- a/web/static/images/emoji/eyeglasses.png
+++ b/web/static/images/emoji/eyeglasses.png
Binary files differ
diff --git a/web/static/images/emoji/eyes.png b/web/static/images/emoji/eyes.png
index 1ac24a615..d9a6163f4 100755..100644
--- a/web/static/images/emoji/eyes.png
+++ b/web/static/images/emoji/eyes.png
Binary files differ
diff --git a/web/static/images/emoji/facepunch.png b/web/static/images/emoji/facepunch.png
index 277047b7c..7d10b3eda 100755..100644
--- a/web/static/images/emoji/facepunch.png
+++ b/web/static/images/emoji/facepunch.png
Binary files differ
diff --git a/web/static/images/emoji/factory.png b/web/static/images/emoji/factory.png
index 640463479..e2d70133b 100755..100644
--- a/web/static/images/emoji/factory.png
+++ b/web/static/images/emoji/factory.png
Binary files differ
diff --git a/web/static/images/emoji/fallen_leaf.png b/web/static/images/emoji/fallen_leaf.png
index d49f9c175..430ac0297 100755..100644
--- a/web/static/images/emoji/fallen_leaf.png
+++ b/web/static/images/emoji/fallen_leaf.png
Binary files differ
diff --git a/web/static/images/emoji/family.png b/web/static/images/emoji/family.png
index b4b365f3a..e0d81ddb7 100755..100644
--- a/web/static/images/emoji/family.png
+++ b/web/static/images/emoji/family.png
Binary files differ
diff --git a/web/static/images/emoji/fast_forward.png b/web/static/images/emoji/fast_forward.png
index 8830e146e..dda9bec2a 100755..100644
--- a/web/static/images/emoji/fast_forward.png
+++ b/web/static/images/emoji/fast_forward.png
Binary files differ
diff --git a/web/static/images/emoji/fax.png b/web/static/images/emoji/fax.png
index 62be2c958..10f81dad1 100755..100644
--- a/web/static/images/emoji/fax.png
+++ b/web/static/images/emoji/fax.png
Binary files differ
diff --git a/web/static/images/emoji/fearful.png b/web/static/images/emoji/fearful.png
index 513fce47b..4ac78c208 100755..100644
--- a/web/static/images/emoji/fearful.png
+++ b/web/static/images/emoji/fearful.png
Binary files differ
diff --git a/web/static/images/emoji/feelsgood.png b/web/static/images/emoji/feelsgood.png
index 361f969bc..361f969bc 100755..100644
--- a/web/static/images/emoji/feelsgood.png
+++ b/web/static/images/emoji/feelsgood.png
Binary files differ
diff --git a/web/static/images/emoji/feet.png b/web/static/images/emoji/feet.png
index 1b0147b1d..b36eba864 100755..100644
--- a/web/static/images/emoji/feet.png
+++ b/web/static/images/emoji/feet.png
Binary files differ
diff --git a/web/static/images/emoji/ferris_wheel.png b/web/static/images/emoji/ferris_wheel.png
index 54a1dcfa1..56bfd87fb 100755..100644
--- a/web/static/images/emoji/ferris_wheel.png
+++ b/web/static/images/emoji/ferris_wheel.png
Binary files differ
diff --git a/web/static/images/emoji/file_cabinet.png b/web/static/images/emoji/file_cabinet.png
new file mode 100644
index 000000000..e45c65729
--- /dev/null
+++ b/web/static/images/emoji/file_cabinet.png
Binary files differ
diff --git a/web/static/images/emoji/file_folder.png b/web/static/images/emoji/file_folder.png
index 4d8bebf8a..17adcfd26 100755..100644
--- a/web/static/images/emoji/file_folder.png
+++ b/web/static/images/emoji/file_folder.png
Binary files differ
diff --git a/web/static/images/emoji/film_frames.png b/web/static/images/emoji/film_frames.png
new file mode 100644
index 000000000..d2b9082bc
--- /dev/null
+++ b/web/static/images/emoji/film_frames.png
Binary files differ
diff --git a/web/static/images/emoji/film_projector.png b/web/static/images/emoji/film_projector.png
new file mode 100644
index 000000000..46800d29d
--- /dev/null
+++ b/web/static/images/emoji/film_projector.png
Binary files differ
diff --git a/web/static/images/emoji/finnadie.png b/web/static/images/emoji/finnadie.png
index bfc5a0d93..bfc5a0d93 100755..100644
--- a/web/static/images/emoji/finnadie.png
+++ b/web/static/images/emoji/finnadie.png
Binary files differ
diff --git a/web/static/images/emoji/fire.png b/web/static/images/emoji/fire.png
index f2a3149bb..3149ed675 100755..100644
--- a/web/static/images/emoji/fire.png
+++ b/web/static/images/emoji/fire.png
Binary files differ
diff --git a/web/static/images/emoji/fire_engine.png b/web/static/images/emoji/fire_engine.png
index 9e6c59c99..0336bfdf5 100755..100644
--- a/web/static/images/emoji/fire_engine.png
+++ b/web/static/images/emoji/fire_engine.png
Binary files differ
diff --git a/web/static/images/emoji/fireworks.png b/web/static/images/emoji/fireworks.png
index b4eccd577..8e081a718 100755..100644
--- a/web/static/images/emoji/fireworks.png
+++ b/web/static/images/emoji/fireworks.png
Binary files differ
diff --git a/web/static/images/emoji/first_quarter_moon.png b/web/static/images/emoji/first_quarter_moon.png
index f38c23693..14734a42c 100755..100644
--- a/web/static/images/emoji/first_quarter_moon.png
+++ b/web/static/images/emoji/first_quarter_moon.png
Binary files differ
diff --git a/web/static/images/emoji/first_quarter_moon_with_face.png b/web/static/images/emoji/first_quarter_moon_with_face.png
index 85ae2ce72..8f10b3cfe 100755..100644
--- a/web/static/images/emoji/first_quarter_moon_with_face.png
+++ b/web/static/images/emoji/first_quarter_moon_with_face.png
Binary files differ
diff --git a/web/static/images/emoji/fish.png b/web/static/images/emoji/fish.png
index 90bdda2c9..cb7b896d6 100755..100644
--- a/web/static/images/emoji/fish.png
+++ b/web/static/images/emoji/fish.png
Binary files differ
diff --git a/web/static/images/emoji/fish_cake.png b/web/static/images/emoji/fish_cake.png
index a8f22614d..6ff94bc36 100755..100644
--- a/web/static/images/emoji/fish_cake.png
+++ b/web/static/images/emoji/fish_cake.png
Binary files differ
diff --git a/web/static/images/emoji/fishing_pole_and_fish.png b/web/static/images/emoji/fishing_pole_and_fish.png
index d84609c3b..270a011dd 100755..100644
--- a/web/static/images/emoji/fishing_pole_and_fish.png
+++ b/web/static/images/emoji/fishing_pole_and_fish.png
Binary files differ
diff --git a/web/static/images/emoji/fist.png b/web/static/images/emoji/fist.png
index ecc8874c2..97e5b0639 100755..100644
--- a/web/static/images/emoji/fist.png
+++ b/web/static/images/emoji/fist.png
Binary files differ
diff --git a/web/static/images/emoji/five.png b/web/static/images/emoji/five.png
index 794321aa2..9b527aeb7 100755..100644
--- a/web/static/images/emoji/five.png
+++ b/web/static/images/emoji/five.png
Binary files differ
diff --git a/web/static/images/emoji/flag-ac.png b/web/static/images/emoji/flag-ac.png
new file mode 100644
index 000000000..56115ba78
--- /dev/null
+++ b/web/static/images/emoji/flag-ac.png
Binary files differ
diff --git a/web/static/images/emoji/flag-ad.png b/web/static/images/emoji/flag-ad.png
new file mode 100644
index 000000000..d3fabc4b0
--- /dev/null
+++ b/web/static/images/emoji/flag-ad.png
Binary files differ
diff --git a/web/static/images/emoji/flag-ae.png b/web/static/images/emoji/flag-ae.png
new file mode 100644
index 000000000..57cade93b
--- /dev/null
+++ b/web/static/images/emoji/flag-ae.png
Binary files differ
diff --git a/web/static/images/emoji/flag-af.png b/web/static/images/emoji/flag-af.png
new file mode 100644
index 000000000..af7e886df
--- /dev/null
+++ b/web/static/images/emoji/flag-af.png
Binary files differ
diff --git a/web/static/images/emoji/flag-ag.png b/web/static/images/emoji/flag-ag.png
new file mode 100644
index 000000000..9e2dc805e
--- /dev/null
+++ b/web/static/images/emoji/flag-ag.png
Binary files differ
diff --git a/web/static/images/emoji/flag-ai.png b/web/static/images/emoji/flag-ai.png
new file mode 100644
index 000000000..2046a5a83
--- /dev/null
+++ b/web/static/images/emoji/flag-ai.png
Binary files differ
diff --git a/web/static/images/emoji/flag-al.png b/web/static/images/emoji/flag-al.png
new file mode 100644
index 000000000..0c76f4af4
--- /dev/null
+++ b/web/static/images/emoji/flag-al.png
Binary files differ
diff --git a/web/static/images/emoji/flag-am.png b/web/static/images/emoji/flag-am.png
new file mode 100644
index 000000000..1e39fe1fe
--- /dev/null
+++ b/web/static/images/emoji/flag-am.png
Binary files differ
diff --git a/web/static/images/emoji/flag-ao.png b/web/static/images/emoji/flag-ao.png
new file mode 100644
index 000000000..01a469e9e
--- /dev/null
+++ b/web/static/images/emoji/flag-ao.png
Binary files differ
diff --git a/web/static/images/emoji/flag-ar.png b/web/static/images/emoji/flag-ar.png
new file mode 100644
index 000000000..603697bad
--- /dev/null
+++ b/web/static/images/emoji/flag-ar.png
Binary files differ
diff --git a/web/static/images/emoji/flag-at.png b/web/static/images/emoji/flag-at.png
new file mode 100644
index 000000000..38988f737
--- /dev/null
+++ b/web/static/images/emoji/flag-at.png
Binary files differ
diff --git a/web/static/images/emoji/flag-au.png b/web/static/images/emoji/flag-au.png
new file mode 100644
index 000000000..fdc448c91
--- /dev/null
+++ b/web/static/images/emoji/flag-au.png
Binary files differ
diff --git a/web/static/images/emoji/flag-aw.png b/web/static/images/emoji/flag-aw.png
new file mode 100644
index 000000000..fda4d0b19
--- /dev/null
+++ b/web/static/images/emoji/flag-aw.png
Binary files differ
diff --git a/web/static/images/emoji/flag-az.png b/web/static/images/emoji/flag-az.png
new file mode 100644
index 000000000..3efb55bfc
--- /dev/null
+++ b/web/static/images/emoji/flag-az.png
Binary files differ
diff --git a/web/static/images/emoji/flag-ba.png b/web/static/images/emoji/flag-ba.png
new file mode 100644
index 000000000..47028b1f2
--- /dev/null
+++ b/web/static/images/emoji/flag-ba.png
Binary files differ
diff --git a/web/static/images/emoji/flag-bb.png b/web/static/images/emoji/flag-bb.png
new file mode 100644
index 000000000..8bfb6fcb0
--- /dev/null
+++ b/web/static/images/emoji/flag-bb.png
Binary files differ
diff --git a/web/static/images/emoji/flag-bd.png b/web/static/images/emoji/flag-bd.png
new file mode 100644
index 000000000..a4b7928c8
--- /dev/null
+++ b/web/static/images/emoji/flag-bd.png
Binary files differ
diff --git a/web/static/images/emoji/flag-be.png b/web/static/images/emoji/flag-be.png
new file mode 100644
index 000000000..f996f6fc0
--- /dev/null
+++ b/web/static/images/emoji/flag-be.png
Binary files differ
diff --git a/web/static/images/emoji/flag-bf.png b/web/static/images/emoji/flag-bf.png
new file mode 100644
index 000000000..185eb5a92
--- /dev/null
+++ b/web/static/images/emoji/flag-bf.png
Binary files differ
diff --git a/web/static/images/emoji/flag-bg.png b/web/static/images/emoji/flag-bg.png
new file mode 100644
index 000000000..849c68a22
--- /dev/null
+++ b/web/static/images/emoji/flag-bg.png
Binary files differ
diff --git a/web/static/images/emoji/flag-bh.png b/web/static/images/emoji/flag-bh.png
new file mode 100644
index 000000000..b0cabb344
--- /dev/null
+++ b/web/static/images/emoji/flag-bh.png
Binary files differ
diff --git a/web/static/images/emoji/flag-bi.png b/web/static/images/emoji/flag-bi.png
new file mode 100644
index 000000000..b2de6ba9d
--- /dev/null
+++ b/web/static/images/emoji/flag-bi.png
Binary files differ
diff --git a/web/static/images/emoji/flag-bj.png b/web/static/images/emoji/flag-bj.png
new file mode 100644
index 000000000..6023c7286
--- /dev/null
+++ b/web/static/images/emoji/flag-bj.png
Binary files differ
diff --git a/web/static/images/emoji/flag-bm.png b/web/static/images/emoji/flag-bm.png
new file mode 100644
index 000000000..cce7665e5
--- /dev/null
+++ b/web/static/images/emoji/flag-bm.png
Binary files differ
diff --git a/web/static/images/emoji/flag-bn.png b/web/static/images/emoji/flag-bn.png
new file mode 100644
index 000000000..37ffaaf4a
--- /dev/null
+++ b/web/static/images/emoji/flag-bn.png
Binary files differ
diff --git a/web/static/images/emoji/flag-bo.png b/web/static/images/emoji/flag-bo.png
new file mode 100644
index 000000000..9e7b9bd6d
--- /dev/null
+++ b/web/static/images/emoji/flag-bo.png
Binary files differ
diff --git a/web/static/images/emoji/flag-br.png b/web/static/images/emoji/flag-br.png
new file mode 100644
index 000000000..1218801ec
--- /dev/null
+++ b/web/static/images/emoji/flag-br.png
Binary files differ
diff --git a/web/static/images/emoji/flag-bs.png b/web/static/images/emoji/flag-bs.png
new file mode 100644
index 000000000..56304afc5
--- /dev/null
+++ b/web/static/images/emoji/flag-bs.png
Binary files differ
diff --git a/web/static/images/emoji/flag-bt.png b/web/static/images/emoji/flag-bt.png
new file mode 100644
index 000000000..5419aeeb3
--- /dev/null
+++ b/web/static/images/emoji/flag-bt.png
Binary files differ
diff --git a/web/static/images/emoji/flag-bw.png b/web/static/images/emoji/flag-bw.png
new file mode 100644
index 000000000..b82b4e244
--- /dev/null
+++ b/web/static/images/emoji/flag-bw.png
Binary files differ
diff --git a/web/static/images/emoji/flag-by.png b/web/static/images/emoji/flag-by.png
new file mode 100644
index 000000000..fbf36a528
--- /dev/null
+++ b/web/static/images/emoji/flag-by.png
Binary files differ
diff --git a/web/static/images/emoji/flag-bz.png b/web/static/images/emoji/flag-bz.png
new file mode 100644
index 000000000..4e300a7a9
--- /dev/null
+++ b/web/static/images/emoji/flag-bz.png
Binary files differ
diff --git a/web/static/images/emoji/flag-ca.png b/web/static/images/emoji/flag-ca.png
new file mode 100644
index 000000000..2838b5e82
--- /dev/null
+++ b/web/static/images/emoji/flag-ca.png
Binary files differ
diff --git a/web/static/images/emoji/flag-cd.png b/web/static/images/emoji/flag-cd.png
new file mode 100644
index 000000000..b7620b487
--- /dev/null
+++ b/web/static/images/emoji/flag-cd.png
Binary files differ
diff --git a/web/static/images/emoji/flag-cf.png b/web/static/images/emoji/flag-cf.png
new file mode 100644
index 000000000..32accc631
--- /dev/null
+++ b/web/static/images/emoji/flag-cf.png
Binary files differ
diff --git a/web/static/images/emoji/flag-cg.png b/web/static/images/emoji/flag-cg.png
new file mode 100644
index 000000000..51d0cb55b
--- /dev/null
+++ b/web/static/images/emoji/flag-cg.png
Binary files differ
diff --git a/web/static/images/emoji/flag-ch.png b/web/static/images/emoji/flag-ch.png
new file mode 100644
index 000000000..53f7c0496
--- /dev/null
+++ b/web/static/images/emoji/flag-ch.png
Binary files differ
diff --git a/web/static/images/emoji/flag-ci.png b/web/static/images/emoji/flag-ci.png
new file mode 100644
index 000000000..3a1fb1946
--- /dev/null
+++ b/web/static/images/emoji/flag-ci.png
Binary files differ
diff --git a/web/static/images/emoji/flag-cl.png b/web/static/images/emoji/flag-cl.png
new file mode 100644
index 000000000..ebbf710d2
--- /dev/null
+++ b/web/static/images/emoji/flag-cl.png
Binary files differ
diff --git a/web/static/images/emoji/flag-cm.png b/web/static/images/emoji/flag-cm.png
new file mode 100644
index 000000000..71024ac1c
--- /dev/null
+++ b/web/static/images/emoji/flag-cm.png
Binary files differ
diff --git a/web/static/images/emoji/flag-cn.png b/web/static/images/emoji/flag-cn.png
new file mode 100644
index 000000000..0151923f3
--- /dev/null
+++ b/web/static/images/emoji/flag-cn.png
Binary files differ
diff --git a/web/static/images/emoji/flag-co.png b/web/static/images/emoji/flag-co.png
new file mode 100644
index 000000000..b64536ac3
--- /dev/null
+++ b/web/static/images/emoji/flag-co.png
Binary files differ
diff --git a/web/static/images/emoji/flag-cr.png b/web/static/images/emoji/flag-cr.png
new file mode 100644
index 000000000..74612a90e
--- /dev/null
+++ b/web/static/images/emoji/flag-cr.png
Binary files differ
diff --git a/web/static/images/emoji/flag-cu.png b/web/static/images/emoji/flag-cu.png
new file mode 100644
index 000000000..37a9cc10b
--- /dev/null
+++ b/web/static/images/emoji/flag-cu.png
Binary files differ
diff --git a/web/static/images/emoji/flag-cv.png b/web/static/images/emoji/flag-cv.png
new file mode 100644
index 000000000..7a6a41e90
--- /dev/null
+++ b/web/static/images/emoji/flag-cv.png
Binary files differ
diff --git a/web/static/images/emoji/flag-cy.png b/web/static/images/emoji/flag-cy.png
new file mode 100644
index 000000000..4f593449a
--- /dev/null
+++ b/web/static/images/emoji/flag-cy.png
Binary files differ
diff --git a/web/static/images/emoji/flag-cz.png b/web/static/images/emoji/flag-cz.png
new file mode 100644
index 000000000..aa9a40c74
--- /dev/null
+++ b/web/static/images/emoji/flag-cz.png
Binary files differ
diff --git a/web/static/images/emoji/flag-de.png b/web/static/images/emoji/flag-de.png
new file mode 100644
index 000000000..168ab43c3
--- /dev/null
+++ b/web/static/images/emoji/flag-de.png
Binary files differ
diff --git a/web/static/images/emoji/flag-dj.png b/web/static/images/emoji/flag-dj.png
new file mode 100644
index 000000000..ba0833714
--- /dev/null
+++ b/web/static/images/emoji/flag-dj.png
Binary files differ
diff --git a/web/static/images/emoji/flag-dk.png b/web/static/images/emoji/flag-dk.png
new file mode 100644
index 000000000..2e6b7a624
--- /dev/null
+++ b/web/static/images/emoji/flag-dk.png
Binary files differ
diff --git a/web/static/images/emoji/flag-dm.png b/web/static/images/emoji/flag-dm.png
new file mode 100644
index 000000000..1b90463e5
--- /dev/null
+++ b/web/static/images/emoji/flag-dm.png
Binary files differ
diff --git a/web/static/images/emoji/flag-do.png b/web/static/images/emoji/flag-do.png
new file mode 100644
index 000000000..d5c1ac5ba
--- /dev/null
+++ b/web/static/images/emoji/flag-do.png
Binary files differ
diff --git a/web/static/images/emoji/flag-dz.png b/web/static/images/emoji/flag-dz.png
new file mode 100644
index 000000000..a778a7995
--- /dev/null
+++ b/web/static/images/emoji/flag-dz.png
Binary files differ
diff --git a/web/static/images/emoji/flag-ec.png b/web/static/images/emoji/flag-ec.png
new file mode 100644
index 000000000..7f40f138d
--- /dev/null
+++ b/web/static/images/emoji/flag-ec.png
Binary files differ
diff --git a/web/static/images/emoji/flag-ee.png b/web/static/images/emoji/flag-ee.png
new file mode 100644
index 000000000..1aa45dc2a
--- /dev/null
+++ b/web/static/images/emoji/flag-ee.png
Binary files differ
diff --git a/web/static/images/emoji/flag-eg.png b/web/static/images/emoji/flag-eg.png
new file mode 100644
index 000000000..5904bfac9
--- /dev/null
+++ b/web/static/images/emoji/flag-eg.png
Binary files differ
diff --git a/web/static/images/emoji/flag-eh.png b/web/static/images/emoji/flag-eh.png
new file mode 100644
index 000000000..5c1bf6134
--- /dev/null
+++ b/web/static/images/emoji/flag-eh.png
Binary files differ
diff --git a/web/static/images/emoji/flag-er.png b/web/static/images/emoji/flag-er.png
new file mode 100644
index 000000000..fa4f25eed
--- /dev/null
+++ b/web/static/images/emoji/flag-er.png
Binary files differ
diff --git a/web/static/images/emoji/flag-es.png b/web/static/images/emoji/flag-es.png
new file mode 100644
index 000000000..16a772cd1
--- /dev/null
+++ b/web/static/images/emoji/flag-es.png
Binary files differ
diff --git a/web/static/images/emoji/flag-et.png b/web/static/images/emoji/flag-et.png
new file mode 100644
index 000000000..4833e8431
--- /dev/null
+++ b/web/static/images/emoji/flag-et.png
Binary files differ
diff --git a/web/static/images/emoji/flag-fi.png b/web/static/images/emoji/flag-fi.png
new file mode 100644
index 000000000..b2a5c3d24
--- /dev/null
+++ b/web/static/images/emoji/flag-fi.png
Binary files differ
diff --git a/web/static/images/emoji/flag-fj.png b/web/static/images/emoji/flag-fj.png
new file mode 100644
index 000000000..a7a731e6f
--- /dev/null
+++ b/web/static/images/emoji/flag-fj.png
Binary files differ
diff --git a/web/static/images/emoji/flag-fk.png b/web/static/images/emoji/flag-fk.png
new file mode 100644
index 000000000..c4562eaa6
--- /dev/null
+++ b/web/static/images/emoji/flag-fk.png
Binary files differ
diff --git a/web/static/images/emoji/flag-fm.png b/web/static/images/emoji/flag-fm.png
new file mode 100644
index 000000000..42fe76312
--- /dev/null
+++ b/web/static/images/emoji/flag-fm.png
Binary files differ
diff --git a/web/static/images/emoji/flag-fo.png b/web/static/images/emoji/flag-fo.png
new file mode 100644
index 000000000..e9d8e4cf4
--- /dev/null
+++ b/web/static/images/emoji/flag-fo.png
Binary files differ
diff --git a/web/static/images/emoji/flag-fr.png b/web/static/images/emoji/flag-fr.png
new file mode 100644
index 000000000..14271f059
--- /dev/null
+++ b/web/static/images/emoji/flag-fr.png
Binary files differ
diff --git a/web/static/images/emoji/flag-ga.png b/web/static/images/emoji/flag-ga.png
new file mode 100644
index 000000000..4a3b5ccf9
--- /dev/null
+++ b/web/static/images/emoji/flag-ga.png
Binary files differ
diff --git a/web/static/images/emoji/flag-gb.png b/web/static/images/emoji/flag-gb.png
new file mode 100644
index 000000000..61c03f759
--- /dev/null
+++ b/web/static/images/emoji/flag-gb.png
Binary files differ
diff --git a/web/static/images/emoji/flag-gd.png b/web/static/images/emoji/flag-gd.png
new file mode 100644
index 000000000..4f9dc82d7
--- /dev/null
+++ b/web/static/images/emoji/flag-gd.png
Binary files differ
diff --git a/web/static/images/emoji/flag-ge.png b/web/static/images/emoji/flag-ge.png
new file mode 100644
index 000000000..1fe16f968
--- /dev/null
+++ b/web/static/images/emoji/flag-ge.png
Binary files differ
diff --git a/web/static/images/emoji/flag-gh.png b/web/static/images/emoji/flag-gh.png
new file mode 100644
index 000000000..0aadf4db2
--- /dev/null
+++ b/web/static/images/emoji/flag-gh.png
Binary files differ
diff --git a/web/static/images/emoji/flag-gi.png b/web/static/images/emoji/flag-gi.png
new file mode 100644
index 000000000..e95abe51f
--- /dev/null
+++ b/web/static/images/emoji/flag-gi.png
Binary files differ
diff --git a/web/static/images/emoji/flag-gl.png b/web/static/images/emoji/flag-gl.png
new file mode 100644
index 000000000..76708a55f
--- /dev/null
+++ b/web/static/images/emoji/flag-gl.png
Binary files differ
diff --git a/web/static/images/emoji/flag-gm.png b/web/static/images/emoji/flag-gm.png
new file mode 100644
index 000000000..c5a72895f
--- /dev/null
+++ b/web/static/images/emoji/flag-gm.png
Binary files differ
diff --git a/web/static/images/emoji/flag-gn.png b/web/static/images/emoji/flag-gn.png
new file mode 100644
index 000000000..fdd5c2d14
--- /dev/null
+++ b/web/static/images/emoji/flag-gn.png
Binary files differ
diff --git a/web/static/images/emoji/flag-gq.png b/web/static/images/emoji/flag-gq.png
new file mode 100644
index 000000000..7fc7c86c8
--- /dev/null
+++ b/web/static/images/emoji/flag-gq.png
Binary files differ
diff --git a/web/static/images/emoji/flag-gr.png b/web/static/images/emoji/flag-gr.png
new file mode 100644
index 000000000..091f1ab07
--- /dev/null
+++ b/web/static/images/emoji/flag-gr.png
Binary files differ
diff --git a/web/static/images/emoji/flag-gt.png b/web/static/images/emoji/flag-gt.png
new file mode 100644
index 000000000..66437d0de
--- /dev/null
+++ b/web/static/images/emoji/flag-gt.png
Binary files differ
diff --git a/web/static/images/emoji/flag-gu.png b/web/static/images/emoji/flag-gu.png
new file mode 100644
index 000000000..a4d2024b1
--- /dev/null
+++ b/web/static/images/emoji/flag-gu.png
Binary files differ
diff --git a/web/static/images/emoji/flag-gw.png b/web/static/images/emoji/flag-gw.png
new file mode 100644
index 000000000..a70abe908
--- /dev/null
+++ b/web/static/images/emoji/flag-gw.png
Binary files differ
diff --git a/web/static/images/emoji/flag-gy.png b/web/static/images/emoji/flag-gy.png
new file mode 100644
index 000000000..2cc8ecaab
--- /dev/null
+++ b/web/static/images/emoji/flag-gy.png
Binary files differ
diff --git a/web/static/images/emoji/flag-hk.png b/web/static/images/emoji/flag-hk.png
new file mode 100644
index 000000000..cff8e25fd
--- /dev/null
+++ b/web/static/images/emoji/flag-hk.png
Binary files differ
diff --git a/web/static/images/emoji/flag-hn.png b/web/static/images/emoji/flag-hn.png
new file mode 100644
index 000000000..e4eeee2d8
--- /dev/null
+++ b/web/static/images/emoji/flag-hn.png
Binary files differ
diff --git a/web/static/images/emoji/flag-hr.png b/web/static/images/emoji/flag-hr.png
new file mode 100644
index 000000000..be0823c21
--- /dev/null
+++ b/web/static/images/emoji/flag-hr.png
Binary files differ
diff --git a/web/static/images/emoji/flag-ht.png b/web/static/images/emoji/flag-ht.png
new file mode 100644
index 000000000..76d3d94ad
--- /dev/null
+++ b/web/static/images/emoji/flag-ht.png
Binary files differ
diff --git a/web/static/images/emoji/flag-hu.png b/web/static/images/emoji/flag-hu.png
new file mode 100644
index 000000000..028f853dd
--- /dev/null
+++ b/web/static/images/emoji/flag-hu.png
Binary files differ
diff --git a/web/static/images/emoji/flag-id.png b/web/static/images/emoji/flag-id.png
new file mode 100644
index 000000000..90042acf5
--- /dev/null
+++ b/web/static/images/emoji/flag-id.png
Binary files differ
diff --git a/web/static/images/emoji/flag-ie.png b/web/static/images/emoji/flag-ie.png
new file mode 100644
index 000000000..63ae4af61
--- /dev/null
+++ b/web/static/images/emoji/flag-ie.png
Binary files differ
diff --git a/web/static/images/emoji/flag-il.png b/web/static/images/emoji/flag-il.png
new file mode 100644
index 000000000..8361d8ee3
--- /dev/null
+++ b/web/static/images/emoji/flag-il.png
Binary files differ
diff --git a/web/static/images/emoji/flag-in.png b/web/static/images/emoji/flag-in.png
new file mode 100644
index 000000000..6d6f944c4
--- /dev/null
+++ b/web/static/images/emoji/flag-in.png
Binary files differ
diff --git a/web/static/images/emoji/flag-iq.png b/web/static/images/emoji/flag-iq.png
new file mode 100644
index 000000000..5fb5d4e3b
--- /dev/null
+++ b/web/static/images/emoji/flag-iq.png
Binary files differ
diff --git a/web/static/images/emoji/flag-ir.png b/web/static/images/emoji/flag-ir.png
new file mode 100644
index 000000000..23f916063
--- /dev/null
+++ b/web/static/images/emoji/flag-ir.png
Binary files differ
diff --git a/web/static/images/emoji/flag-is.png b/web/static/images/emoji/flag-is.png
new file mode 100644
index 000000000..7f2b34832
--- /dev/null
+++ b/web/static/images/emoji/flag-is.png
Binary files differ
diff --git a/web/static/images/emoji/flag-it.png b/web/static/images/emoji/flag-it.png
new file mode 100644
index 000000000..bce062350
--- /dev/null
+++ b/web/static/images/emoji/flag-it.png
Binary files differ
diff --git a/web/static/images/emoji/flag-je.png b/web/static/images/emoji/flag-je.png
new file mode 100644
index 000000000..822b4340d
--- /dev/null
+++ b/web/static/images/emoji/flag-je.png
Binary files differ
diff --git a/web/static/images/emoji/flag-jm.png b/web/static/images/emoji/flag-jm.png
new file mode 100644
index 000000000..f179b1404
--- /dev/null
+++ b/web/static/images/emoji/flag-jm.png
Binary files differ
diff --git a/web/static/images/emoji/flag-jo.png b/web/static/images/emoji/flag-jo.png
new file mode 100644
index 000000000..15be546e8
--- /dev/null
+++ b/web/static/images/emoji/flag-jo.png
Binary files differ
diff --git a/web/static/images/emoji/flag-jp.png b/web/static/images/emoji/flag-jp.png
new file mode 100644
index 000000000..56390ce22
--- /dev/null
+++ b/web/static/images/emoji/flag-jp.png
Binary files differ
diff --git a/web/static/images/emoji/flag-ke.png b/web/static/images/emoji/flag-ke.png
new file mode 100644
index 000000000..301bf6eec
--- /dev/null
+++ b/web/static/images/emoji/flag-ke.png
Binary files differ
diff --git a/web/static/images/emoji/flag-kg.png b/web/static/images/emoji/flag-kg.png
new file mode 100644
index 000000000..6845412e8
--- /dev/null
+++ b/web/static/images/emoji/flag-kg.png
Binary files differ
diff --git a/web/static/images/emoji/flag-kh.png b/web/static/images/emoji/flag-kh.png
new file mode 100644
index 000000000..15ccea7a4
--- /dev/null
+++ b/web/static/images/emoji/flag-kh.png
Binary files differ
diff --git a/web/static/images/emoji/flag-ki.png b/web/static/images/emoji/flag-ki.png
new file mode 100644
index 000000000..79331c5de
--- /dev/null
+++ b/web/static/images/emoji/flag-ki.png
Binary files differ
diff --git a/web/static/images/emoji/flag-km.png b/web/static/images/emoji/flag-km.png
new file mode 100644
index 000000000..9a16139aa
--- /dev/null
+++ b/web/static/images/emoji/flag-km.png
Binary files differ
diff --git a/web/static/images/emoji/flag-kn.png b/web/static/images/emoji/flag-kn.png
new file mode 100644
index 000000000..913f6dfb7
--- /dev/null
+++ b/web/static/images/emoji/flag-kn.png
Binary files differ
diff --git a/web/static/images/emoji/flag-kp.png b/web/static/images/emoji/flag-kp.png
new file mode 100644
index 000000000..cb50e9380
--- /dev/null
+++ b/web/static/images/emoji/flag-kp.png
Binary files differ
diff --git a/web/static/images/emoji/flag-kr.png b/web/static/images/emoji/flag-kr.png
new file mode 100644
index 000000000..6687991f3
--- /dev/null
+++ b/web/static/images/emoji/flag-kr.png
Binary files differ
diff --git a/web/static/images/emoji/flag-kw.png b/web/static/images/emoji/flag-kw.png
new file mode 100644
index 000000000..72ef3415f
--- /dev/null
+++ b/web/static/images/emoji/flag-kw.png
Binary files differ
diff --git a/web/static/images/emoji/flag-ky.png b/web/static/images/emoji/flag-ky.png
new file mode 100644
index 000000000..d716ddcd5
--- /dev/null
+++ b/web/static/images/emoji/flag-ky.png
Binary files differ
diff --git a/web/static/images/emoji/flag-kz.png b/web/static/images/emoji/flag-kz.png
new file mode 100644
index 000000000..49813e5d5
--- /dev/null
+++ b/web/static/images/emoji/flag-kz.png
Binary files differ
diff --git a/web/static/images/emoji/flag-la.png b/web/static/images/emoji/flag-la.png
new file mode 100644
index 000000000..6f0dd90f3
--- /dev/null
+++ b/web/static/images/emoji/flag-la.png
Binary files differ
diff --git a/web/static/images/emoji/flag-lb.png b/web/static/images/emoji/flag-lb.png
new file mode 100644
index 000000000..8fe041f46
--- /dev/null
+++ b/web/static/images/emoji/flag-lb.png
Binary files differ
diff --git a/web/static/images/emoji/flag-lc.png b/web/static/images/emoji/flag-lc.png
new file mode 100644
index 000000000..70a34cb11
--- /dev/null
+++ b/web/static/images/emoji/flag-lc.png
Binary files differ
diff --git a/web/static/images/emoji/flag-li.png b/web/static/images/emoji/flag-li.png
new file mode 100644
index 000000000..ad667c3c4
--- /dev/null
+++ b/web/static/images/emoji/flag-li.png
Binary files differ
diff --git a/web/static/images/emoji/flag-lk.png b/web/static/images/emoji/flag-lk.png
new file mode 100644
index 000000000..9a205d9cf
--- /dev/null
+++ b/web/static/images/emoji/flag-lk.png
Binary files differ
diff --git a/web/static/images/emoji/flag-lr.png b/web/static/images/emoji/flag-lr.png
new file mode 100644
index 000000000..2916a1ff4
--- /dev/null
+++ b/web/static/images/emoji/flag-lr.png
Binary files differ
diff --git a/web/static/images/emoji/flag-ls.png b/web/static/images/emoji/flag-ls.png
new file mode 100644
index 000000000..a47e7e067
--- /dev/null
+++ b/web/static/images/emoji/flag-ls.png
Binary files differ
diff --git a/web/static/images/emoji/flag-lt.png b/web/static/images/emoji/flag-lt.png
new file mode 100644
index 000000000..ea08d9b23
--- /dev/null
+++ b/web/static/images/emoji/flag-lt.png
Binary files differ
diff --git a/web/static/images/emoji/flag-lu.png b/web/static/images/emoji/flag-lu.png
new file mode 100644
index 000000000..dbd428878
--- /dev/null
+++ b/web/static/images/emoji/flag-lu.png
Binary files differ
diff --git a/web/static/images/emoji/flag-lv.png b/web/static/images/emoji/flag-lv.png
new file mode 100644
index 000000000..a8eef9ff6
--- /dev/null
+++ b/web/static/images/emoji/flag-lv.png
Binary files differ
diff --git a/web/static/images/emoji/flag-ly.png b/web/static/images/emoji/flag-ly.png
new file mode 100644
index 000000000..04632748f
--- /dev/null
+++ b/web/static/images/emoji/flag-ly.png
Binary files differ
diff --git a/web/static/images/emoji/flag-ma.png b/web/static/images/emoji/flag-ma.png
new file mode 100644
index 000000000..1bf4401f6
--- /dev/null
+++ b/web/static/images/emoji/flag-ma.png
Binary files differ
diff --git a/web/static/images/emoji/flag-mc.png b/web/static/images/emoji/flag-mc.png
new file mode 100644
index 000000000..039174d3a
--- /dev/null
+++ b/web/static/images/emoji/flag-mc.png
Binary files differ
diff --git a/web/static/images/emoji/flag-md.png b/web/static/images/emoji/flag-md.png
new file mode 100644
index 000000000..78b5ba7e2
--- /dev/null
+++ b/web/static/images/emoji/flag-md.png
Binary files differ
diff --git a/web/static/images/emoji/flag-me.png b/web/static/images/emoji/flag-me.png
new file mode 100644
index 000000000..01245d958
--- /dev/null
+++ b/web/static/images/emoji/flag-me.png
Binary files differ
diff --git a/web/static/images/emoji/flag-mg.png b/web/static/images/emoji/flag-mg.png
new file mode 100644
index 000000000..cb55e9fc3
--- /dev/null
+++ b/web/static/images/emoji/flag-mg.png
Binary files differ
diff --git a/web/static/images/emoji/flag-mh.png b/web/static/images/emoji/flag-mh.png
new file mode 100644
index 000000000..ff5038b6d
--- /dev/null
+++ b/web/static/images/emoji/flag-mh.png
Binary files differ
diff --git a/web/static/images/emoji/flag-mk.png b/web/static/images/emoji/flag-mk.png
new file mode 100644
index 000000000..8dadf0110
--- /dev/null
+++ b/web/static/images/emoji/flag-mk.png
Binary files differ
diff --git a/web/static/images/emoji/flag-ml.png b/web/static/images/emoji/flag-ml.png
new file mode 100644
index 000000000..53be7c81e
--- /dev/null
+++ b/web/static/images/emoji/flag-ml.png
Binary files differ
diff --git a/web/static/images/emoji/flag-mm.png b/web/static/images/emoji/flag-mm.png
new file mode 100644
index 000000000..c1cfee7a5
--- /dev/null
+++ b/web/static/images/emoji/flag-mm.png
Binary files differ
diff --git a/web/static/images/emoji/flag-mn.png b/web/static/images/emoji/flag-mn.png
new file mode 100644
index 000000000..1beac5568
--- /dev/null
+++ b/web/static/images/emoji/flag-mn.png
Binary files differ
diff --git a/web/static/images/emoji/flag-mo.png b/web/static/images/emoji/flag-mo.png
new file mode 100644
index 000000000..6a8fcb9a0
--- /dev/null
+++ b/web/static/images/emoji/flag-mo.png
Binary files differ
diff --git a/web/static/images/emoji/flag-mr.png b/web/static/images/emoji/flag-mr.png
new file mode 100644
index 000000000..854690cfb
--- /dev/null
+++ b/web/static/images/emoji/flag-mr.png
Binary files differ
diff --git a/web/static/images/emoji/flag-ms.png b/web/static/images/emoji/flag-ms.png
new file mode 100644
index 000000000..61b2de721
--- /dev/null
+++ b/web/static/images/emoji/flag-ms.png
Binary files differ
diff --git a/web/static/images/emoji/flag-mt.png b/web/static/images/emoji/flag-mt.png
new file mode 100644
index 000000000..2f07f4709
--- /dev/null
+++ b/web/static/images/emoji/flag-mt.png
Binary files differ
diff --git a/web/static/images/emoji/flag-mu.png b/web/static/images/emoji/flag-mu.png
new file mode 100644
index 000000000..9d28c0812
--- /dev/null
+++ b/web/static/images/emoji/flag-mu.png
Binary files differ
diff --git a/web/static/images/emoji/flag-mv.png b/web/static/images/emoji/flag-mv.png
new file mode 100644
index 000000000..4ea56e841
--- /dev/null
+++ b/web/static/images/emoji/flag-mv.png
Binary files differ
diff --git a/web/static/images/emoji/flag-mw.png b/web/static/images/emoji/flag-mw.png
new file mode 100644
index 000000000..361aa65ec
--- /dev/null
+++ b/web/static/images/emoji/flag-mw.png
Binary files differ
diff --git a/web/static/images/emoji/flag-mx.png b/web/static/images/emoji/flag-mx.png
new file mode 100644
index 000000000..c44c24df1
--- /dev/null
+++ b/web/static/images/emoji/flag-mx.png
Binary files differ
diff --git a/web/static/images/emoji/flag-my.png b/web/static/images/emoji/flag-my.png
new file mode 100644
index 000000000..166fd5ba7
--- /dev/null
+++ b/web/static/images/emoji/flag-my.png
Binary files differ
diff --git a/web/static/images/emoji/flag-mz.png b/web/static/images/emoji/flag-mz.png
new file mode 100644
index 000000000..209db39ee
--- /dev/null
+++ b/web/static/images/emoji/flag-mz.png
Binary files differ
diff --git a/web/static/images/emoji/flag-na.png b/web/static/images/emoji/flag-na.png
new file mode 100644
index 000000000..84fab946d
--- /dev/null
+++ b/web/static/images/emoji/flag-na.png
Binary files differ
diff --git a/web/static/images/emoji/flag-nc.png b/web/static/images/emoji/flag-nc.png
new file mode 100644
index 000000000..6372d93c7
--- /dev/null
+++ b/web/static/images/emoji/flag-nc.png
Binary files differ
diff --git a/web/static/images/emoji/flag-ne.png b/web/static/images/emoji/flag-ne.png
new file mode 100644
index 000000000..3fd0d99ab
--- /dev/null
+++ b/web/static/images/emoji/flag-ne.png
Binary files differ
diff --git a/web/static/images/emoji/flag-ng.png b/web/static/images/emoji/flag-ng.png
new file mode 100644
index 000000000..2c98fcdff
--- /dev/null
+++ b/web/static/images/emoji/flag-ng.png
Binary files differ
diff --git a/web/static/images/emoji/flag-ni.png b/web/static/images/emoji/flag-ni.png
new file mode 100644
index 000000000..88055d5a0
--- /dev/null
+++ b/web/static/images/emoji/flag-ni.png
Binary files differ
diff --git a/web/static/images/emoji/flag-nl.png b/web/static/images/emoji/flag-nl.png
new file mode 100644
index 000000000..d5de058a4
--- /dev/null
+++ b/web/static/images/emoji/flag-nl.png
Binary files differ
diff --git a/web/static/images/emoji/flag-no.png b/web/static/images/emoji/flag-no.png
new file mode 100644
index 000000000..1199fae93
--- /dev/null
+++ b/web/static/images/emoji/flag-no.png
Binary files differ
diff --git a/web/static/images/emoji/flag-np.png b/web/static/images/emoji/flag-np.png
new file mode 100644
index 000000000..3e17c5204
--- /dev/null
+++ b/web/static/images/emoji/flag-np.png
Binary files differ
diff --git a/web/static/images/emoji/flag-nr.png b/web/static/images/emoji/flag-nr.png
new file mode 100644
index 000000000..80c3d8357
--- /dev/null
+++ b/web/static/images/emoji/flag-nr.png
Binary files differ
diff --git a/web/static/images/emoji/flag-nu.png b/web/static/images/emoji/flag-nu.png
new file mode 100644
index 000000000..628aee1e3
--- /dev/null
+++ b/web/static/images/emoji/flag-nu.png
Binary files differ
diff --git a/web/static/images/emoji/flag-nz.png b/web/static/images/emoji/flag-nz.png
new file mode 100644
index 000000000..d64f6ec22
--- /dev/null
+++ b/web/static/images/emoji/flag-nz.png
Binary files differ
diff --git a/web/static/images/emoji/flag-om.png b/web/static/images/emoji/flag-om.png
new file mode 100644
index 000000000..68dd406fb
--- /dev/null
+++ b/web/static/images/emoji/flag-om.png
Binary files differ
diff --git a/web/static/images/emoji/flag-pa.png b/web/static/images/emoji/flag-pa.png
new file mode 100644
index 000000000..0fa73faf3
--- /dev/null
+++ b/web/static/images/emoji/flag-pa.png
Binary files differ
diff --git a/web/static/images/emoji/flag-pe.png b/web/static/images/emoji/flag-pe.png
new file mode 100644
index 000000000..cf7098d8d
--- /dev/null
+++ b/web/static/images/emoji/flag-pe.png
Binary files differ
diff --git a/web/static/images/emoji/flag-pf.png b/web/static/images/emoji/flag-pf.png
new file mode 100644
index 000000000..5780519fd
--- /dev/null
+++ b/web/static/images/emoji/flag-pf.png
Binary files differ
diff --git a/web/static/images/emoji/flag-pg.png b/web/static/images/emoji/flag-pg.png
new file mode 100644
index 000000000..0a4ce4c3c
--- /dev/null
+++ b/web/static/images/emoji/flag-pg.png
Binary files differ
diff --git a/web/static/images/emoji/flag-ph.png b/web/static/images/emoji/flag-ph.png
new file mode 100644
index 000000000..00a9eaa6d
--- /dev/null
+++ b/web/static/images/emoji/flag-ph.png
Binary files differ
diff --git a/web/static/images/emoji/flag-pk.png b/web/static/images/emoji/flag-pk.png
new file mode 100644
index 000000000..b1ab1a7a8
--- /dev/null
+++ b/web/static/images/emoji/flag-pk.png
Binary files differ
diff --git a/web/static/images/emoji/flag-pl.png b/web/static/images/emoji/flag-pl.png
new file mode 100644
index 000000000..e07223bf7
--- /dev/null
+++ b/web/static/images/emoji/flag-pl.png
Binary files differ
diff --git a/web/static/images/emoji/flag-pr.png b/web/static/images/emoji/flag-pr.png
new file mode 100644
index 000000000..754bb5429
--- /dev/null
+++ b/web/static/images/emoji/flag-pr.png
Binary files differ
diff --git a/web/static/images/emoji/flag-ps.png b/web/static/images/emoji/flag-ps.png
new file mode 100644
index 000000000..e2076eda0
--- /dev/null
+++ b/web/static/images/emoji/flag-ps.png
Binary files differ
diff --git a/web/static/images/emoji/flag-pt.png b/web/static/images/emoji/flag-pt.png
new file mode 100644
index 000000000..4f585e18b
--- /dev/null
+++ b/web/static/images/emoji/flag-pt.png
Binary files differ
diff --git a/web/static/images/emoji/flag-pw.png b/web/static/images/emoji/flag-pw.png
new file mode 100644
index 000000000..e15437591
--- /dev/null
+++ b/web/static/images/emoji/flag-pw.png
Binary files differ
diff --git a/web/static/images/emoji/flag-py.png b/web/static/images/emoji/flag-py.png
new file mode 100644
index 000000000..335d55f93
--- /dev/null
+++ b/web/static/images/emoji/flag-py.png
Binary files differ
diff --git a/web/static/images/emoji/flag-qa.png b/web/static/images/emoji/flag-qa.png
new file mode 100644
index 000000000..6f99df4ff
--- /dev/null
+++ b/web/static/images/emoji/flag-qa.png
Binary files differ
diff --git a/web/static/images/emoji/flag-ro.png b/web/static/images/emoji/flag-ro.png
new file mode 100644
index 000000000..1f7db7ab1
--- /dev/null
+++ b/web/static/images/emoji/flag-ro.png
Binary files differ
diff --git a/web/static/images/emoji/flag-rs.png b/web/static/images/emoji/flag-rs.png
new file mode 100644
index 000000000..7552aba40
--- /dev/null
+++ b/web/static/images/emoji/flag-rs.png
Binary files differ
diff --git a/web/static/images/emoji/flag-ru.png b/web/static/images/emoji/flag-ru.png
new file mode 100644
index 000000000..4a65f219f
--- /dev/null
+++ b/web/static/images/emoji/flag-ru.png
Binary files differ
diff --git a/web/static/images/emoji/flag-rw.png b/web/static/images/emoji/flag-rw.png
new file mode 100644
index 000000000..ddea66d07
--- /dev/null
+++ b/web/static/images/emoji/flag-rw.png
Binary files differ
diff --git a/web/static/images/emoji/flag-sa.png b/web/static/images/emoji/flag-sa.png
new file mode 100644
index 000000000..4f82c1a3e
--- /dev/null
+++ b/web/static/images/emoji/flag-sa.png
Binary files differ
diff --git a/web/static/images/emoji/flag-sb.png b/web/static/images/emoji/flag-sb.png
new file mode 100644
index 000000000..5bf32a743
--- /dev/null
+++ b/web/static/images/emoji/flag-sb.png
Binary files differ
diff --git a/web/static/images/emoji/flag-sc.png b/web/static/images/emoji/flag-sc.png
new file mode 100644
index 000000000..7ec76a1ec
--- /dev/null
+++ b/web/static/images/emoji/flag-sc.png
Binary files differ
diff --git a/web/static/images/emoji/flag-sd.png b/web/static/images/emoji/flag-sd.png
new file mode 100644
index 000000000..fad14bde5
--- /dev/null
+++ b/web/static/images/emoji/flag-sd.png
Binary files differ
diff --git a/web/static/images/emoji/flag-se.png b/web/static/images/emoji/flag-se.png
new file mode 100644
index 000000000..067857a9e
--- /dev/null
+++ b/web/static/images/emoji/flag-se.png
Binary files differ
diff --git a/web/static/images/emoji/flag-sg.png b/web/static/images/emoji/flag-sg.png
new file mode 100644
index 000000000..8d1127005
--- /dev/null
+++ b/web/static/images/emoji/flag-sg.png
Binary files differ
diff --git a/web/static/images/emoji/flag-sh.png b/web/static/images/emoji/flag-sh.png
new file mode 100644
index 000000000..75977bea6
--- /dev/null
+++ b/web/static/images/emoji/flag-sh.png
Binary files differ
diff --git a/web/static/images/emoji/flag-si.png b/web/static/images/emoji/flag-si.png
new file mode 100644
index 000000000..d7c3a7477
--- /dev/null
+++ b/web/static/images/emoji/flag-si.png
Binary files differ
diff --git a/web/static/images/emoji/flag-sk.png b/web/static/images/emoji/flag-sk.png
new file mode 100644
index 000000000..6f60bfab3
--- /dev/null
+++ b/web/static/images/emoji/flag-sk.png
Binary files differ
diff --git a/web/static/images/emoji/flag-sl.png b/web/static/images/emoji/flag-sl.png
new file mode 100644
index 000000000..5f88e8673
--- /dev/null
+++ b/web/static/images/emoji/flag-sl.png
Binary files differ
diff --git a/web/static/images/emoji/flag-sm.png b/web/static/images/emoji/flag-sm.png
new file mode 100644
index 000000000..431e28ea6
--- /dev/null
+++ b/web/static/images/emoji/flag-sm.png
Binary files differ
diff --git a/web/static/images/emoji/flag-sn.png b/web/static/images/emoji/flag-sn.png
new file mode 100644
index 000000000..dcc3f9770
--- /dev/null
+++ b/web/static/images/emoji/flag-sn.png
Binary files differ
diff --git a/web/static/images/emoji/flag-so.png b/web/static/images/emoji/flag-so.png
new file mode 100644
index 000000000..2e20974e9
--- /dev/null
+++ b/web/static/images/emoji/flag-so.png
Binary files differ
diff --git a/web/static/images/emoji/flag-sr.png b/web/static/images/emoji/flag-sr.png
new file mode 100644
index 000000000..bde51f536
--- /dev/null
+++ b/web/static/images/emoji/flag-sr.png
Binary files differ
diff --git a/web/static/images/emoji/flag-st.png b/web/static/images/emoji/flag-st.png
new file mode 100644
index 000000000..e387f43b9
--- /dev/null
+++ b/web/static/images/emoji/flag-st.png
Binary files differ
diff --git a/web/static/images/emoji/flag-sv.png b/web/static/images/emoji/flag-sv.png
new file mode 100644
index 000000000..f4a1153db
--- /dev/null
+++ b/web/static/images/emoji/flag-sv.png
Binary files differ
diff --git a/web/static/images/emoji/flag-sy.png b/web/static/images/emoji/flag-sy.png
new file mode 100644
index 000000000..f8900079a
--- /dev/null
+++ b/web/static/images/emoji/flag-sy.png
Binary files differ
diff --git a/web/static/images/emoji/flag-sz.png b/web/static/images/emoji/flag-sz.png
new file mode 100644
index 000000000..f80d7579d
--- /dev/null
+++ b/web/static/images/emoji/flag-sz.png
Binary files differ
diff --git a/web/static/images/emoji/flag-td.png b/web/static/images/emoji/flag-td.png
new file mode 100644
index 000000000..de564e86e
--- /dev/null
+++ b/web/static/images/emoji/flag-td.png
Binary files differ
diff --git a/web/static/images/emoji/flag-tg.png b/web/static/images/emoji/flag-tg.png
new file mode 100644
index 000000000..e41a68ea8
--- /dev/null
+++ b/web/static/images/emoji/flag-tg.png
Binary files differ
diff --git a/web/static/images/emoji/flag-th.png b/web/static/images/emoji/flag-th.png
new file mode 100644
index 000000000..362fb1a29
--- /dev/null
+++ b/web/static/images/emoji/flag-th.png
Binary files differ
diff --git a/web/static/images/emoji/flag-tj.png b/web/static/images/emoji/flag-tj.png
new file mode 100644
index 000000000..5f2072253
--- /dev/null
+++ b/web/static/images/emoji/flag-tj.png
Binary files differ
diff --git a/web/static/images/emoji/flag-tl.png b/web/static/images/emoji/flag-tl.png
new file mode 100644
index 000000000..da94c4289
--- /dev/null
+++ b/web/static/images/emoji/flag-tl.png
Binary files differ
diff --git a/web/static/images/emoji/flag-tm.png b/web/static/images/emoji/flag-tm.png
new file mode 100644
index 000000000..f0ab3b7d5
--- /dev/null
+++ b/web/static/images/emoji/flag-tm.png
Binary files differ
diff --git a/web/static/images/emoji/flag-tn.png b/web/static/images/emoji/flag-tn.png
new file mode 100644
index 000000000..e1f27ed7d
--- /dev/null
+++ b/web/static/images/emoji/flag-tn.png
Binary files differ
diff --git a/web/static/images/emoji/flag-to.png b/web/static/images/emoji/flag-to.png
new file mode 100644
index 000000000..06c2a6f41
--- /dev/null
+++ b/web/static/images/emoji/flag-to.png
Binary files differ
diff --git a/web/static/images/emoji/flag-tr.png b/web/static/images/emoji/flag-tr.png
new file mode 100644
index 000000000..720d4de2f
--- /dev/null
+++ b/web/static/images/emoji/flag-tr.png
Binary files differ
diff --git a/web/static/images/emoji/flag-tt.png b/web/static/images/emoji/flag-tt.png
new file mode 100644
index 000000000..2d89e31b0
--- /dev/null
+++ b/web/static/images/emoji/flag-tt.png
Binary files differ
diff --git a/web/static/images/emoji/flag-tv.png b/web/static/images/emoji/flag-tv.png
new file mode 100644
index 000000000..765087702
--- /dev/null
+++ b/web/static/images/emoji/flag-tv.png
Binary files differ
diff --git a/web/static/images/emoji/flag-tw.png b/web/static/images/emoji/flag-tw.png
new file mode 100644
index 000000000..6499e47ee
--- /dev/null
+++ b/web/static/images/emoji/flag-tw.png
Binary files differ
diff --git a/web/static/images/emoji/flag-tz.png b/web/static/images/emoji/flag-tz.png
new file mode 100644
index 000000000..9e04fcf9d
--- /dev/null
+++ b/web/static/images/emoji/flag-tz.png
Binary files differ
diff --git a/web/static/images/emoji/flag-ua.png b/web/static/images/emoji/flag-ua.png
new file mode 100644
index 000000000..aa9745259
--- /dev/null
+++ b/web/static/images/emoji/flag-ua.png
Binary files differ
diff --git a/web/static/images/emoji/flag-ug.png b/web/static/images/emoji/flag-ug.png
new file mode 100644
index 000000000..f78274fcb
--- /dev/null
+++ b/web/static/images/emoji/flag-ug.png
Binary files differ
diff --git a/web/static/images/emoji/flag-us.png b/web/static/images/emoji/flag-us.png
new file mode 100644
index 000000000..6c98de9be
--- /dev/null
+++ b/web/static/images/emoji/flag-us.png
Binary files differ
diff --git a/web/static/images/emoji/flag-uy.png b/web/static/images/emoji/flag-uy.png
new file mode 100644
index 000000000..f8caee786
--- /dev/null
+++ b/web/static/images/emoji/flag-uy.png
Binary files differ
diff --git a/web/static/images/emoji/flag-uz.png b/web/static/images/emoji/flag-uz.png
new file mode 100644
index 000000000..34f0c8627
--- /dev/null
+++ b/web/static/images/emoji/flag-uz.png
Binary files differ
diff --git a/web/static/images/emoji/flag-va.png b/web/static/images/emoji/flag-va.png
new file mode 100644
index 000000000..175fcaa0e
--- /dev/null
+++ b/web/static/images/emoji/flag-va.png
Binary files differ
diff --git a/web/static/images/emoji/flag-vc.png b/web/static/images/emoji/flag-vc.png
new file mode 100644
index 000000000..4e4efb366
--- /dev/null
+++ b/web/static/images/emoji/flag-vc.png
Binary files differ
diff --git a/web/static/images/emoji/flag-ve.png b/web/static/images/emoji/flag-ve.png
new file mode 100644
index 000000000..6ab199a56
--- /dev/null
+++ b/web/static/images/emoji/flag-ve.png
Binary files differ
diff --git a/web/static/images/emoji/flag-vi.png b/web/static/images/emoji/flag-vi.png
new file mode 100644
index 000000000..da1d092bb
--- /dev/null
+++ b/web/static/images/emoji/flag-vi.png
Binary files differ
diff --git a/web/static/images/emoji/flag-vn.png b/web/static/images/emoji/flag-vn.png
new file mode 100644
index 000000000..ec1ca0b8f
--- /dev/null
+++ b/web/static/images/emoji/flag-vn.png
Binary files differ
diff --git a/web/static/images/emoji/flag-vu.png b/web/static/images/emoji/flag-vu.png
new file mode 100644
index 000000000..e9345643b
--- /dev/null
+++ b/web/static/images/emoji/flag-vu.png
Binary files differ
diff --git a/web/static/images/emoji/flag-wf.png b/web/static/images/emoji/flag-wf.png
new file mode 100644
index 000000000..367175512
--- /dev/null
+++ b/web/static/images/emoji/flag-wf.png
Binary files differ
diff --git a/web/static/images/emoji/flag-ws.png b/web/static/images/emoji/flag-ws.png
new file mode 100644
index 000000000..c4d6349f7
--- /dev/null
+++ b/web/static/images/emoji/flag-ws.png
Binary files differ
diff --git a/web/static/images/emoji/flag-xk.png b/web/static/images/emoji/flag-xk.png
new file mode 100644
index 000000000..f9953b7e2
--- /dev/null
+++ b/web/static/images/emoji/flag-xk.png
Binary files differ
diff --git a/web/static/images/emoji/flag-ye.png b/web/static/images/emoji/flag-ye.png
new file mode 100644
index 000000000..e62c22683
--- /dev/null
+++ b/web/static/images/emoji/flag-ye.png
Binary files differ
diff --git a/web/static/images/emoji/flag-za.png b/web/static/images/emoji/flag-za.png
new file mode 100644
index 000000000..b5f8197ca
--- /dev/null
+++ b/web/static/images/emoji/flag-za.png
Binary files differ
diff --git a/web/static/images/emoji/flag-zm.png b/web/static/images/emoji/flag-zm.png
new file mode 100644
index 000000000..aac8aaa96
--- /dev/null
+++ b/web/static/images/emoji/flag-zm.png
Binary files differ
diff --git a/web/static/images/emoji/flag-zw.png b/web/static/images/emoji/flag-zw.png
new file mode 100644
index 000000000..bf3d7162d
--- /dev/null
+++ b/web/static/images/emoji/flag-zw.png
Binary files differ
diff --git a/web/static/images/emoji/flags.png b/web/static/images/emoji/flags.png
index 540164e84..a6bbd0ea3 100755..100644
--- a/web/static/images/emoji/flags.png
+++ b/web/static/images/emoji/flags.png
Binary files differ
diff --git a/web/static/images/emoji/flashlight.png b/web/static/images/emoji/flashlight.png
index 215940aa8..3e64a0d0b 100755..100644
--- a/web/static/images/emoji/flashlight.png
+++ b/web/static/images/emoji/flashlight.png
Binary files differ
diff --git a/web/static/images/emoji/flipper.png b/web/static/images/emoji/flipper.png
new file mode 100644
index 000000000..4dde4cc13
--- /dev/null
+++ b/web/static/images/emoji/flipper.png
Binary files differ
diff --git a/web/static/images/emoji/floppy_disk.png b/web/static/images/emoji/floppy_disk.png
index 4ad56315a..f4e52bf1b 100755..100644
--- a/web/static/images/emoji/floppy_disk.png
+++ b/web/static/images/emoji/floppy_disk.png
Binary files differ
diff --git a/web/static/images/emoji/flower_playing_cards.png b/web/static/images/emoji/flower_playing_cards.png
index cc46a6a1f..b5dff4687 100755..100644
--- a/web/static/images/emoji/flower_playing_cards.png
+++ b/web/static/images/emoji/flower_playing_cards.png
Binary files differ
diff --git a/web/static/images/emoji/flushed.png b/web/static/images/emoji/flushed.png
index 74b78c9c0..44bd60154 100755..100644
--- a/web/static/images/emoji/flushed.png
+++ b/web/static/images/emoji/flushed.png
Binary files differ
diff --git a/web/static/images/emoji/fog.png b/web/static/images/emoji/fog.png
new file mode 100644
index 000000000..babf8a114
--- /dev/null
+++ b/web/static/images/emoji/fog.png
Binary files differ
diff --git a/web/static/images/emoji/foggy.png b/web/static/images/emoji/foggy.png
index 3c7b8b04b..740943ab0 100755..100644
--- a/web/static/images/emoji/foggy.png
+++ b/web/static/images/emoji/foggy.png
Binary files differ
diff --git a/web/static/images/emoji/football.png b/web/static/images/emoji/football.png
index 0e4e168fa..24b5673b0 100755..100644
--- a/web/static/images/emoji/football.png
+++ b/web/static/images/emoji/football.png
Binary files differ
diff --git a/web/static/images/emoji/footprints.png b/web/static/images/emoji/footprints.png
new file mode 100644
index 000000000..95c26fc9d
--- /dev/null
+++ b/web/static/images/emoji/footprints.png
Binary files differ
diff --git a/web/static/images/emoji/fork_and_knife.png b/web/static/images/emoji/fork_and_knife.png
index 8ba4bc653..ea13776ee 100755..100644
--- a/web/static/images/emoji/fork_and_knife.png
+++ b/web/static/images/emoji/fork_and_knife.png
Binary files differ
diff --git a/web/static/images/emoji/fountain.png b/web/static/images/emoji/fountain.png
index da126e648..465d2a127 100755..100644
--- a/web/static/images/emoji/fountain.png
+++ b/web/static/images/emoji/fountain.png
Binary files differ
diff --git a/web/static/images/emoji/four.png b/web/static/images/emoji/four.png
index 14782ba23..a8b4dc052 100755..100644
--- a/web/static/images/emoji/four.png
+++ b/web/static/images/emoji/four.png
Binary files differ
diff --git a/web/static/images/emoji/four_leaf_clover.png b/web/static/images/emoji/four_leaf_clover.png
index f2014bea4..fb11bb638 100755..100644
--- a/web/static/images/emoji/four_leaf_clover.png
+++ b/web/static/images/emoji/four_leaf_clover.png
Binary files differ
diff --git a/web/static/images/emoji/fr.png b/web/static/images/emoji/fr.png
index 6311c9115..14271f059 100755..100644
--- a/web/static/images/emoji/fr.png
+++ b/web/static/images/emoji/fr.png
Binary files differ
diff --git a/web/static/images/emoji/frame_with_picture.png b/web/static/images/emoji/frame_with_picture.png
new file mode 100644
index 000000000..d2950ba9b
--- /dev/null
+++ b/web/static/images/emoji/frame_with_picture.png
Binary files differ
diff --git a/web/static/images/emoji/free.png b/web/static/images/emoji/free.png
index c886cf249..0da6a1112 100755..100644
--- a/web/static/images/emoji/free.png
+++ b/web/static/images/emoji/free.png
Binary files differ
diff --git a/web/static/images/emoji/fried_shrimp.png b/web/static/images/emoji/fried_shrimp.png
index c8c284bf1..30c165438 100755..100644
--- a/web/static/images/emoji/fried_shrimp.png
+++ b/web/static/images/emoji/fried_shrimp.png
Binary files differ
diff --git a/web/static/images/emoji/fries.png b/web/static/images/emoji/fries.png
index cfef66966..bed7a0153 100755..100644
--- a/web/static/images/emoji/fries.png
+++ b/web/static/images/emoji/fries.png
Binary files differ
diff --git a/web/static/images/emoji/frog.png b/web/static/images/emoji/frog.png
index cfe11b18f..726d0280b 100755..100644
--- a/web/static/images/emoji/frog.png
+++ b/web/static/images/emoji/frog.png
Binary files differ
diff --git a/web/static/images/emoji/frowning.png b/web/static/images/emoji/frowning.png
index 487b77016..0593fe678 100755..100644
--- a/web/static/images/emoji/frowning.png
+++ b/web/static/images/emoji/frowning.png
Binary files differ
diff --git a/web/static/images/emoji/fu.png b/web/static/images/emoji/fu.png
index 61a3fee8d..61a3fee8d 100755..100644
--- a/web/static/images/emoji/fu.png
+++ b/web/static/images/emoji/fu.png
Binary files differ
diff --git a/web/static/images/emoji/fuelpump.png b/web/static/images/emoji/fuelpump.png
index 54c29aeb1..db5b15c89 100755..100644
--- a/web/static/images/emoji/fuelpump.png
+++ b/web/static/images/emoji/fuelpump.png
Binary files differ
diff --git a/web/static/images/emoji/full_moon.png b/web/static/images/emoji/full_moon.png
index 8ff657a25..b936c916d 100755..100644
--- a/web/static/images/emoji/full_moon.png
+++ b/web/static/images/emoji/full_moon.png
Binary files differ
diff --git a/web/static/images/emoji/full_moon_with_face.png b/web/static/images/emoji/full_moon_with_face.png
index d42b3f0fb..adb3479d9 100755..100644
--- a/web/static/images/emoji/full_moon_with_face.png
+++ b/web/static/images/emoji/full_moon_with_face.png
Binary files differ
diff --git a/web/static/images/emoji/game_die.png b/web/static/images/emoji/game_die.png
index cff2bd8b7..7723d290b 100755..100644
--- a/web/static/images/emoji/game_die.png
+++ b/web/static/images/emoji/game_die.png
Binary files differ
diff --git a/web/static/images/emoji/gb.png b/web/static/images/emoji/gb.png
index 2a62c7a08..61c03f759 100755..100644
--- a/web/static/images/emoji/gb.png
+++ b/web/static/images/emoji/gb.png
Binary files differ
diff --git a/web/static/images/emoji/gem.png b/web/static/images/emoji/gem.png
index 8a5d8dad5..a24a082a7 100755..100644
--- a/web/static/images/emoji/gem.png
+++ b/web/static/images/emoji/gem.png
Binary files differ
diff --git a/web/static/images/emoji/gemini.png b/web/static/images/emoji/gemini.png
index d926f6e88..3d34ba7ca 100755..100644
--- a/web/static/images/emoji/gemini.png
+++ b/web/static/images/emoji/gemini.png
Binary files differ
diff --git a/web/static/images/emoji/ghost.png b/web/static/images/emoji/ghost.png
index 671dd0c9e..3138f36fd 100755..100644
--- a/web/static/images/emoji/ghost.png
+++ b/web/static/images/emoji/ghost.png
Binary files differ
diff --git a/web/static/images/emoji/gift.png b/web/static/images/emoji/gift.png
index 552cfdc2b..bde801b55 100755..100644
--- a/web/static/images/emoji/gift.png
+++ b/web/static/images/emoji/gift.png
Binary files differ
diff --git a/web/static/images/emoji/gift_heart.png b/web/static/images/emoji/gift_heart.png
index f31c26a3f..eb0292da0 100755..100644
--- a/web/static/images/emoji/gift_heart.png
+++ b/web/static/images/emoji/gift_heart.png
Binary files differ
diff --git a/web/static/images/emoji/girl.png b/web/static/images/emoji/girl.png
index ea4126941..9f91cef4c 100755..100644
--- a/web/static/images/emoji/girl.png
+++ b/web/static/images/emoji/girl.png
Binary files differ
diff --git a/web/static/images/emoji/globe_with_meridians.png b/web/static/images/emoji/globe_with_meridians.png
index b19864667..a7af2cb1c 100755..100644
--- a/web/static/images/emoji/globe_with_meridians.png
+++ b/web/static/images/emoji/globe_with_meridians.png
Binary files differ
diff --git a/web/static/images/emoji/goat.png b/web/static/images/emoji/goat.png
index 4be9cf304..41210e5fa 100755..100644
--- a/web/static/images/emoji/goat.png
+++ b/web/static/images/emoji/goat.png
Binary files differ
diff --git a/web/static/images/emoji/goberserk.png b/web/static/images/emoji/goberserk.png
index 59a742aaa..59a742aaa 100755..100644
--- a/web/static/images/emoji/goberserk.png
+++ b/web/static/images/emoji/goberserk.png
Binary files differ
diff --git a/web/static/images/emoji/godmode.png b/web/static/images/emoji/godmode.png
index 7e75ab208..7e75ab208 100755..100644
--- a/web/static/images/emoji/godmode.png
+++ b/web/static/images/emoji/godmode.png
Binary files differ
diff --git a/web/static/images/emoji/golf.png b/web/static/images/emoji/golf.png
index cba2116a7..c03f80917 100755..100644
--- a/web/static/images/emoji/golf.png
+++ b/web/static/images/emoji/golf.png
Binary files differ
diff --git a/web/static/images/emoji/golfer.png b/web/static/images/emoji/golfer.png
new file mode 100644
index 000000000..9aa2f036f
--- /dev/null
+++ b/web/static/images/emoji/golfer.png
Binary files differ
diff --git a/web/static/images/emoji/grapes.png b/web/static/images/emoji/grapes.png
index 0f9f007a1..20b097131 100755..100644
--- a/web/static/images/emoji/grapes.png
+++ b/web/static/images/emoji/grapes.png
Binary files differ
diff --git a/web/static/images/emoji/green_apple.png b/web/static/images/emoji/green_apple.png
index 337205cd1..e37514773 100755..100644
--- a/web/static/images/emoji/green_apple.png
+++ b/web/static/images/emoji/green_apple.png
Binary files differ
diff --git a/web/static/images/emoji/green_book.png b/web/static/images/emoji/green_book.png
index e86651e5c..8fa81b9ac 100755..100644
--- a/web/static/images/emoji/green_book.png
+++ b/web/static/images/emoji/green_book.png
Binary files differ
diff --git a/web/static/images/emoji/green_heart.png b/web/static/images/emoji/green_heart.png
index 7289cb814..87b1d21c3 100755..100644
--- a/web/static/images/emoji/green_heart.png
+++ b/web/static/images/emoji/green_heart.png
Binary files differ
diff --git a/web/static/images/emoji/grey_exclamation.png b/web/static/images/emoji/grey_exclamation.png
index cf027dda5..759d6e7f7 100755..100644
--- a/web/static/images/emoji/grey_exclamation.png
+++ b/web/static/images/emoji/grey_exclamation.png
Binary files differ
diff --git a/web/static/images/emoji/grey_question.png b/web/static/images/emoji/grey_question.png
index fb97ba752..7808b13e3 100755..100644
--- a/web/static/images/emoji/grey_question.png
+++ b/web/static/images/emoji/grey_question.png
Binary files differ
diff --git a/web/static/images/emoji/grimacing.png b/web/static/images/emoji/grimacing.png
index 1219ba7d3..ea4458d8f 100755..100644
--- a/web/static/images/emoji/grimacing.png
+++ b/web/static/images/emoji/grimacing.png
Binary files differ
diff --git a/web/static/images/emoji/grin.png b/web/static/images/emoji/grin.png
index 591cfcef8..bf4d098b9 100755..100644
--- a/web/static/images/emoji/grin.png
+++ b/web/static/images/emoji/grin.png
Binary files differ
diff --git a/web/static/images/emoji/grinning.png b/web/static/images/emoji/grinning.png
index 7e812b7ed..1a5edc7be 100755..100644
--- a/web/static/images/emoji/grinning.png
+++ b/web/static/images/emoji/grinning.png
Binary files differ
diff --git a/web/static/images/emoji/guardsman.png b/web/static/images/emoji/guardsman.png
index b67b335d6..f7f0464cd 100755..100644
--- a/web/static/images/emoji/guardsman.png
+++ b/web/static/images/emoji/guardsman.png
Binary files differ
diff --git a/web/static/images/emoji/guitar.png b/web/static/images/emoji/guitar.png
index 2b7fa43c9..ab62a7fbb 100755..100644
--- a/web/static/images/emoji/guitar.png
+++ b/web/static/images/emoji/guitar.png
Binary files differ
diff --git a/web/static/images/emoji/gun.png b/web/static/images/emoji/gun.png
index c49dc52c6..f0e6b8fab 100755..100644
--- a/web/static/images/emoji/gun.png
+++ b/web/static/images/emoji/gun.png
Binary files differ
diff --git a/web/static/images/emoji/haircut.png b/web/static/images/emoji/haircut.png
index 902d273f6..40fbd31c4 100755..100644
--- a/web/static/images/emoji/haircut.png
+++ b/web/static/images/emoji/haircut.png
Binary files differ
diff --git a/web/static/images/emoji/hamburger.png b/web/static/images/emoji/hamburger.png
index 9f1a3fdff..b18121930 100755..100644
--- a/web/static/images/emoji/hamburger.png
+++ b/web/static/images/emoji/hamburger.png
Binary files differ
diff --git a/web/static/images/emoji/hammer.png b/web/static/images/emoji/hammer.png
index 482b1c747..6d91d1320 100755..100644
--- a/web/static/images/emoji/hammer.png
+++ b/web/static/images/emoji/hammer.png
Binary files differ
diff --git a/web/static/images/emoji/hammer_and_wrench.png b/web/static/images/emoji/hammer_and_wrench.png
new file mode 100644
index 000000000..eeea685b4
--- /dev/null
+++ b/web/static/images/emoji/hammer_and_wrench.png
Binary files differ
diff --git a/web/static/images/emoji/hamster.png b/web/static/images/emoji/hamster.png
index addfd2e6b..b19be3738 100755..100644
--- a/web/static/images/emoji/hamster.png
+++ b/web/static/images/emoji/hamster.png
Binary files differ
diff --git a/web/static/images/emoji/hand.png b/web/static/images/emoji/hand.png
index 5e45c25a5..89de966a3 100755..100644
--- a/web/static/images/emoji/hand.png
+++ b/web/static/images/emoji/hand.png
Binary files differ
diff --git a/web/static/images/emoji/handbag.png b/web/static/images/emoji/handbag.png
index d7adf04dd..556688787 100755..100644
--- a/web/static/images/emoji/handbag.png
+++ b/web/static/images/emoji/handbag.png
Binary files differ
diff --git a/web/static/images/emoji/hankey.png b/web/static/images/emoji/hankey.png
index 73a4dc840..0c237a788 100755..100644
--- a/web/static/images/emoji/hankey.png
+++ b/web/static/images/emoji/hankey.png
Binary files differ
diff --git a/web/static/images/emoji/hash.png b/web/static/images/emoji/hash.png
index 6765d7d3c..9e4cda640 100755..100644
--- a/web/static/images/emoji/hash.png
+++ b/web/static/images/emoji/hash.png
Binary files differ
diff --git a/web/static/images/emoji/hatched_chick.png b/web/static/images/emoji/hatched_chick.png
index 39c25bc7c..de82199dc 100755..100644
--- a/web/static/images/emoji/hatched_chick.png
+++ b/web/static/images/emoji/hatched_chick.png
Binary files differ
diff --git a/web/static/images/emoji/hatching_chick.png b/web/static/images/emoji/hatching_chick.png
index 005a55519..1e688c228 100755..100644
--- a/web/static/images/emoji/hatching_chick.png
+++ b/web/static/images/emoji/hatching_chick.png
Binary files differ
diff --git a/web/static/images/emoji/headphones.png b/web/static/images/emoji/headphones.png
index ad83000e6..3335d4060 100755..100644
--- a/web/static/images/emoji/headphones.png
+++ b/web/static/images/emoji/headphones.png
Binary files differ
diff --git a/web/static/images/emoji/hear_no_evil.png b/web/static/images/emoji/hear_no_evil.png
index f97a1f9a0..e909ebf24 100755..100644
--- a/web/static/images/emoji/hear_no_evil.png
+++ b/web/static/images/emoji/hear_no_evil.png
Binary files differ
diff --git a/web/static/images/emoji/heart.png b/web/static/images/emoji/heart.png
index 7d7790ce4..af35e2223 100755..100644
--- a/web/static/images/emoji/heart.png
+++ b/web/static/images/emoji/heart.png
Binary files differ
diff --git a/web/static/images/emoji/heart_decoration.png b/web/static/images/emoji/heart_decoration.png
index b8be44db3..da8a1339b 100755..100644
--- a/web/static/images/emoji/heart_decoration.png
+++ b/web/static/images/emoji/heart_decoration.png
Binary files differ
diff --git a/web/static/images/emoji/heart_eyes.png b/web/static/images/emoji/heart_eyes.png
index 0e5794270..c48431cb8 100755..100644
--- a/web/static/images/emoji/heart_eyes.png
+++ b/web/static/images/emoji/heart_eyes.png
Binary files differ
diff --git a/web/static/images/emoji/heart_eyes_cat.png b/web/static/images/emoji/heart_eyes_cat.png
index eeba240e5..7ef231efd 100755..100644
--- a/web/static/images/emoji/heart_eyes_cat.png
+++ b/web/static/images/emoji/heart_eyes_cat.png
Binary files differ
diff --git a/web/static/images/emoji/heartbeat.png b/web/static/images/emoji/heartbeat.png
index b6628f6fa..43a365e95 100755..100644
--- a/web/static/images/emoji/heartbeat.png
+++ b/web/static/images/emoji/heartbeat.png
Binary files differ
diff --git a/web/static/images/emoji/heartpulse.png b/web/static/images/emoji/heartpulse.png
index a7491cbea..b3d5da2e3 100755..100644
--- a/web/static/images/emoji/heartpulse.png
+++ b/web/static/images/emoji/heartpulse.png
Binary files differ
diff --git a/web/static/images/emoji/hearts.png b/web/static/images/emoji/hearts.png
index e89471538..994a062cc 100755..100644
--- a/web/static/images/emoji/hearts.png
+++ b/web/static/images/emoji/hearts.png
Binary files differ
diff --git a/web/static/images/emoji/heavy_check_mark.png b/web/static/images/emoji/heavy_check_mark.png
index d0f010b4a..239ea09ee 100755..100644
--- a/web/static/images/emoji/heavy_check_mark.png
+++ b/web/static/images/emoji/heavy_check_mark.png
Binary files differ
diff --git a/web/static/images/emoji/heavy_division_sign.png b/web/static/images/emoji/heavy_division_sign.png
index e193fd252..b883d27f5 100755..100644
--- a/web/static/images/emoji/heavy_division_sign.png
+++ b/web/static/images/emoji/heavy_division_sign.png
Binary files differ
diff --git a/web/static/images/emoji/heavy_dollar_sign.png b/web/static/images/emoji/heavy_dollar_sign.png
index 5eddfc52b..10a5a4d8a 100755..100644
--- a/web/static/images/emoji/heavy_dollar_sign.png
+++ b/web/static/images/emoji/heavy_dollar_sign.png
Binary files differ
diff --git a/web/static/images/emoji/heavy_exclamation_mark.png b/web/static/images/emoji/heavy_exclamation_mark.png
index 4c560f5e3..b8fca78bc 100755..100644
--- a/web/static/images/emoji/heavy_exclamation_mark.png
+++ b/web/static/images/emoji/heavy_exclamation_mark.png
Binary files differ
diff --git a/web/static/images/emoji/heavy_minus_sign.png b/web/static/images/emoji/heavy_minus_sign.png
index 4a33f905a..60195e0d4 100755..100644
--- a/web/static/images/emoji/heavy_minus_sign.png
+++ b/web/static/images/emoji/heavy_minus_sign.png
Binary files differ
diff --git a/web/static/images/emoji/heavy_multiplication_x.png b/web/static/images/emoji/heavy_multiplication_x.png
index 13d666078..a75fd57e0 100755..100644
--- a/web/static/images/emoji/heavy_multiplication_x.png
+++ b/web/static/images/emoji/heavy_multiplication_x.png
Binary files differ
diff --git a/web/static/images/emoji/heavy_plus_sign.png b/web/static/images/emoji/heavy_plus_sign.png
index ade3c3a85..198cde00e 100755..100644
--- a/web/static/images/emoji/heavy_plus_sign.png
+++ b/web/static/images/emoji/heavy_plus_sign.png
Binary files differ
diff --git a/web/static/images/emoji/helicopter.png b/web/static/images/emoji/helicopter.png
index 8e82a0d58..838acddc7 100755..100644
--- a/web/static/images/emoji/helicopter.png
+++ b/web/static/images/emoji/helicopter.png
Binary files differ
diff --git a/web/static/images/emoji/herb.png b/web/static/images/emoji/herb.png
index de1ff1b73..cb5f8f735 100755..100644
--- a/web/static/images/emoji/herb.png
+++ b/web/static/images/emoji/herb.png
Binary files differ
diff --git a/web/static/images/emoji/hibiscus.png b/web/static/images/emoji/hibiscus.png
index 9365ae216..e0fd12c95 100755..100644
--- a/web/static/images/emoji/hibiscus.png
+++ b/web/static/images/emoji/hibiscus.png
Binary files differ
diff --git a/web/static/images/emoji/high_brightness.png b/web/static/images/emoji/high_brightness.png
index ba9de7d40..e5f548443 100755..100644
--- a/web/static/images/emoji/high_brightness.png
+++ b/web/static/images/emoji/high_brightness.png
Binary files differ
diff --git a/web/static/images/emoji/high_heel.png b/web/static/images/emoji/high_heel.png
index 525b6a0dd..36bdb7484 100755..100644
--- a/web/static/images/emoji/high_heel.png
+++ b/web/static/images/emoji/high_heel.png
Binary files differ
diff --git a/web/static/images/emoji/hocho.png b/web/static/images/emoji/hocho.png
index 3f05193c7..43249ba94 100755..100644
--- a/web/static/images/emoji/hocho.png
+++ b/web/static/images/emoji/hocho.png
Binary files differ
diff --git a/web/static/images/emoji/hole.png b/web/static/images/emoji/hole.png
new file mode 100644
index 000000000..ca20daa89
--- /dev/null
+++ b/web/static/images/emoji/hole.png
Binary files differ
diff --git a/web/static/images/emoji/honey_pot.png b/web/static/images/emoji/honey_pot.png
index 73278898a..a563f59c7 100755..100644
--- a/web/static/images/emoji/honey_pot.png
+++ b/web/static/images/emoji/honey_pot.png
Binary files differ
diff --git a/web/static/images/emoji/honeybee.png b/web/static/images/emoji/honeybee.png
index f53733953..e67b7703b 100755..100644
--- a/web/static/images/emoji/honeybee.png
+++ b/web/static/images/emoji/honeybee.png
Binary files differ
diff --git a/web/static/images/emoji/horse.png b/web/static/images/emoji/horse.png
index 78d580ad3..90b955506 100755..100644
--- a/web/static/images/emoji/horse.png
+++ b/web/static/images/emoji/horse.png
Binary files differ
diff --git a/web/static/images/emoji/horse_racing.png b/web/static/images/emoji/horse_racing.png
index e3bbaec1d..a7abb355f 100755..100644
--- a/web/static/images/emoji/horse_racing.png
+++ b/web/static/images/emoji/horse_racing.png
Binary files differ
diff --git a/web/static/images/emoji/hospital.png b/web/static/images/emoji/hospital.png
index c05c49377..9a53371c1 100755..100644
--- a/web/static/images/emoji/hospital.png
+++ b/web/static/images/emoji/hospital.png
Binary files differ
diff --git a/web/static/images/emoji/hot_pepper.png b/web/static/images/emoji/hot_pepper.png
new file mode 100644
index 000000000..a6db2ca09
--- /dev/null
+++ b/web/static/images/emoji/hot_pepper.png
Binary files differ
diff --git a/web/static/images/emoji/hotel.png b/web/static/images/emoji/hotel.png
index d29f276a1..7a22e341f 100755..100644
--- a/web/static/images/emoji/hotel.png
+++ b/web/static/images/emoji/hotel.png
Binary files differ
diff --git a/web/static/images/emoji/hotsprings.png b/web/static/images/emoji/hotsprings.png
index a0bc9d75f..dbe158292 100755..100644
--- a/web/static/images/emoji/hotsprings.png
+++ b/web/static/images/emoji/hotsprings.png
Binary files differ
diff --git a/web/static/images/emoji/hourglass.png b/web/static/images/emoji/hourglass.png
index 405aab41b..06799f8c5 100755..100644
--- a/web/static/images/emoji/hourglass.png
+++ b/web/static/images/emoji/hourglass.png
Binary files differ
diff --git a/web/static/images/emoji/hourglass_flowing_sand.png b/web/static/images/emoji/hourglass_flowing_sand.png
index b68eb6957..bb0bbd8f7 100755..100644
--- a/web/static/images/emoji/hourglass_flowing_sand.png
+++ b/web/static/images/emoji/hourglass_flowing_sand.png
Binary files differ
diff --git a/web/static/images/emoji/house.png b/web/static/images/emoji/house.png
index 95b9ee094..90551d823 100755..100644
--- a/web/static/images/emoji/house.png
+++ b/web/static/images/emoji/house.png
Binary files differ
diff --git a/web/static/images/emoji/house_buildings.png b/web/static/images/emoji/house_buildings.png
new file mode 100644
index 000000000..b3dde7347
--- /dev/null
+++ b/web/static/images/emoji/house_buildings.png
Binary files differ
diff --git a/web/static/images/emoji/house_with_garden.png b/web/static/images/emoji/house_with_garden.png
index 3338fb717..b00186c46 100755..100644
--- a/web/static/images/emoji/house_with_garden.png
+++ b/web/static/images/emoji/house_with_garden.png
Binary files differ
diff --git a/web/static/images/emoji/hurtrealbad.png b/web/static/images/emoji/hurtrealbad.png
index 146ef1a6a..146ef1a6a 100755..100644
--- a/web/static/images/emoji/hurtrealbad.png
+++ b/web/static/images/emoji/hurtrealbad.png
Binary files differ
diff --git a/web/static/images/emoji/hushed.png b/web/static/images/emoji/hushed.png
index bbd2cd4bc..443ed5811 100755..100644
--- a/web/static/images/emoji/hushed.png
+++ b/web/static/images/emoji/hushed.png
Binary files differ
diff --git a/web/static/images/emoji/ice_cream.png b/web/static/images/emoji/ice_cream.png
index 190be0165..5dc67b4cc 100755..100644
--- a/web/static/images/emoji/ice_cream.png
+++ b/web/static/images/emoji/ice_cream.png
Binary files differ
diff --git a/web/static/images/emoji/icecream.png b/web/static/images/emoji/icecream.png
index 871ce0976..39c2e6a8f 100755..100644
--- a/web/static/images/emoji/icecream.png
+++ b/web/static/images/emoji/icecream.png
Binary files differ
diff --git a/web/static/images/emoji/id.png b/web/static/images/emoji/id.png
index 47437a76d..3ae8bc2b9 100755..100644
--- a/web/static/images/emoji/id.png
+++ b/web/static/images/emoji/id.png
Binary files differ
diff --git a/web/static/images/emoji/ideograph_advantage.png b/web/static/images/emoji/ideograph_advantage.png
index 3c1334d16..2be0c3a78 100755..100644
--- a/web/static/images/emoji/ideograph_advantage.png
+++ b/web/static/images/emoji/ideograph_advantage.png
Binary files differ
diff --git a/web/static/images/emoji/imp.png b/web/static/images/emoji/imp.png
index fa7d9dc10..bb31a6212 100755..100644
--- a/web/static/images/emoji/imp.png
+++ b/web/static/images/emoji/imp.png
Binary files differ
diff --git a/web/static/images/emoji/inbox_tray.png b/web/static/images/emoji/inbox_tray.png
index e2df0f897..266947ee9 100755..100644
--- a/web/static/images/emoji/inbox_tray.png
+++ b/web/static/images/emoji/inbox_tray.png
Binary files differ
diff --git a/web/static/images/emoji/incoming_envelope.png b/web/static/images/emoji/incoming_envelope.png
index afc827125..b16ed051f 100755..100644
--- a/web/static/images/emoji/incoming_envelope.png
+++ b/web/static/images/emoji/incoming_envelope.png
Binary files differ
diff --git a/web/static/images/emoji/information_desk_person.png b/web/static/images/emoji/information_desk_person.png
index 52c0a50a3..ffe0ab71f 100755..100644
--- a/web/static/images/emoji/information_desk_person.png
+++ b/web/static/images/emoji/information_desk_person.png
Binary files differ
diff --git a/web/static/images/emoji/information_source.png b/web/static/images/emoji/information_source.png
index 9cb8b09b2..68059c871 100755..100644
--- a/web/static/images/emoji/information_source.png
+++ b/web/static/images/emoji/information_source.png
Binary files differ
diff --git a/web/static/images/emoji/innocent.png b/web/static/images/emoji/innocent.png
index 503b614f8..1c449201d 100755..100644
--- a/web/static/images/emoji/innocent.png
+++ b/web/static/images/emoji/innocent.png
Binary files differ
diff --git a/web/static/images/emoji/interrobang.png b/web/static/images/emoji/interrobang.png
index 64304b9f5..a8e1ec2a9 100755..100644
--- a/web/static/images/emoji/interrobang.png
+++ b/web/static/images/emoji/interrobang.png
Binary files differ
diff --git a/web/static/images/emoji/iphone.png b/web/static/images/emoji/iphone.png
index df007103b..eea83475b 100755..100644
--- a/web/static/images/emoji/iphone.png
+++ b/web/static/images/emoji/iphone.png
Binary files differ
diff --git a/web/static/images/emoji/it.png b/web/static/images/emoji/it.png
index 70bc9f324..bce062350 100755..100644
--- a/web/static/images/emoji/it.png
+++ b/web/static/images/emoji/it.png
Binary files differ
diff --git a/web/static/images/emoji/izakaya_lantern.png b/web/static/images/emoji/izakaya_lantern.png
index 18730ad55..02345bc3e 100755..100644
--- a/web/static/images/emoji/izakaya_lantern.png
+++ b/web/static/images/emoji/izakaya_lantern.png
Binary files differ
diff --git a/web/static/images/emoji/jack_o_lantern.png b/web/static/images/emoji/jack_o_lantern.png
index 1f7667ea4..0ea29490d 100755..100644
--- a/web/static/images/emoji/jack_o_lantern.png
+++ b/web/static/images/emoji/jack_o_lantern.png
Binary files differ
diff --git a/web/static/images/emoji/japan.png b/web/static/images/emoji/japan.png
index 459328035..79bb896f9 100755..100644
--- a/web/static/images/emoji/japan.png
+++ b/web/static/images/emoji/japan.png
Binary files differ
diff --git a/web/static/images/emoji/japanese_castle.png b/web/static/images/emoji/japanese_castle.png
index f225ab217..ebdeecf6a 100755..100644
--- a/web/static/images/emoji/japanese_castle.png
+++ b/web/static/images/emoji/japanese_castle.png
Binary files differ
diff --git a/web/static/images/emoji/japanese_goblin.png b/web/static/images/emoji/japanese_goblin.png
index bd21b1875..20e1b4eb5 100755..100644
--- a/web/static/images/emoji/japanese_goblin.png
+++ b/web/static/images/emoji/japanese_goblin.png
Binary files differ
diff --git a/web/static/images/emoji/japanese_ogre.png b/web/static/images/emoji/japanese_ogre.png
index e9f5471c9..fd1cab65f 100755..100644
--- a/web/static/images/emoji/japanese_ogre.png
+++ b/web/static/images/emoji/japanese_ogre.png
Binary files differ
diff --git a/web/static/images/emoji/jeans.png b/web/static/images/emoji/jeans.png
index d721cea54..f1a83c4d2 100755..100644
--- a/web/static/images/emoji/jeans.png
+++ b/web/static/images/emoji/jeans.png
Binary files differ
diff --git a/web/static/images/emoji/joy.png b/web/static/images/emoji/joy.png
index 47df693d4..bc1abb7a4 100755..100644
--- a/web/static/images/emoji/joy.png
+++ b/web/static/images/emoji/joy.png
Binary files differ
diff --git a/web/static/images/emoji/joy_cat.png b/web/static/images/emoji/joy_cat.png
index 6c60cb0ef..15a2aa0e3 100755..100644
--- a/web/static/images/emoji/joy_cat.png
+++ b/web/static/images/emoji/joy_cat.png
Binary files differ
diff --git a/web/static/images/emoji/joystick.png b/web/static/images/emoji/joystick.png
new file mode 100644
index 000000000..6808f30fb
--- /dev/null
+++ b/web/static/images/emoji/joystick.png
Binary files differ
diff --git a/web/static/images/emoji/jp.png b/web/static/images/emoji/jp.png
index b786efbbd..56390ce22 100755..100644
--- a/web/static/images/emoji/jp.png
+++ b/web/static/images/emoji/jp.png
Binary files differ
diff --git a/web/static/images/emoji/key.png b/web/static/images/emoji/key.png
index 34673213f..2739df6db 100755..100644
--- a/web/static/images/emoji/key.png
+++ b/web/static/images/emoji/key.png
Binary files differ
diff --git a/web/static/images/emoji/keycap_ten.png b/web/static/images/emoji/keycap_ten.png
index 71dac1c1c..5f817b8d6 100755..100644
--- a/web/static/images/emoji/keycap_ten.png
+++ b/web/static/images/emoji/keycap_ten.png
Binary files differ
diff --git a/web/static/images/emoji/kimono.png b/web/static/images/emoji/kimono.png
index 34ffe137d..1cbdea0b1 100755..100644
--- a/web/static/images/emoji/kimono.png
+++ b/web/static/images/emoji/kimono.png
Binary files differ
diff --git a/web/static/images/emoji/kiss.png b/web/static/images/emoji/kiss.png
index 14fd9918d..bc4c8f73a 100755..100644
--- a/web/static/images/emoji/kiss.png
+++ b/web/static/images/emoji/kiss.png
Binary files differ
diff --git a/web/static/images/emoji/kissing.png b/web/static/images/emoji/kissing.png
index f3c8dcd78..b00212407 100755..100644
--- a/web/static/images/emoji/kissing.png
+++ b/web/static/images/emoji/kissing.png
Binary files differ
diff --git a/web/static/images/emoji/kissing_cat.png b/web/static/images/emoji/kissing_cat.png
index adc62fbe3..e62592137 100755..100644
--- a/web/static/images/emoji/kissing_cat.png
+++ b/web/static/images/emoji/kissing_cat.png
Binary files differ
diff --git a/web/static/images/emoji/kissing_closed_eyes.png b/web/static/images/emoji/kissing_closed_eyes.png
index 449de1970..523ef0453 100755..100644
--- a/web/static/images/emoji/kissing_closed_eyes.png
+++ b/web/static/images/emoji/kissing_closed_eyes.png
Binary files differ
diff --git a/web/static/images/emoji/kissing_face.png b/web/static/images/emoji/kissing_face.png
deleted file mode 100755
index 449de1970..000000000
--- a/web/static/images/emoji/kissing_face.png
+++ /dev/null
Binary files differ
diff --git a/web/static/images/emoji/kissing_heart.png b/web/static/images/emoji/kissing_heart.png
index af9a80b7f..834ee8ec9 100755..100644
--- a/web/static/images/emoji/kissing_heart.png
+++ b/web/static/images/emoji/kissing_heart.png
Binary files differ
diff --git a/web/static/images/emoji/kissing_smiling_eyes.png b/web/static/images/emoji/kissing_smiling_eyes.png
index 57f7b4935..7cbac1bf0 100755..100644
--- a/web/static/images/emoji/kissing_smiling_eyes.png
+++ b/web/static/images/emoji/kissing_smiling_eyes.png
Binary files differ
diff --git a/web/static/images/emoji/knife.png b/web/static/images/emoji/knife.png
new file mode 100644
index 000000000..43249ba94
--- /dev/null
+++ b/web/static/images/emoji/knife.png
Binary files differ
diff --git a/web/static/images/emoji/knife_fork_plate.png b/web/static/images/emoji/knife_fork_plate.png
new file mode 100644
index 000000000..d2ebb8435
--- /dev/null
+++ b/web/static/images/emoji/knife_fork_plate.png
Binary files differ
diff --git a/web/static/images/emoji/koala.png b/web/static/images/emoji/koala.png
index e17bd3cf5..928143905 100755..100644
--- a/web/static/images/emoji/koala.png
+++ b/web/static/images/emoji/koala.png
Binary files differ
diff --git a/web/static/images/emoji/koko.png b/web/static/images/emoji/koko.png
index 3bef28c9f..9f056070e 100755..100644
--- a/web/static/images/emoji/koko.png
+++ b/web/static/images/emoji/koko.png
Binary files differ
diff --git a/web/static/images/emoji/kr.png b/web/static/images/emoji/kr.png
index b4c0c1b67..6687991f3 100755..100644
--- a/web/static/images/emoji/kr.png
+++ b/web/static/images/emoji/kr.png
Binary files differ
diff --git a/web/static/images/emoji/label.png b/web/static/images/emoji/label.png
new file mode 100644
index 000000000..411124e2c
--- /dev/null
+++ b/web/static/images/emoji/label.png
Binary files differ
diff --git a/web/static/images/emoji/lantern.png b/web/static/images/emoji/lantern.png
new file mode 100644
index 000000000..02345bc3e
--- /dev/null
+++ b/web/static/images/emoji/lantern.png
Binary files differ
diff --git a/web/static/images/emoji/large_blue_circle.png b/web/static/images/emoji/large_blue_circle.png
index a5b4ad4aa..ddc4e7e59 100755..100644
--- a/web/static/images/emoji/large_blue_circle.png
+++ b/web/static/images/emoji/large_blue_circle.png
Binary files differ
diff --git a/web/static/images/emoji/large_blue_diamond.png b/web/static/images/emoji/large_blue_diamond.png
index f4598ec0f..fbe133557 100755..100644
--- a/web/static/images/emoji/large_blue_diamond.png
+++ b/web/static/images/emoji/large_blue_diamond.png
Binary files differ
diff --git a/web/static/images/emoji/large_orange_diamond.png b/web/static/images/emoji/large_orange_diamond.png
index 803725aad..f8c060fd2 100755..100644
--- a/web/static/images/emoji/large_orange_diamond.png
+++ b/web/static/images/emoji/large_orange_diamond.png
Binary files differ
diff --git a/web/static/images/emoji/last_quarter_moon.png b/web/static/images/emoji/last_quarter_moon.png
index 6ae30d6c2..85e0df65a 100755..100644
--- a/web/static/images/emoji/last_quarter_moon.png
+++ b/web/static/images/emoji/last_quarter_moon.png
Binary files differ
diff --git a/web/static/images/emoji/last_quarter_moon_with_face.png b/web/static/images/emoji/last_quarter_moon_with_face.png
index 9ece82dfe..37ecabbc7 100755..100644
--- a/web/static/images/emoji/last_quarter_moon_with_face.png
+++ b/web/static/images/emoji/last_quarter_moon_with_face.png
Binary files differ
diff --git a/web/static/images/emoji/laughing.png b/web/static/images/emoji/laughing.png
index 11c91eb22..d7e70b1a4 100755..100644
--- a/web/static/images/emoji/laughing.png
+++ b/web/static/images/emoji/laughing.png
Binary files differ
diff --git a/web/static/images/emoji/leaves.png b/web/static/images/emoji/leaves.png
index 5229e06bd..569a66fac 100755..100644
--- a/web/static/images/emoji/leaves.png
+++ b/web/static/images/emoji/leaves.png
Binary files differ
diff --git a/web/static/images/emoji/ledger.png b/web/static/images/emoji/ledger.png
index e4f72acea..b9a5484e4 100755..100644
--- a/web/static/images/emoji/ledger.png
+++ b/web/static/images/emoji/ledger.png
Binary files differ
diff --git a/web/static/images/emoji/left_luggage.png b/web/static/images/emoji/left_luggage.png
index 1c08b464d..b39b9075f 100755..100644
--- a/web/static/images/emoji/left_luggage.png
+++ b/web/static/images/emoji/left_luggage.png
Binary files differ
diff --git a/web/static/images/emoji/left_right_arrow.png b/web/static/images/emoji/left_right_arrow.png
index b9fd11c51..9e5e99c58 100755..100644
--- a/web/static/images/emoji/left_right_arrow.png
+++ b/web/static/images/emoji/left_right_arrow.png
Binary files differ
diff --git a/web/static/images/emoji/left_speech_bubble.png b/web/static/images/emoji/left_speech_bubble.png
new file mode 100644
index 000000000..81313baae
--- /dev/null
+++ b/web/static/images/emoji/left_speech_bubble.png
Binary files differ
diff --git a/web/static/images/emoji/leftwards_arrow_with_hook.png b/web/static/images/emoji/leftwards_arrow_with_hook.png
index bc45dfefd..a9358a56e 100755..100644
--- a/web/static/images/emoji/leftwards_arrow_with_hook.png
+++ b/web/static/images/emoji/leftwards_arrow_with_hook.png
Binary files differ
diff --git a/web/static/images/emoji/lemon.png b/web/static/images/emoji/lemon.png
index 9814dc959..fa5e87b03 100755..100644
--- a/web/static/images/emoji/lemon.png
+++ b/web/static/images/emoji/lemon.png
Binary files differ
diff --git a/web/static/images/emoji/leo.png b/web/static/images/emoji/leo.png
index e025933b2..2290f822a 100755..100644
--- a/web/static/images/emoji/leo.png
+++ b/web/static/images/emoji/leo.png
Binary files differ
diff --git a/web/static/images/emoji/leopard.png b/web/static/images/emoji/leopard.png
index 3e738d2d3..eb16aa9c6 100755..100644
--- a/web/static/images/emoji/leopard.png
+++ b/web/static/images/emoji/leopard.png
Binary files differ
diff --git a/web/static/images/emoji/level_slider.png b/web/static/images/emoji/level_slider.png
new file mode 100644
index 000000000..389784aba
--- /dev/null
+++ b/web/static/images/emoji/level_slider.png
Binary files differ
diff --git a/web/static/images/emoji/libra.png b/web/static/images/emoji/libra.png
index 6f4a927cd..3f3c33443 100755..100644
--- a/web/static/images/emoji/libra.png
+++ b/web/static/images/emoji/libra.png
Binary files differ
diff --git a/web/static/images/emoji/light_rail.png b/web/static/images/emoji/light_rail.png
index bcfe801ee..91cff3edb 100755..100644
--- a/web/static/images/emoji/light_rail.png
+++ b/web/static/images/emoji/light_rail.png
Binary files differ
diff --git a/web/static/images/emoji/lightning.png b/web/static/images/emoji/lightning.png
new file mode 100644
index 000000000..05a085e43
--- /dev/null
+++ b/web/static/images/emoji/lightning.png
Binary files differ
diff --git a/web/static/images/emoji/lightning_cloud.png b/web/static/images/emoji/lightning_cloud.png
new file mode 100644
index 000000000..05a085e43
--- /dev/null
+++ b/web/static/images/emoji/lightning_cloud.png
Binary files differ
diff --git a/web/static/images/emoji/link.png b/web/static/images/emoji/link.png
index 0239e48e4..0954f494a 100755..100644
--- a/web/static/images/emoji/link.png
+++ b/web/static/images/emoji/link.png
Binary files differ
diff --git a/web/static/images/emoji/linked_paperclips.png b/web/static/images/emoji/linked_paperclips.png
new file mode 100644
index 000000000..e449161de
--- /dev/null
+++ b/web/static/images/emoji/linked_paperclips.png
Binary files differ
diff --git a/web/static/images/emoji/lips.png b/web/static/images/emoji/lips.png
index 826ed1102..9b2e494bd 100755..100644
--- a/web/static/images/emoji/lips.png
+++ b/web/static/images/emoji/lips.png
Binary files differ
diff --git a/web/static/images/emoji/lipstick.png b/web/static/images/emoji/lipstick.png
index 82f990c56..79421767b 100755..100644
--- a/web/static/images/emoji/lipstick.png
+++ b/web/static/images/emoji/lipstick.png
Binary files differ
diff --git a/web/static/images/emoji/lock.png b/web/static/images/emoji/lock.png
index 4892b0235..f1dc55a1a 100755..100644
--- a/web/static/images/emoji/lock.png
+++ b/web/static/images/emoji/lock.png
Binary files differ
diff --git a/web/static/images/emoji/lock_with_ink_pen.png b/web/static/images/emoji/lock_with_ink_pen.png
index 375e67e82..274d6f888 100755..100644
--- a/web/static/images/emoji/lock_with_ink_pen.png
+++ b/web/static/images/emoji/lock_with_ink_pen.png
Binary files differ
diff --git a/web/static/images/emoji/lollipop.png b/web/static/images/emoji/lollipop.png
index ba55e7093..2c6a0ed4c 100755..100644
--- a/web/static/images/emoji/lollipop.png
+++ b/web/static/images/emoji/lollipop.png
Binary files differ
diff --git a/web/static/images/emoji/loop.png b/web/static/images/emoji/loop.png
index ef34df3a4..a9b9248ba 100755..100644
--- a/web/static/images/emoji/loop.png
+++ b/web/static/images/emoji/loop.png
Binary files differ
diff --git a/web/static/images/emoji/loud_sound.png b/web/static/images/emoji/loud_sound.png
new file mode 100644
index 000000000..e84702e56
--- /dev/null
+++ b/web/static/images/emoji/loud_sound.png
Binary files differ
diff --git a/web/static/images/emoji/loudspeaker.png b/web/static/images/emoji/loudspeaker.png
index 752385e52..aaf588cd7 100755..100644
--- a/web/static/images/emoji/loudspeaker.png
+++ b/web/static/images/emoji/loudspeaker.png
Binary files differ
diff --git a/web/static/images/emoji/love_hotel.png b/web/static/images/emoji/love_hotel.png
index 44d7db828..e3b893388 100755..100644
--- a/web/static/images/emoji/love_hotel.png
+++ b/web/static/images/emoji/love_hotel.png
Binary files differ
diff --git a/web/static/images/emoji/love_letter.png b/web/static/images/emoji/love_letter.png
index e29981f44..853204d48 100755..100644
--- a/web/static/images/emoji/love_letter.png
+++ b/web/static/images/emoji/love_letter.png
Binary files differ
diff --git a/web/static/images/emoji/low_brightness.png b/web/static/images/emoji/low_brightness.png
index ea15bde4f..aecba4603 100755..100644
--- a/web/static/images/emoji/low_brightness.png
+++ b/web/static/images/emoji/low_brightness.png
Binary files differ
diff --git a/web/static/images/emoji/lower_left_ballpoint_pen.png b/web/static/images/emoji/lower_left_ballpoint_pen.png
new file mode 100644
index 000000000..b363fd8bd
--- /dev/null
+++ b/web/static/images/emoji/lower_left_ballpoint_pen.png
Binary files differ
diff --git a/web/static/images/emoji/lower_left_crayon.png b/web/static/images/emoji/lower_left_crayon.png
new file mode 100644
index 000000000..3d8392f9b
--- /dev/null
+++ b/web/static/images/emoji/lower_left_crayon.png
Binary files differ
diff --git a/web/static/images/emoji/lower_left_fountain_pen.png b/web/static/images/emoji/lower_left_fountain_pen.png
new file mode 100644
index 000000000..0b4301c18
--- /dev/null
+++ b/web/static/images/emoji/lower_left_fountain_pen.png
Binary files differ
diff --git a/web/static/images/emoji/lower_left_paintbrush.png b/web/static/images/emoji/lower_left_paintbrush.png
new file mode 100644
index 000000000..49eab81fa
--- /dev/null
+++ b/web/static/images/emoji/lower_left_paintbrush.png
Binary files differ
diff --git a/web/static/images/emoji/m.png b/web/static/images/emoji/m.png
index 7e3a3bffb..7de289795 100755..100644
--- a/web/static/images/emoji/m.png
+++ b/web/static/images/emoji/m.png
Binary files differ
diff --git a/web/static/images/emoji/mag.png b/web/static/images/emoji/mag.png
index aa5b1d7c4..99982fbec 100755..100644
--- a/web/static/images/emoji/mag.png
+++ b/web/static/images/emoji/mag.png
Binary files differ
diff --git a/web/static/images/emoji/mag_right.png b/web/static/images/emoji/mag_right.png
index 6e6cf11e6..95d12da0e 100755..100644
--- a/web/static/images/emoji/mag_right.png
+++ b/web/static/images/emoji/mag_right.png
Binary files differ
diff --git a/web/static/images/emoji/mahjong.png b/web/static/images/emoji/mahjong.png
index f51ce65fd..16a59d954 100755..100644
--- a/web/static/images/emoji/mahjong.png
+++ b/web/static/images/emoji/mahjong.png
Binary files differ
diff --git a/web/static/images/emoji/mailbox.png b/web/static/images/emoji/mailbox.png
index 8351e7076..5e3aa1019 100755..100644
--- a/web/static/images/emoji/mailbox.png
+++ b/web/static/images/emoji/mailbox.png
Binary files differ
diff --git a/web/static/images/emoji/mailbox_closed.png b/web/static/images/emoji/mailbox_closed.png
index a5982b69b..7a9f1e301 100755..100644
--- a/web/static/images/emoji/mailbox_closed.png
+++ b/web/static/images/emoji/mailbox_closed.png
Binary files differ
diff --git a/web/static/images/emoji/mailbox_with_mail.png b/web/static/images/emoji/mailbox_with_mail.png
index dae345943..f8c7362a8 100755..100644
--- a/web/static/images/emoji/mailbox_with_mail.png
+++ b/web/static/images/emoji/mailbox_with_mail.png
Binary files differ
diff --git a/web/static/images/emoji/mailbox_with_no_mail.png b/web/static/images/emoji/mailbox_with_no_mail.png
index 59f15c5d7..a4b4797ee 100755..100644
--- a/web/static/images/emoji/mailbox_with_no_mail.png
+++ b/web/static/images/emoji/mailbox_with_no_mail.png
Binary files differ
diff --git a/web/static/images/emoji/man-woman-boy.png b/web/static/images/emoji/man-woman-boy.png
new file mode 100644
index 000000000..e0d81ddb7
--- /dev/null
+++ b/web/static/images/emoji/man-woman-boy.png
Binary files differ
diff --git a/web/static/images/emoji/man.png b/web/static/images/emoji/man.png
index d9bfa26a6..8efb7f43b 100755..100644
--- a/web/static/images/emoji/man.png
+++ b/web/static/images/emoji/man.png
Binary files differ
diff --git a/web/static/images/emoji/man_and_woman_holding_hands.png b/web/static/images/emoji/man_and_woman_holding_hands.png
new file mode 100644
index 000000000..616f8520b
--- /dev/null
+++ b/web/static/images/emoji/man_and_woman_holding_hands.png
Binary files differ
diff --git a/web/static/images/emoji/man_in_business_suit_levitating.png b/web/static/images/emoji/man_in_business_suit_levitating.png
new file mode 100644
index 000000000..1c526acbe
--- /dev/null
+++ b/web/static/images/emoji/man_in_business_suit_levitating.png
Binary files differ
diff --git a/web/static/images/emoji/man_with_gua_pi_mao.png b/web/static/images/emoji/man_with_gua_pi_mao.png
index 7aad74b55..bd01585c4 100755..100644
--- a/web/static/images/emoji/man_with_gua_pi_mao.png
+++ b/web/static/images/emoji/man_with_gua_pi_mao.png
Binary files differ
diff --git a/web/static/images/emoji/man_with_turban.png b/web/static/images/emoji/man_with_turban.png
index 036604caf..e968c78fe 100755..100644
--- a/web/static/images/emoji/man_with_turban.png
+++ b/web/static/images/emoji/man_with_turban.png
Binary files differ
diff --git a/web/static/images/emoji/mans_shoe.png b/web/static/images/emoji/mans_shoe.png
index ecba9ba7d..8d8a9feeb 100755..100644
--- a/web/static/images/emoji/mans_shoe.png
+++ b/web/static/images/emoji/mans_shoe.png
Binary files differ
diff --git a/web/static/images/emoji/mantelpiece_clock.png b/web/static/images/emoji/mantelpiece_clock.png
new file mode 100644
index 000000000..f944ec0c6
--- /dev/null
+++ b/web/static/images/emoji/mantelpiece_clock.png
Binary files differ
diff --git a/web/static/images/emoji/maple_leaf.png b/web/static/images/emoji/maple_leaf.png
index 4e9b47207..2756537f1 100755..100644
--- a/web/static/images/emoji/maple_leaf.png
+++ b/web/static/images/emoji/maple_leaf.png
Binary files differ
diff --git a/web/static/images/emoji/mask.png b/web/static/images/emoji/mask.png
index 05887e99c..7110927b8 100755..100644
--- a/web/static/images/emoji/mask.png
+++ b/web/static/images/emoji/mask.png
Binary files differ
diff --git a/web/static/images/emoji/massage.png b/web/static/images/emoji/massage.png
index dd30d1597..4890c3395 100755..100644
--- a/web/static/images/emoji/massage.png
+++ b/web/static/images/emoji/massage.png
Binary files differ
diff --git a/web/static/images/emoji/meat_on_bone.png b/web/static/images/emoji/meat_on_bone.png
index 5b79a660c..e9697fef1 100755..100644
--- a/web/static/images/emoji/meat_on_bone.png
+++ b/web/static/images/emoji/meat_on_bone.png
Binary files differ
diff --git a/web/static/images/emoji/medal.png b/web/static/images/emoji/medal.png
new file mode 100644
index 000000000..6558c71fc
--- /dev/null
+++ b/web/static/images/emoji/medal.png
Binary files differ
diff --git a/web/static/images/emoji/mega.png b/web/static/images/emoji/mega.png
index 022df2f8d..51bc09152 100755..100644
--- a/web/static/images/emoji/mega.png
+++ b/web/static/images/emoji/mega.png
Binary files differ
diff --git a/web/static/images/emoji/melon.png b/web/static/images/emoji/melon.png
index 11c13cbbd..b27f00d25 100755..100644
--- a/web/static/images/emoji/melon.png
+++ b/web/static/images/emoji/melon.png
Binary files differ
diff --git a/web/static/images/emoji/memo.png b/web/static/images/emoji/memo.png
index fc97ddbc9..61e5a08e6 100755..100644
--- a/web/static/images/emoji/memo.png
+++ b/web/static/images/emoji/memo.png
Binary files differ
diff --git a/web/static/images/emoji/mens.png b/web/static/images/emoji/mens.png
index abccfc9f2..db526a641 100755..100644
--- a/web/static/images/emoji/mens.png
+++ b/web/static/images/emoji/mens.png
Binary files differ
diff --git a/web/static/images/emoji/metal.png b/web/static/images/emoji/metal.png
index 94f1fda22..94f1fda22 100755..100644
--- a/web/static/images/emoji/metal.png
+++ b/web/static/images/emoji/metal.png
Binary files differ
diff --git a/web/static/images/emoji/metro.png b/web/static/images/emoji/metro.png
index 4acf5ab3e..747ab8ad1 100755..100644
--- a/web/static/images/emoji/metro.png
+++ b/web/static/images/emoji/metro.png
Binary files differ
diff --git a/web/static/images/emoji/microphone.png b/web/static/images/emoji/microphone.png
index 68c74adad..346b8967c 100755..100644
--- a/web/static/images/emoji/microphone.png
+++ b/web/static/images/emoji/microphone.png
Binary files differ
diff --git a/web/static/images/emoji/microscope.png b/web/static/images/emoji/microscope.png
index 8b7a5e4e6..944293d1e 100755..100644
--- a/web/static/images/emoji/microscope.png
+++ b/web/static/images/emoji/microscope.png
Binary files differ
diff --git a/web/static/images/emoji/middle_finger.png b/web/static/images/emoji/middle_finger.png
new file mode 100644
index 000000000..c4e5d4a91
--- /dev/null
+++ b/web/static/images/emoji/middle_finger.png
Binary files differ
diff --git a/web/static/images/emoji/milky_way.png b/web/static/images/emoji/milky_way.png
index 901090a12..4ee1090f4 100755..100644
--- a/web/static/images/emoji/milky_way.png
+++ b/web/static/images/emoji/milky_way.png
Binary files differ
diff --git a/web/static/images/emoji/minibus.png b/web/static/images/emoji/minibus.png
index c52cef234..462d0a348 100755..100644
--- a/web/static/images/emoji/minibus.png
+++ b/web/static/images/emoji/minibus.png
Binary files differ
diff --git a/web/static/images/emoji/minidisc.png b/web/static/images/emoji/minidisc.png
index e19cc5d01..49d651f9e 100755..100644
--- a/web/static/images/emoji/minidisc.png
+++ b/web/static/images/emoji/minidisc.png
Binary files differ
diff --git a/web/static/images/emoji/mobile_phone_off.png b/web/static/images/emoji/mobile_phone_off.png
index fa16c763c..63d1deeaa 100755..100644
--- a/web/static/images/emoji/mobile_phone_off.png
+++ b/web/static/images/emoji/mobile_phone_off.png
Binary files differ
diff --git a/web/static/images/emoji/money_with_wings.png b/web/static/images/emoji/money_with_wings.png
index 581a82449..46591e443 100755..100644
--- a/web/static/images/emoji/money_with_wings.png
+++ b/web/static/images/emoji/money_with_wings.png
Binary files differ
diff --git a/web/static/images/emoji/moneybag.png b/web/static/images/emoji/moneybag.png
index 5546c04ba..a44896ab0 100755..100644
--- a/web/static/images/emoji/moneybag.png
+++ b/web/static/images/emoji/moneybag.png
Binary files differ
diff --git a/web/static/images/emoji/monkey.png b/web/static/images/emoji/monkey.png
index 640703597..33e542ba6 100755..100644
--- a/web/static/images/emoji/monkey.png
+++ b/web/static/images/emoji/monkey.png
Binary files differ
diff --git a/web/static/images/emoji/monkey_face.png b/web/static/images/emoji/monkey_face.png
index 6964cf4d5..a753bae1c 100755..100644
--- a/web/static/images/emoji/monkey_face.png
+++ b/web/static/images/emoji/monkey_face.png
Binary files differ
diff --git a/web/static/images/emoji/monorail.png b/web/static/images/emoji/monorail.png
index 913d30024..83ba5af45 100755..100644
--- a/web/static/images/emoji/monorail.png
+++ b/web/static/images/emoji/monorail.png
Binary files differ
diff --git a/web/static/images/emoji/moon.png b/web/static/images/emoji/moon.png
new file mode 100644
index 000000000..b53fd4288
--- /dev/null
+++ b/web/static/images/emoji/moon.png
Binary files differ
diff --git a/web/static/images/emoji/mortar_board.png b/web/static/images/emoji/mortar_board.png
index 84513f6ba..4d5744f60 100755..100644
--- a/web/static/images/emoji/mortar_board.png
+++ b/web/static/images/emoji/mortar_board.png
Binary files differ
diff --git a/web/static/images/emoji/motor_boat.png b/web/static/images/emoji/motor_boat.png
new file mode 100644
index 000000000..1e720f431
--- /dev/null
+++ b/web/static/images/emoji/motor_boat.png
Binary files differ
diff --git a/web/static/images/emoji/motorway.png b/web/static/images/emoji/motorway.png
new file mode 100644
index 000000000..c7f7a5d48
--- /dev/null
+++ b/web/static/images/emoji/motorway.png
Binary files differ
diff --git a/web/static/images/emoji/mount_fuji.png b/web/static/images/emoji/mount_fuji.png
index 4c313e583..51d1aeab1 100755..100644
--- a/web/static/images/emoji/mount_fuji.png
+++ b/web/static/images/emoji/mount_fuji.png
Binary files differ
diff --git a/web/static/images/emoji/mountain_bicyclist.png b/web/static/images/emoji/mountain_bicyclist.png
index b69889756..d2aa6f821 100755..100644
--- a/web/static/images/emoji/mountain_bicyclist.png
+++ b/web/static/images/emoji/mountain_bicyclist.png
Binary files differ
diff --git a/web/static/images/emoji/mountain_cableway.png b/web/static/images/emoji/mountain_cableway.png
index 5688bb239..6dbd7307e 100755..100644
--- a/web/static/images/emoji/mountain_cableway.png
+++ b/web/static/images/emoji/mountain_cableway.png
Binary files differ
diff --git a/web/static/images/emoji/mountain_railway.png b/web/static/images/emoji/mountain_railway.png
index 1f3d1aab5..c69df1f8f 100755..100644
--- a/web/static/images/emoji/mountain_railway.png
+++ b/web/static/images/emoji/mountain_railway.png
Binary files differ
diff --git a/web/static/images/emoji/mouse.png b/web/static/images/emoji/mouse.png
index 8ff162e2d..a8e5eb73f 100755..100644
--- a/web/static/images/emoji/mouse.png
+++ b/web/static/images/emoji/mouse.png
Binary files differ
diff --git a/web/static/images/emoji/mouse2.png b/web/static/images/emoji/mouse2.png
index 2d777e5e1..5b1b1137f 100755..100644
--- a/web/static/images/emoji/mouse2.png
+++ b/web/static/images/emoji/mouse2.png
Binary files differ
diff --git a/web/static/images/emoji/movie_camera.png b/web/static/images/emoji/movie_camera.png
index 9c1438409..077458b67 100755..100644
--- a/web/static/images/emoji/movie_camera.png
+++ b/web/static/images/emoji/movie_camera.png
Binary files differ
diff --git a/web/static/images/emoji/moyai.png b/web/static/images/emoji/moyai.png
index 61a1a9c21..247d34e25 100755..100644
--- a/web/static/images/emoji/moyai.png
+++ b/web/static/images/emoji/moyai.png
Binary files differ
diff --git a/web/static/images/emoji/muscle.png b/web/static/images/emoji/muscle.png
index 19f92efb6..9300534fa 100755..100644
--- a/web/static/images/emoji/muscle.png
+++ b/web/static/images/emoji/muscle.png
Binary files differ
diff --git a/web/static/images/emoji/mushroom.png b/web/static/images/emoji/mushroom.png
index 5eeed8e79..ca7a039cb 100755..100644
--- a/web/static/images/emoji/mushroom.png
+++ b/web/static/images/emoji/mushroom.png
Binary files differ
diff --git a/web/static/images/emoji/musical_keyboard.png b/web/static/images/emoji/musical_keyboard.png
index 93647a4a3..c6c029920 100755..100644
--- a/web/static/images/emoji/musical_keyboard.png
+++ b/web/static/images/emoji/musical_keyboard.png
Binary files differ
diff --git a/web/static/images/emoji/musical_note.png b/web/static/images/emoji/musical_note.png
index 68b261bcb..f9bc86e4e 100755..100644
--- a/web/static/images/emoji/musical_note.png
+++ b/web/static/images/emoji/musical_note.png
Binary files differ
diff --git a/web/static/images/emoji/musical_score.png b/web/static/images/emoji/musical_score.png
index c99e3381f..ae50ab288 100755..100644
--- a/web/static/images/emoji/musical_score.png
+++ b/web/static/images/emoji/musical_score.png
Binary files differ
diff --git a/web/static/images/emoji/mute.png b/web/static/images/emoji/mute.png
index 4cf67c367..04d987046 100755..100644
--- a/web/static/images/emoji/mute.png
+++ b/web/static/images/emoji/mute.png
Binary files differ
diff --git a/web/static/images/emoji/nail_care.png b/web/static/images/emoji/nail_care.png
index 6a66e63d2..279881c26 100755..100644
--- a/web/static/images/emoji/nail_care.png
+++ b/web/static/images/emoji/nail_care.png
Binary files differ
diff --git a/web/static/images/emoji/name_badge.png b/web/static/images/emoji/name_badge.png
index 2b712dcd5..a1ffb38b3 100755..100644
--- a/web/static/images/emoji/name_badge.png
+++ b/web/static/images/emoji/name_badge.png
Binary files differ
diff --git a/web/static/images/emoji/national_park.png b/web/static/images/emoji/national_park.png
new file mode 100644
index 000000000..ff6fc0754
--- /dev/null
+++ b/web/static/images/emoji/national_park.png
Binary files differ
diff --git a/web/static/images/emoji/neckbeard.png b/web/static/images/emoji/neckbeard.png
index 6e31d1652..6e31d1652 100755..100644
--- a/web/static/images/emoji/neckbeard.png
+++ b/web/static/images/emoji/neckbeard.png
Binary files differ
diff --git a/web/static/images/emoji/necktie.png b/web/static/images/emoji/necktie.png
index 80461c66f..3ed0339bf 100755..100644
--- a/web/static/images/emoji/necktie.png
+++ b/web/static/images/emoji/necktie.png
Binary files differ
diff --git a/web/static/images/emoji/negative_squared_cross_mark.png b/web/static/images/emoji/negative_squared_cross_mark.png
index b47a0cece..90ca18394 100755..100644
--- a/web/static/images/emoji/negative_squared_cross_mark.png
+++ b/web/static/images/emoji/negative_squared_cross_mark.png
Binary files differ
diff --git a/web/static/images/emoji/neutral_face.png b/web/static/images/emoji/neutral_face.png
index 682a1ba06..6cabdf2f4 100755..100644
--- a/web/static/images/emoji/neutral_face.png
+++ b/web/static/images/emoji/neutral_face.png
Binary files differ
diff --git a/web/static/images/emoji/new.png b/web/static/images/emoji/new.png
index 28d1570e0..9d9f89101 100755..100644
--- a/web/static/images/emoji/new.png
+++ b/web/static/images/emoji/new.png
Binary files differ
diff --git a/web/static/images/emoji/new_moon.png b/web/static/images/emoji/new_moon.png
index 72492cb90..06e5e67f2 100755..100644
--- a/web/static/images/emoji/new_moon.png
+++ b/web/static/images/emoji/new_moon.png
Binary files differ
diff --git a/web/static/images/emoji/new_moon_with_face.png b/web/static/images/emoji/new_moon_with_face.png
index 21a696eb9..c7b2e8011 100755..100644
--- a/web/static/images/emoji/new_moon_with_face.png
+++ b/web/static/images/emoji/new_moon_with_face.png
Binary files differ
diff --git a/web/static/images/emoji/newspaper.png b/web/static/images/emoji/newspaper.png
index 60c3394dc..ae5e31494 100755..100644
--- a/web/static/images/emoji/newspaper.png
+++ b/web/static/images/emoji/newspaper.png
Binary files differ
diff --git a/web/static/images/emoji/ng.png b/web/static/images/emoji/ng.png
index 2ca180ae3..cc45e9df2 100755..100644
--- a/web/static/images/emoji/ng.png
+++ b/web/static/images/emoji/ng.png
Binary files differ
diff --git a/web/static/images/emoji/night_with_stars.png b/web/static/images/emoji/night_with_stars.png
new file mode 100644
index 000000000..b6b629204
--- /dev/null
+++ b/web/static/images/emoji/night_with_stars.png
Binary files differ
diff --git a/web/static/images/emoji/nine.png b/web/static/images/emoji/nine.png
index 8006cc909..e6b38a109 100755..100644
--- a/web/static/images/emoji/nine.png
+++ b/web/static/images/emoji/nine.png
Binary files differ
diff --git a/web/static/images/emoji/no_bell.png b/web/static/images/emoji/no_bell.png
index 613b81cd2..30e8858aa 100755..100644
--- a/web/static/images/emoji/no_bell.png
+++ b/web/static/images/emoji/no_bell.png
Binary files differ
diff --git a/web/static/images/emoji/no_bicycles.png b/web/static/images/emoji/no_bicycles.png
index 4b2621664..278f1424e 100755..100644
--- a/web/static/images/emoji/no_bicycles.png
+++ b/web/static/images/emoji/no_bicycles.png
Binary files differ
diff --git a/web/static/images/emoji/no_entry.png b/web/static/images/emoji/no_entry.png
index cf2086a8e..aca2edaa7 100755..100644
--- a/web/static/images/emoji/no_entry.png
+++ b/web/static/images/emoji/no_entry.png
Binary files differ
diff --git a/web/static/images/emoji/no_entry_sign.png b/web/static/images/emoji/no_entry_sign.png
index b3231f66d..6577a1058 100755..100644
--- a/web/static/images/emoji/no_entry_sign.png
+++ b/web/static/images/emoji/no_entry_sign.png
Binary files differ
diff --git a/web/static/images/emoji/no_good.png b/web/static/images/emoji/no_good.png
index d459a35bc..d7eead9de 100755..100644
--- a/web/static/images/emoji/no_good.png
+++ b/web/static/images/emoji/no_good.png
Binary files differ
diff --git a/web/static/images/emoji/no_mobile_phones.png b/web/static/images/emoji/no_mobile_phones.png
index 41df57cf8..8324e4361 100755..100644
--- a/web/static/images/emoji/no_mobile_phones.png
+++ b/web/static/images/emoji/no_mobile_phones.png
Binary files differ
diff --git a/web/static/images/emoji/no_mouth.png b/web/static/images/emoji/no_mouth.png
index e67802046..549fff988 100755..100644
--- a/web/static/images/emoji/no_mouth.png
+++ b/web/static/images/emoji/no_mouth.png
Binary files differ
diff --git a/web/static/images/emoji/no_pedestrians.png b/web/static/images/emoji/no_pedestrians.png
index 53ee0f927..b015b4eaf 100755..100644
--- a/web/static/images/emoji/no_pedestrians.png
+++ b/web/static/images/emoji/no_pedestrians.png
Binary files differ
diff --git a/web/static/images/emoji/no_smoking.png b/web/static/images/emoji/no_smoking.png
index 5880ddfd1..939a81ae8 100755..100644
--- a/web/static/images/emoji/no_smoking.png
+++ b/web/static/images/emoji/no_smoking.png
Binary files differ
diff --git a/web/static/images/emoji/non-potable_water.png b/web/static/images/emoji/non-potable_water.png
index 1b29d35b9..34de27d65 100755..100644
--- a/web/static/images/emoji/non-potable_water.png
+++ b/web/static/images/emoji/non-potable_water.png
Binary files differ
diff --git a/web/static/images/emoji/nose.png b/web/static/images/emoji/nose.png
index ad17c16c2..f3d289014 100755..100644
--- a/web/static/images/emoji/nose.png
+++ b/web/static/images/emoji/nose.png
Binary files differ
diff --git a/web/static/images/emoji/notebook.png b/web/static/images/emoji/notebook.png
index 5f0a5f6a2..5ed4f4112 100755..100644
--- a/web/static/images/emoji/notebook.png
+++ b/web/static/images/emoji/notebook.png
Binary files differ
diff --git a/web/static/images/emoji/notebook_with_decorative_cover.png b/web/static/images/emoji/notebook_with_decorative_cover.png
index 4f3b14c85..839ee3e78 100755..100644
--- a/web/static/images/emoji/notebook_with_decorative_cover.png
+++ b/web/static/images/emoji/notebook_with_decorative_cover.png
Binary files differ
diff --git a/web/static/images/emoji/notes.png b/web/static/images/emoji/notes.png
index 0956d6ab2..df2810aa4 100755..100644
--- a/web/static/images/emoji/notes.png
+++ b/web/static/images/emoji/notes.png
Binary files differ
diff --git a/web/static/images/emoji/nut_and_bolt.png b/web/static/images/emoji/nut_and_bolt.png
index bddfa72a7..fee747a01 100755..100644
--- a/web/static/images/emoji/nut_and_bolt.png
+++ b/web/static/images/emoji/nut_and_bolt.png
Binary files differ
diff --git a/web/static/images/emoji/o.png b/web/static/images/emoji/o.png
index 1ff846c19..f141dc452 100755..100644
--- a/web/static/images/emoji/o.png
+++ b/web/static/images/emoji/o.png
Binary files differ
diff --git a/web/static/images/emoji/o2.png b/web/static/images/emoji/o2.png
index d85f9fb98..b39215725 100755..100644
--- a/web/static/images/emoji/o2.png
+++ b/web/static/images/emoji/o2.png
Binary files differ
diff --git a/web/static/images/emoji/ocean.png b/web/static/images/emoji/ocean.png
index f8d520cd4..172dfffdf 100755..100644
--- a/web/static/images/emoji/ocean.png
+++ b/web/static/images/emoji/ocean.png
Binary files differ
diff --git a/web/static/images/emoji/octocat.png b/web/static/images/emoji/octocat.png
index d296f25fe..d296f25fe 100755..100644
--- a/web/static/images/emoji/octocat.png
+++ b/web/static/images/emoji/octocat.png
Binary files differ
diff --git a/web/static/images/emoji/octopus.png b/web/static/images/emoji/octopus.png
index 52ce64b46..8add7143e 100755..100644
--- a/web/static/images/emoji/octopus.png
+++ b/web/static/images/emoji/octopus.png
Binary files differ
diff --git a/web/static/images/emoji/oden.png b/web/static/images/emoji/oden.png
index 73add1c73..8ac803517 100755..100644
--- a/web/static/images/emoji/oden.png
+++ b/web/static/images/emoji/oden.png
Binary files differ
diff --git a/web/static/images/emoji/office.png b/web/static/images/emoji/office.png
index 53c3ef8d1..52a6bb4a4 100755..100644
--- a/web/static/images/emoji/office.png
+++ b/web/static/images/emoji/office.png
Binary files differ
diff --git a/web/static/images/emoji/oil_drum.png b/web/static/images/emoji/oil_drum.png
new file mode 100644
index 000000000..e7e597a98
--- /dev/null
+++ b/web/static/images/emoji/oil_drum.png
Binary files differ
diff --git a/web/static/images/emoji/ok.png b/web/static/images/emoji/ok.png
index 6433d1a90..ffa868d43 100755..100644
--- a/web/static/images/emoji/ok.png
+++ b/web/static/images/emoji/ok.png
Binary files differ
diff --git a/web/static/images/emoji/ok_hand.png b/web/static/images/emoji/ok_hand.png
index 80c5aebb6..bf84e0df4 100755..100644
--- a/web/static/images/emoji/ok_hand.png
+++ b/web/static/images/emoji/ok_hand.png
Binary files differ
diff --git a/web/static/images/emoji/ok_woman.png b/web/static/images/emoji/ok_woman.png
index e8b98194e..fcafef225 100755..100644
--- a/web/static/images/emoji/ok_woman.png
+++ b/web/static/images/emoji/ok_woman.png
Binary files differ
diff --git a/web/static/images/emoji/old_key.png b/web/static/images/emoji/old_key.png
new file mode 100644
index 000000000..d153b6888
--- /dev/null
+++ b/web/static/images/emoji/old_key.png
Binary files differ
diff --git a/web/static/images/emoji/older_man.png b/web/static/images/emoji/older_man.png
index 149f0cfb8..18fbbdde8 100755..100644
--- a/web/static/images/emoji/older_man.png
+++ b/web/static/images/emoji/older_man.png
Binary files differ
diff --git a/web/static/images/emoji/older_woman.png b/web/static/images/emoji/older_woman.png
index f839565f4..0848ebe92 100755..100644
--- a/web/static/images/emoji/older_woman.png
+++ b/web/static/images/emoji/older_woman.png
Binary files differ
diff --git a/web/static/images/emoji/om_symbol.png b/web/static/images/emoji/om_symbol.png
new file mode 100644
index 000000000..52cc9f00e
--- /dev/null
+++ b/web/static/images/emoji/om_symbol.png
Binary files differ
diff --git a/web/static/images/emoji/on.png b/web/static/images/emoji/on.png
index 4cd69a15d..3c369cb1d 100755..100644
--- a/web/static/images/emoji/on.png
+++ b/web/static/images/emoji/on.png
Binary files differ
diff --git a/web/static/images/emoji/oncoming_automobile.png b/web/static/images/emoji/oncoming_automobile.png
index cb46de22c..b9b0dafbf 100755..100644
--- a/web/static/images/emoji/oncoming_automobile.png
+++ b/web/static/images/emoji/oncoming_automobile.png
Binary files differ
diff --git a/web/static/images/emoji/oncoming_bus.png b/web/static/images/emoji/oncoming_bus.png
index 3695f7623..bac2d85e3 100755..100644
--- a/web/static/images/emoji/oncoming_bus.png
+++ b/web/static/images/emoji/oncoming_bus.png
Binary files differ
diff --git a/web/static/images/emoji/oncoming_police_car.png b/web/static/images/emoji/oncoming_police_car.png
index af20e7eff..2ab9c3302 100755..100644
--- a/web/static/images/emoji/oncoming_police_car.png
+++ b/web/static/images/emoji/oncoming_police_car.png
Binary files differ
diff --git a/web/static/images/emoji/oncoming_taxi.png b/web/static/images/emoji/oncoming_taxi.png
index f78cf3103..108d49693 100755..100644
--- a/web/static/images/emoji/oncoming_taxi.png
+++ b/web/static/images/emoji/oncoming_taxi.png
Binary files differ
diff --git a/web/static/images/emoji/one.png b/web/static/images/emoji/one.png
index 2d1f9f8c4..b10ef8c0c 100755..100644
--- a/web/static/images/emoji/one.png
+++ b/web/static/images/emoji/one.png
Binary files differ
diff --git a/web/static/images/emoji/open_book.png b/web/static/images/emoji/open_book.png
new file mode 100644
index 000000000..01c836a7e
--- /dev/null
+++ b/web/static/images/emoji/open_book.png
Binary files differ
diff --git a/web/static/images/emoji/open_file_folder.png b/web/static/images/emoji/open_file_folder.png
index 2bbbbf5e7..2d48340bf 100755..100644
--- a/web/static/images/emoji/open_file_folder.png
+++ b/web/static/images/emoji/open_file_folder.png
Binary files differ
diff --git a/web/static/images/emoji/open_hands.png b/web/static/images/emoji/open_hands.png
index cef9f428b..c8eb0bab5 100755..100644
--- a/web/static/images/emoji/open_hands.png
+++ b/web/static/images/emoji/open_hands.png
Binary files differ
diff --git a/web/static/images/emoji/open_mouth.png b/web/static/images/emoji/open_mouth.png
index daf914274..3f9cc3fff 100755..100644
--- a/web/static/images/emoji/open_mouth.png
+++ b/web/static/images/emoji/open_mouth.png
Binary files differ
diff --git a/web/static/images/emoji/ophiuchus.png b/web/static/images/emoji/ophiuchus.png
index 4eef715bc..600ad3a3c 100755..100644
--- a/web/static/images/emoji/ophiuchus.png
+++ b/web/static/images/emoji/ophiuchus.png
Binary files differ
diff --git a/web/static/images/emoji/orange_book.png b/web/static/images/emoji/orange_book.png
index 49650d59e..8ecfd9c10 100755..100644
--- a/web/static/images/emoji/orange_book.png
+++ b/web/static/images/emoji/orange_book.png
Binary files differ
diff --git a/web/static/images/emoji/outbox_tray.png b/web/static/images/emoji/outbox_tray.png
index 7ad15e649..7afec2610 100755..100644
--- a/web/static/images/emoji/outbox_tray.png
+++ b/web/static/images/emoji/outbox_tray.png
Binary files differ
diff --git a/web/static/images/emoji/ox.png b/web/static/images/emoji/ox.png
index 8d9819462..e1688630c 100755..100644
--- a/web/static/images/emoji/ox.png
+++ b/web/static/images/emoji/ox.png
Binary files differ
diff --git a/web/static/images/emoji/package.png b/web/static/images/emoji/package.png
index 26602af9d..424c4fd19 100755..100644
--- a/web/static/images/emoji/package.png
+++ b/web/static/images/emoji/package.png
Binary files differ
diff --git a/web/static/images/emoji/page_facing_up.png b/web/static/images/emoji/page_facing_up.png
index 804c0d739..f3023ba74 100755..100644
--- a/web/static/images/emoji/page_facing_up.png
+++ b/web/static/images/emoji/page_facing_up.png
Binary files differ
diff --git a/web/static/images/emoji/page_with_curl.png b/web/static/images/emoji/page_with_curl.png
index 37cb4de50..306b7e4d7 100755..100644
--- a/web/static/images/emoji/page_with_curl.png
+++ b/web/static/images/emoji/page_with_curl.png
Binary files differ
diff --git a/web/static/images/emoji/pager.png b/web/static/images/emoji/pager.png
index e3e1fc44e..acfd131a0 100755..100644
--- a/web/static/images/emoji/pager.png
+++ b/web/static/images/emoji/pager.png
Binary files differ
diff --git a/web/static/images/emoji/palm_tree.png b/web/static/images/emoji/palm_tree.png
index d13b7c620..b18cffc94 100755..100644
--- a/web/static/images/emoji/palm_tree.png
+++ b/web/static/images/emoji/palm_tree.png
Binary files differ
diff --git a/web/static/images/emoji/panda_face.png b/web/static/images/emoji/panda_face.png
index a794fb17f..a1ded2a6c 100755..100644
--- a/web/static/images/emoji/panda_face.png
+++ b/web/static/images/emoji/panda_face.png
Binary files differ
diff --git a/web/static/images/emoji/paperclip.png b/web/static/images/emoji/paperclip.png
index 677669a83..e241e1189 100755..100644
--- a/web/static/images/emoji/paperclip.png
+++ b/web/static/images/emoji/paperclip.png
Binary files differ
diff --git a/web/static/images/emoji/parking.png b/web/static/images/emoji/parking.png
index c24af81cc..340033226 100755..100644
--- a/web/static/images/emoji/parking.png
+++ b/web/static/images/emoji/parking.png
Binary files differ
diff --git a/web/static/images/emoji/part_alternation_mark.png b/web/static/images/emoji/part_alternation_mark.png
index 1e5855f8d..d39063ed9 100755..100644
--- a/web/static/images/emoji/part_alternation_mark.png
+++ b/web/static/images/emoji/part_alternation_mark.png
Binary files differ
diff --git a/web/static/images/emoji/partly_sunny.png b/web/static/images/emoji/partly_sunny.png
index b3f5bcfdd..a5c8d31b8 100755..100644
--- a/web/static/images/emoji/partly_sunny.png
+++ b/web/static/images/emoji/partly_sunny.png
Binary files differ
diff --git a/web/static/images/emoji/passenger_ship.png b/web/static/images/emoji/passenger_ship.png
new file mode 100644
index 000000000..512cb1200
--- /dev/null
+++ b/web/static/images/emoji/passenger_ship.png
Binary files differ
diff --git a/web/static/images/emoji/passport_control.png b/web/static/images/emoji/passport_control.png
index 675b76d37..51359c754 100755..100644
--- a/web/static/images/emoji/passport_control.png
+++ b/web/static/images/emoji/passport_control.png
Binary files differ
diff --git a/web/static/images/emoji/paw_prints.png b/web/static/images/emoji/paw_prints.png
index 89b9fec9e..b36eba864 100755..100644
--- a/web/static/images/emoji/paw_prints.png
+++ b/web/static/images/emoji/paw_prints.png
Binary files differ
diff --git a/web/static/images/emoji/peach.png b/web/static/images/emoji/peach.png
index ee2139ecb..24409997d 100755..100644
--- a/web/static/images/emoji/peach.png
+++ b/web/static/images/emoji/peach.png
Binary files differ
diff --git a/web/static/images/emoji/pear.png b/web/static/images/emoji/pear.png
index f24aca8c0..20b63b461 100755..100644
--- a/web/static/images/emoji/pear.png
+++ b/web/static/images/emoji/pear.png
Binary files differ
diff --git a/web/static/images/emoji/pencil.png b/web/static/images/emoji/pencil.png
index fc97ddbc9..61e5a08e6 100755..100644
--- a/web/static/images/emoji/pencil.png
+++ b/web/static/images/emoji/pencil.png
Binary files differ
diff --git a/web/static/images/emoji/pencil2.png b/web/static/images/emoji/pencil2.png
index 64c2d9b79..693ee8429 100755..100644
--- a/web/static/images/emoji/pencil2.png
+++ b/web/static/images/emoji/pencil2.png
Binary files differ
diff --git a/web/static/images/emoji/penguin.png b/web/static/images/emoji/penguin.png
index d8edbcb8f..1789bf222 100755..100644
--- a/web/static/images/emoji/penguin.png
+++ b/web/static/images/emoji/penguin.png
Binary files differ
diff --git a/web/static/images/emoji/pensive.png b/web/static/images/emoji/pensive.png
index 4159f3c42..ac55cb0f6 100755..100644
--- a/web/static/images/emoji/pensive.png
+++ b/web/static/images/emoji/pensive.png
Binary files differ
diff --git a/web/static/images/emoji/performing_arts.png b/web/static/images/emoji/performing_arts.png
index 899fbe5a7..97a5bb7fe 100755..100644
--- a/web/static/images/emoji/performing_arts.png
+++ b/web/static/images/emoji/performing_arts.png
Binary files differ
diff --git a/web/static/images/emoji/persevere.png b/web/static/images/emoji/persevere.png
index f99f6da47..ba1550418 100755..100644
--- a/web/static/images/emoji/persevere.png
+++ b/web/static/images/emoji/persevere.png
Binary files differ
diff --git a/web/static/images/emoji/person_frowning.png b/web/static/images/emoji/person_frowning.png
index 6f34d5e15..81dbb96cd 100755..100644
--- a/web/static/images/emoji/person_frowning.png
+++ b/web/static/images/emoji/person_frowning.png
Binary files differ
diff --git a/web/static/images/emoji/person_with_blond_hair.png b/web/static/images/emoji/person_with_blond_hair.png
index c144301cb..7cd2e8766 100755..100644
--- a/web/static/images/emoji/person_with_blond_hair.png
+++ b/web/static/images/emoji/person_with_blond_hair.png
Binary files differ
diff --git a/web/static/images/emoji/person_with_pouting_face.png b/web/static/images/emoji/person_with_pouting_face.png
index c4a95c3b2..466177621 100755..100644
--- a/web/static/images/emoji/person_with_pouting_face.png
+++ b/web/static/images/emoji/person_with_pouting_face.png
Binary files differ
diff --git a/web/static/images/emoji/phone.png b/web/static/images/emoji/phone.png
index 87d2559b5..6a14f1bfe 100755..100644
--- a/web/static/images/emoji/phone.png
+++ b/web/static/images/emoji/phone.png
Binary files differ
diff --git a/web/static/images/emoji/pig.png b/web/static/images/emoji/pig.png
index f7f273c73..e2ef71cc0 100755..100644
--- a/web/static/images/emoji/pig.png
+++ b/web/static/images/emoji/pig.png
Binary files differ
diff --git a/web/static/images/emoji/pig2.png b/web/static/images/emoji/pig2.png
index fec3374d7..de1147954 100755..100644
--- a/web/static/images/emoji/pig2.png
+++ b/web/static/images/emoji/pig2.png
Binary files differ
diff --git a/web/static/images/emoji/pig_nose.png b/web/static/images/emoji/pig_nose.png
index 38d612446..a704c5a41 100755..100644
--- a/web/static/images/emoji/pig_nose.png
+++ b/web/static/images/emoji/pig_nose.png
Binary files differ
diff --git a/web/static/images/emoji/pill.png b/web/static/images/emoji/pill.png
index cd84a78ff..260e44588 100755..100644
--- a/web/static/images/emoji/pill.png
+++ b/web/static/images/emoji/pill.png
Binary files differ
diff --git a/web/static/images/emoji/pineapple.png b/web/static/images/emoji/pineapple.png
index d6f8e2876..b9b9f8827 100755..100644
--- a/web/static/images/emoji/pineapple.png
+++ b/web/static/images/emoji/pineapple.png
Binary files differ
diff --git a/web/static/images/emoji/pisces.png b/web/static/images/emoji/pisces.png
index 6db2c3d50..939b88e60 100755..100644
--- a/web/static/images/emoji/pisces.png
+++ b/web/static/images/emoji/pisces.png
Binary files differ
diff --git a/web/static/images/emoji/pizza.png b/web/static/images/emoji/pizza.png
index 460367d02..ae1ef6266 100755..100644
--- a/web/static/images/emoji/pizza.png
+++ b/web/static/images/emoji/pizza.png
Binary files differ
diff --git a/web/static/images/emoji/plus1.png b/web/static/images/emoji/plus1.png
deleted file mode 100755
index 81786c1d8..000000000
--- a/web/static/images/emoji/plus1.png
+++ /dev/null
Binary files differ
diff --git a/web/static/images/emoji/point_down.png b/web/static/images/emoji/point_down.png
index 658c6d918..7eeae2d5d 100755..100644
--- a/web/static/images/emoji/point_down.png
+++ b/web/static/images/emoji/point_down.png
Binary files differ
diff --git a/web/static/images/emoji/point_left.png b/web/static/images/emoji/point_left.png
index 38a99b43f..4a8f90556 100755..100644
--- a/web/static/images/emoji/point_left.png
+++ b/web/static/images/emoji/point_left.png
Binary files differ
diff --git a/web/static/images/emoji/point_right.png b/web/static/images/emoji/point_right.png
index 6f9f029a4..b2e387878 100755..100644
--- a/web/static/images/emoji/point_right.png
+++ b/web/static/images/emoji/point_right.png
Binary files differ
diff --git a/web/static/images/emoji/point_up.png b/web/static/images/emoji/point_up.png
index 01896e214..387fe59e2 100755..100644
--- a/web/static/images/emoji/point_up.png
+++ b/web/static/images/emoji/point_up.png
Binary files differ
diff --git a/web/static/images/emoji/point_up_2.png b/web/static/images/emoji/point_up_2.png
index 1cfe73672..85b802a99 100755..100644
--- a/web/static/images/emoji/point_up_2.png
+++ b/web/static/images/emoji/point_up_2.png
Binary files differ
diff --git a/web/static/images/emoji/police_car.png b/web/static/images/emoji/police_car.png
index b8f17275e..4281ed3bb 100755..100644
--- a/web/static/images/emoji/police_car.png
+++ b/web/static/images/emoji/police_car.png
Binary files differ
diff --git a/web/static/images/emoji/poodle.png b/web/static/images/emoji/poodle.png
index adac80bd9..a69f6388d 100755..100644
--- a/web/static/images/emoji/poodle.png
+++ b/web/static/images/emoji/poodle.png
Binary files differ
diff --git a/web/static/images/emoji/poop.png b/web/static/images/emoji/poop.png
index 73a4dc840..0c237a788 100755..100644
--- a/web/static/images/emoji/poop.png
+++ b/web/static/images/emoji/poop.png
Binary files differ
diff --git a/web/static/images/emoji/post_office.png b/web/static/images/emoji/post_office.png
index 43b59e30e..f819dac89 100755..100644
--- a/web/static/images/emoji/post_office.png
+++ b/web/static/images/emoji/post_office.png
Binary files differ
diff --git a/web/static/images/emoji/postal_horn.png b/web/static/images/emoji/postal_horn.png
index 13a151418..2313eeb45 100755..100644
--- a/web/static/images/emoji/postal_horn.png
+++ b/web/static/images/emoji/postal_horn.png
Binary files differ
diff --git a/web/static/images/emoji/postbox.png b/web/static/images/emoji/postbox.png
index ce04b7008..1633e892c 100755..100644
--- a/web/static/images/emoji/postbox.png
+++ b/web/static/images/emoji/postbox.png
Binary files differ
diff --git a/web/static/images/emoji/potable_water.png b/web/static/images/emoji/potable_water.png
index e9fd56079..9fd0e87e9 100755..100644
--- a/web/static/images/emoji/potable_water.png
+++ b/web/static/images/emoji/potable_water.png
Binary files differ
diff --git a/web/static/images/emoji/pouch.png b/web/static/images/emoji/pouch.png
index dc35ae8e5..d8e54dd7c 100755..100644
--- a/web/static/images/emoji/pouch.png
+++ b/web/static/images/emoji/pouch.png
Binary files differ
diff --git a/web/static/images/emoji/poultry_leg.png b/web/static/images/emoji/poultry_leg.png
index 43ad85965..eafba9a3e 100755..100644
--- a/web/static/images/emoji/poultry_leg.png
+++ b/web/static/images/emoji/poultry_leg.png
Binary files differ
diff --git a/web/static/images/emoji/pound.png b/web/static/images/emoji/pound.png
index f8be91d7a..555e0823f 100755..100644
--- a/web/static/images/emoji/pound.png
+++ b/web/static/images/emoji/pound.png
Binary files differ
diff --git a/web/static/images/emoji/pouting_cat.png b/web/static/images/emoji/pouting_cat.png
index 4325fd48d..a001bcfa7 100755..100644
--- a/web/static/images/emoji/pouting_cat.png
+++ b/web/static/images/emoji/pouting_cat.png
Binary files differ
diff --git a/web/static/images/emoji/pray.png b/web/static/images/emoji/pray.png
index f86c992d5..47a5f03b2 100755..100644
--- a/web/static/images/emoji/pray.png
+++ b/web/static/images/emoji/pray.png
Binary files differ
diff --git a/web/static/images/emoji/princess.png b/web/static/images/emoji/princess.png
index 1ebb2ce9b..a8b0ff903 100755..100644
--- a/web/static/images/emoji/princess.png
+++ b/web/static/images/emoji/princess.png
Binary files differ
diff --git a/web/static/images/emoji/printer.png b/web/static/images/emoji/printer.png
new file mode 100644
index 000000000..8d6002d7b
--- /dev/null
+++ b/web/static/images/emoji/printer.png
Binary files differ
diff --git a/web/static/images/emoji/punch.png b/web/static/images/emoji/punch.png
index 277047b7c..7d10b3eda 100755..100644
--- a/web/static/images/emoji/punch.png
+++ b/web/static/images/emoji/punch.png
Binary files differ
diff --git a/web/static/images/emoji/purple_heart.png b/web/static/images/emoji/purple_heart.png
index d5f875043..97bb564a1 100755..100644
--- a/web/static/images/emoji/purple_heart.png
+++ b/web/static/images/emoji/purple_heart.png
Binary files differ
diff --git a/web/static/images/emoji/purse.png b/web/static/images/emoji/purse.png
index 8f06a2b93..da09a41a3 100755..100644
--- a/web/static/images/emoji/purse.png
+++ b/web/static/images/emoji/purse.png
Binary files differ
diff --git a/web/static/images/emoji/pushpin.png b/web/static/images/emoji/pushpin.png
index 540c4ecb8..557ac45f0 100755..100644
--- a/web/static/images/emoji/pushpin.png
+++ b/web/static/images/emoji/pushpin.png
Binary files differ
diff --git a/web/static/images/emoji/put_litter_in_its_place.png b/web/static/images/emoji/put_litter_in_its_place.png
index c2e350c2d..e1c1deb24 100755..100644
--- a/web/static/images/emoji/put_litter_in_its_place.png
+++ b/web/static/images/emoji/put_litter_in_its_place.png
Binary files differ
diff --git a/web/static/images/emoji/question.png b/web/static/images/emoji/question.png
index 38cedf560..9e84758ee 100755..100644
--- a/web/static/images/emoji/question.png
+++ b/web/static/images/emoji/question.png
Binary files differ
diff --git a/web/static/images/emoji/rabbit.png b/web/static/images/emoji/rabbit.png
index 5cb3ef6f0..e6203c052 100755..100644
--- a/web/static/images/emoji/rabbit.png
+++ b/web/static/images/emoji/rabbit.png
Binary files differ
diff --git a/web/static/images/emoji/rabbit2.png b/web/static/images/emoji/rabbit2.png
index a9fd24dc1..ab2fae0fc 100755..100644
--- a/web/static/images/emoji/rabbit2.png
+++ b/web/static/images/emoji/rabbit2.png
Binary files differ
diff --git a/web/static/images/emoji/racehorse.png b/web/static/images/emoji/racehorse.png
index 4d09c64de..fadf8f2bf 100755..100644
--- a/web/static/images/emoji/racehorse.png
+++ b/web/static/images/emoji/racehorse.png
Binary files differ
diff --git a/web/static/images/emoji/racing_car.png b/web/static/images/emoji/racing_car.png
new file mode 100644
index 000000000..0f76828f6
--- /dev/null
+++ b/web/static/images/emoji/racing_car.png
Binary files differ
diff --git a/web/static/images/emoji/racing_motorcycle.png b/web/static/images/emoji/racing_motorcycle.png
new file mode 100644
index 000000000..8dcffc8f9
--- /dev/null
+++ b/web/static/images/emoji/racing_motorcycle.png
Binary files differ
diff --git a/web/static/images/emoji/radio.png b/web/static/images/emoji/radio.png
index ea589efe3..e75747faa 100755..100644
--- a/web/static/images/emoji/radio.png
+++ b/web/static/images/emoji/radio.png
Binary files differ
diff --git a/web/static/images/emoji/radio_button.png b/web/static/images/emoji/radio_button.png
index 63755eec2..bbc36031e 100755..100644
--- a/web/static/images/emoji/radio_button.png
+++ b/web/static/images/emoji/radio_button.png
Binary files differ
diff --git a/web/static/images/emoji/rage.png b/web/static/images/emoji/rage.png
index c65ddff55..c7f2df28c 100755..100644
--- a/web/static/images/emoji/rage.png
+++ b/web/static/images/emoji/rage.png
Binary files differ
diff --git a/web/static/images/emoji/rage1.png b/web/static/images/emoji/rage1.png
index 1506ba403..1506ba403 100755..100644
--- a/web/static/images/emoji/rage1.png
+++ b/web/static/images/emoji/rage1.png
Binary files differ
diff --git a/web/static/images/emoji/rage2.png b/web/static/images/emoji/rage2.png
index f792e063b..f792e063b 100755..100644
--- a/web/static/images/emoji/rage2.png
+++ b/web/static/images/emoji/rage2.png
Binary files differ
diff --git a/web/static/images/emoji/rage3.png b/web/static/images/emoji/rage3.png
index 58764cbcb..58764cbcb 100755..100644
--- a/web/static/images/emoji/rage3.png
+++ b/web/static/images/emoji/rage3.png
Binary files differ
diff --git a/web/static/images/emoji/rage4.png b/web/static/images/emoji/rage4.png
index c726c94a2..c726c94a2 100755..100644
--- a/web/static/images/emoji/rage4.png
+++ b/web/static/images/emoji/rage4.png
Binary files differ
diff --git a/web/static/images/emoji/railway_car.png b/web/static/images/emoji/railway_car.png
index 22361158f..82d808866 100755..100644
--- a/web/static/images/emoji/railway_car.png
+++ b/web/static/images/emoji/railway_car.png
Binary files differ
diff --git a/web/static/images/emoji/railway_track.png b/web/static/images/emoji/railway_track.png
new file mode 100644
index 000000000..322831040
--- /dev/null
+++ b/web/static/images/emoji/railway_track.png
Binary files differ
diff --git a/web/static/images/emoji/rain_cloud.png b/web/static/images/emoji/rain_cloud.png
new file mode 100644
index 000000000..507e1df08
--- /dev/null
+++ b/web/static/images/emoji/rain_cloud.png
Binary files differ
diff --git a/web/static/images/emoji/rainbow.png b/web/static/images/emoji/rainbow.png
index 6b1faa037..1d92301f9 100755..100644
--- a/web/static/images/emoji/rainbow.png
+++ b/web/static/images/emoji/rainbow.png
Binary files differ
diff --git a/web/static/images/emoji/raised_hand.png b/web/static/images/emoji/raised_hand.png
index 5e45c25a5..89de966a3 100755..100644
--- a/web/static/images/emoji/raised_hand.png
+++ b/web/static/images/emoji/raised_hand.png
Binary files differ
diff --git a/web/static/images/emoji/raised_hand_with_fingers_splayed.png b/web/static/images/emoji/raised_hand_with_fingers_splayed.png
new file mode 100644
index 000000000..09046e201
--- /dev/null
+++ b/web/static/images/emoji/raised_hand_with_fingers_splayed.png
Binary files differ
diff --git a/web/static/images/emoji/raised_hands.png b/web/static/images/emoji/raised_hands.png
index e03142bdc..8dbc25f83 100755..100644
--- a/web/static/images/emoji/raised_hands.png
+++ b/web/static/images/emoji/raised_hands.png
Binary files differ
diff --git a/web/static/images/emoji/raising_hand.png b/web/static/images/emoji/raising_hand.png
index e1741a40e..e9d54836a 100755..100644
--- a/web/static/images/emoji/raising_hand.png
+++ b/web/static/images/emoji/raising_hand.png
Binary files differ
diff --git a/web/static/images/emoji/ram.png b/web/static/images/emoji/ram.png
index 5ea7bfbc0..17af1b9a5 100755..100644
--- a/web/static/images/emoji/ram.png
+++ b/web/static/images/emoji/ram.png
Binary files differ
diff --git a/web/static/images/emoji/ramen.png b/web/static/images/emoji/ramen.png
index 78dc7d537..787827566 100755..100644
--- a/web/static/images/emoji/ramen.png
+++ b/web/static/images/emoji/ramen.png
Binary files differ
diff --git a/web/static/images/emoji/rat.png b/web/static/images/emoji/rat.png
index fa7dd401c..58c2d79d8 100755..100644
--- a/web/static/images/emoji/rat.png
+++ b/web/static/images/emoji/rat.png
Binary files differ
diff --git a/web/static/images/emoji/recycle.png b/web/static/images/emoji/recycle.png
index 99104c0e9..181391e86 100755..100644
--- a/web/static/images/emoji/recycle.png
+++ b/web/static/images/emoji/recycle.png
Binary files differ
diff --git a/web/static/images/emoji/red_car.png b/web/static/images/emoji/red_car.png
index d70a2f062..e266bd21e 100755..100644
--- a/web/static/images/emoji/red_car.png
+++ b/web/static/images/emoji/red_car.png
Binary files differ
diff --git a/web/static/images/emoji/red_circle.png b/web/static/images/emoji/red_circle.png
index b391289b2..bd50ae446 100755..100644
--- a/web/static/images/emoji/red_circle.png
+++ b/web/static/images/emoji/red_circle.png
Binary files differ
diff --git a/web/static/images/emoji/registered.png b/web/static/images/emoji/registered.png
index 31c68a80b..68d445daf 100755..100644
--- a/web/static/images/emoji/registered.png
+++ b/web/static/images/emoji/registered.png
Binary files differ
diff --git a/web/static/images/emoji/relaxed.png b/web/static/images/emoji/relaxed.png
index bbab82d3b..ea6e93a65 100755..100644
--- a/web/static/images/emoji/relaxed.png
+++ b/web/static/images/emoji/relaxed.png
Binary files differ
diff --git a/web/static/images/emoji/relieved.png b/web/static/images/emoji/relieved.png
index fe5629f43..3cb7aeced 100755..100644
--- a/web/static/images/emoji/relieved.png
+++ b/web/static/images/emoji/relieved.png
Binary files differ
diff --git a/web/static/images/emoji/reminder_ribbon.png b/web/static/images/emoji/reminder_ribbon.png
new file mode 100644
index 000000000..8104604b6
--- /dev/null
+++ b/web/static/images/emoji/reminder_ribbon.png
Binary files differ
diff --git a/web/static/images/emoji/repeat.png b/web/static/images/emoji/repeat.png
index 80113b692..8420b4f5d 100755..100644
--- a/web/static/images/emoji/repeat.png
+++ b/web/static/images/emoji/repeat.png
Binary files differ
diff --git a/web/static/images/emoji/repeat_one.png b/web/static/images/emoji/repeat_one.png
index 3c47bcc1f..2dacec71a 100755..100644
--- a/web/static/images/emoji/repeat_one.png
+++ b/web/static/images/emoji/repeat_one.png
Binary files differ
diff --git a/web/static/images/emoji/restroom.png b/web/static/images/emoji/restroom.png
index d6c111b29..76b3c2833 100755..100644
--- a/web/static/images/emoji/restroom.png
+++ b/web/static/images/emoji/restroom.png
Binary files differ
diff --git a/web/static/images/emoji/reversed_hand_with_middle_finger_extended.png b/web/static/images/emoji/reversed_hand_with_middle_finger_extended.png
new file mode 100644
index 000000000..c4e5d4a91
--- /dev/null
+++ b/web/static/images/emoji/reversed_hand_with_middle_finger_extended.png
Binary files differ
diff --git a/web/static/images/emoji/revolving_hearts.png b/web/static/images/emoji/revolving_hearts.png
index ea3317c47..0602d03c1 100755..100644
--- a/web/static/images/emoji/revolving_hearts.png
+++ b/web/static/images/emoji/revolving_hearts.png
Binary files differ
diff --git a/web/static/images/emoji/rewind.png b/web/static/images/emoji/rewind.png
index 26289dc3d..cd693f938 100755..100644
--- a/web/static/images/emoji/rewind.png
+++ b/web/static/images/emoji/rewind.png
Binary files differ
diff --git a/web/static/images/emoji/ribbon.png b/web/static/images/emoji/ribbon.png
index 63ee5ba5a..ea7ae1d76 100755..100644
--- a/web/static/images/emoji/ribbon.png
+++ b/web/static/images/emoji/ribbon.png
Binary files differ
diff --git a/web/static/images/emoji/rice.png b/web/static/images/emoji/rice.png
index 1fd22027b..8a9076f8a 100755..100644
--- a/web/static/images/emoji/rice.png
+++ b/web/static/images/emoji/rice.png
Binary files differ
diff --git a/web/static/images/emoji/rice_ball.png b/web/static/images/emoji/rice_ball.png
index ade7c45d3..4a24a91e2 100755..100644
--- a/web/static/images/emoji/rice_ball.png
+++ b/web/static/images/emoji/rice_ball.png
Binary files differ
diff --git a/web/static/images/emoji/rice_cracker.png b/web/static/images/emoji/rice_cracker.png
index 954c901e9..83382b6cb 100755..100644
--- a/web/static/images/emoji/rice_cracker.png
+++ b/web/static/images/emoji/rice_cracker.png
Binary files differ
diff --git a/web/static/images/emoji/rice_scene.png b/web/static/images/emoji/rice_scene.png
index 14361988d..8ce954451 100755..100644
--- a/web/static/images/emoji/rice_scene.png
+++ b/web/static/images/emoji/rice_scene.png
Binary files differ
diff --git a/web/static/images/emoji/right_anger_bubble.png b/web/static/images/emoji/right_anger_bubble.png
new file mode 100644
index 000000000..8e25fa6b4
--- /dev/null
+++ b/web/static/images/emoji/right_anger_bubble.png
Binary files differ
diff --git a/web/static/images/emoji/ring.png b/web/static/images/emoji/ring.png
index 8a57fd68b..f033d7941 100755..100644
--- a/web/static/images/emoji/ring.png
+++ b/web/static/images/emoji/ring.png
Binary files differ
diff --git a/web/static/images/emoji/rocket.png b/web/static/images/emoji/rocket.png
index 783078d37..0ca6d5fed 100755..100644
--- a/web/static/images/emoji/rocket.png
+++ b/web/static/images/emoji/rocket.png
Binary files differ
diff --git a/web/static/images/emoji/rolled_up_newspaper.png b/web/static/images/emoji/rolled_up_newspaper.png
new file mode 100644
index 000000000..4254eb5f2
--- /dev/null
+++ b/web/static/images/emoji/rolled_up_newspaper.png
Binary files differ
diff --git a/web/static/images/emoji/roller_coaster.png b/web/static/images/emoji/roller_coaster.png
index 9180b9861..0c506765e 100755..100644
--- a/web/static/images/emoji/roller_coaster.png
+++ b/web/static/images/emoji/roller_coaster.png
Binary files differ
diff --git a/web/static/images/emoji/rooster.png b/web/static/images/emoji/rooster.png
index fab23ad36..798542a0e 100755..100644
--- a/web/static/images/emoji/rooster.png
+++ b/web/static/images/emoji/rooster.png
Binary files differ
diff --git a/web/static/images/emoji/rose.png b/web/static/images/emoji/rose.png
index 3479fbcbb..2a9d77598 100755..100644
--- a/web/static/images/emoji/rose.png
+++ b/web/static/images/emoji/rose.png
Binary files differ
diff --git a/web/static/images/emoji/rosette.png b/web/static/images/emoji/rosette.png
new file mode 100644
index 000000000..8312eb177
--- /dev/null
+++ b/web/static/images/emoji/rosette.png
Binary files differ
diff --git a/web/static/images/emoji/rotating_light.png b/web/static/images/emoji/rotating_light.png
index 6cf4a775e..72095645c 100755..100644
--- a/web/static/images/emoji/rotating_light.png
+++ b/web/static/images/emoji/rotating_light.png
Binary files differ
diff --git a/web/static/images/emoji/round_pushpin.png b/web/static/images/emoji/round_pushpin.png
index e498e92cf..b16e5c41a 100755..100644
--- a/web/static/images/emoji/round_pushpin.png
+++ b/web/static/images/emoji/round_pushpin.png
Binary files differ
diff --git a/web/static/images/emoji/rowboat.png b/web/static/images/emoji/rowboat.png
index e370d0fb1..3a16b632b 100755..100644
--- a/web/static/images/emoji/rowboat.png
+++ b/web/static/images/emoji/rowboat.png
Binary files differ
diff --git a/web/static/images/emoji/ru.png b/web/static/images/emoji/ru.png
index 55fcf3549..4a65f219f 100755..100644
--- a/web/static/images/emoji/ru.png
+++ b/web/static/images/emoji/ru.png
Binary files differ
diff --git a/web/static/images/emoji/rugby_football.png b/web/static/images/emoji/rugby_football.png
index f8db67d70..3f72e529a 100755..100644
--- a/web/static/images/emoji/rugby_football.png
+++ b/web/static/images/emoji/rugby_football.png
Binary files differ
diff --git a/web/static/images/emoji/runner.png b/web/static/images/emoji/runner.png
index cb0042962..8dcc38400 100755..100644
--- a/web/static/images/emoji/runner.png
+++ b/web/static/images/emoji/runner.png
Binary files differ
diff --git a/web/static/images/emoji/running.png b/web/static/images/emoji/running.png
index cb0042962..8dcc38400 100755..100644
--- a/web/static/images/emoji/running.png
+++ b/web/static/images/emoji/running.png
Binary files differ
diff --git a/web/static/images/emoji/running_shirt_with_sash.png b/web/static/images/emoji/running_shirt_with_sash.png
index 0d68bba09..e49632dad 100755..100644
--- a/web/static/images/emoji/running_shirt_with_sash.png
+++ b/web/static/images/emoji/running_shirt_with_sash.png
Binary files differ
diff --git a/web/static/images/emoji/sa.png b/web/static/images/emoji/sa.png
index 387f098b9..c6dafece9 100755..100644
--- a/web/static/images/emoji/sa.png
+++ b/web/static/images/emoji/sa.png
Binary files differ
diff --git a/web/static/images/emoji/sagittarius.png b/web/static/images/emoji/sagittarius.png
index 8b5435baa..b5d55c10f 100755..100644
--- a/web/static/images/emoji/sagittarius.png
+++ b/web/static/images/emoji/sagittarius.png
Binary files differ
diff --git a/web/static/images/emoji/sailboat.png b/web/static/images/emoji/sailboat.png
index ff656dc62..9e862f831 100755..100644
--- a/web/static/images/emoji/sailboat.png
+++ b/web/static/images/emoji/sailboat.png
Binary files differ
diff --git a/web/static/images/emoji/sake.png b/web/static/images/emoji/sake.png
index 1f69907e5..40a158bfe 100755..100644
--- a/web/static/images/emoji/sake.png
+++ b/web/static/images/emoji/sake.png
Binary files differ
diff --git a/web/static/images/emoji/sandal.png b/web/static/images/emoji/sandal.png
index 0bb3f663f..1db7005bb 100755..100644
--- a/web/static/images/emoji/sandal.png
+++ b/web/static/images/emoji/sandal.png
Binary files differ
diff --git a/web/static/images/emoji/santa.png b/web/static/images/emoji/santa.png
index a2240c07e..29d63fd91 100755..100644
--- a/web/static/images/emoji/santa.png
+++ b/web/static/images/emoji/santa.png
Binary files differ
diff --git a/web/static/images/emoji/satellite.png b/web/static/images/emoji/satellite.png
index 3481cc2ef..7411b9235 100755..100644
--- a/web/static/images/emoji/satellite.png
+++ b/web/static/images/emoji/satellite.png
Binary files differ
diff --git a/web/static/images/emoji/satisfied.png b/web/static/images/emoji/satisfied.png
index 11c91eb22..d7e70b1a4 100755..100644
--- a/web/static/images/emoji/satisfied.png
+++ b/web/static/images/emoji/satisfied.png
Binary files differ
diff --git a/web/static/images/emoji/saxophone.png b/web/static/images/emoji/saxophone.png
index 011559a76..63446652f 100755..100644
--- a/web/static/images/emoji/saxophone.png
+++ b/web/static/images/emoji/saxophone.png
Binary files differ
diff --git a/web/static/images/emoji/school.png b/web/static/images/emoji/school.png
index afd922bf1..f8e0814e0 100755..100644
--- a/web/static/images/emoji/school.png
+++ b/web/static/images/emoji/school.png
Binary files differ
diff --git a/web/static/images/emoji/school_satchel.png b/web/static/images/emoji/school_satchel.png
index edfb19aec..f9bb6c1aa 100755..100644
--- a/web/static/images/emoji/school_satchel.png
+++ b/web/static/images/emoji/school_satchel.png
Binary files differ
diff --git a/web/static/images/emoji/scissors.png b/web/static/images/emoji/scissors.png
index d99b8aea0..0a2d1b07f 100755..100644
--- a/web/static/images/emoji/scissors.png
+++ b/web/static/images/emoji/scissors.png
Binary files differ
diff --git a/web/static/images/emoji/scorpius.png b/web/static/images/emoji/scorpius.png
index 67fcea165..f903e7665 100755..100644
--- a/web/static/images/emoji/scorpius.png
+++ b/web/static/images/emoji/scorpius.png
Binary files differ
diff --git a/web/static/images/emoji/scream.png b/web/static/images/emoji/scream.png
index 9e93c885d..ea77d3e6b 100755..100644
--- a/web/static/images/emoji/scream.png
+++ b/web/static/images/emoji/scream.png
Binary files differ
diff --git a/web/static/images/emoji/scream_cat.png b/web/static/images/emoji/scream_cat.png
index d94cd34ff..a4e67e97d 100755..100644
--- a/web/static/images/emoji/scream_cat.png
+++ b/web/static/images/emoji/scream_cat.png
Binary files differ
diff --git a/web/static/images/emoji/scroll.png b/web/static/images/emoji/scroll.png
index c5a10e6b8..c8ee30803 100755..100644
--- a/web/static/images/emoji/scroll.png
+++ b/web/static/images/emoji/scroll.png
Binary files differ
diff --git a/web/static/images/emoji/seat.png b/web/static/images/emoji/seat.png
index d1cb864b4..1ec8166b6 100755..100644
--- a/web/static/images/emoji/seat.png
+++ b/web/static/images/emoji/seat.png
Binary files differ
diff --git a/web/static/images/emoji/secret.png b/web/static/images/emoji/secret.png
index 82e383a60..5ff746bec 100755..100644
--- a/web/static/images/emoji/secret.png
+++ b/web/static/images/emoji/secret.png
Binary files differ
diff --git a/web/static/images/emoji/see_no_evil.png b/web/static/images/emoji/see_no_evil.png
index 0890a6222..df1fb6607 100755..100644
--- a/web/static/images/emoji/see_no_evil.png
+++ b/web/static/images/emoji/see_no_evil.png
Binary files differ
diff --git a/web/static/images/emoji/seedling.png b/web/static/images/emoji/seedling.png
index 2ab079310..eae79d274 100755..100644
--- a/web/static/images/emoji/seedling.png
+++ b/web/static/images/emoji/seedling.png
Binary files differ
diff --git a/web/static/images/emoji/seven.png b/web/static/images/emoji/seven.png
index 354e89ae7..33151fdba 100755..100644
--- a/web/static/images/emoji/seven.png
+++ b/web/static/images/emoji/seven.png
Binary files differ
diff --git a/web/static/images/emoji/shaved_ice.png b/web/static/images/emoji/shaved_ice.png
index 0d0b382c2..a14f0f4ec 100755..100644
--- a/web/static/images/emoji/shaved_ice.png
+++ b/web/static/images/emoji/shaved_ice.png
Binary files differ
diff --git a/web/static/images/emoji/sheep.png b/web/static/images/emoji/sheep.png
index c7277d289..e47d6eda8 100755..100644
--- a/web/static/images/emoji/sheep.png
+++ b/web/static/images/emoji/sheep.png
Binary files differ
diff --git a/web/static/images/emoji/shell.png b/web/static/images/emoji/shell.png
index 3145b5649..01bc086fa 100755..100644
--- a/web/static/images/emoji/shell.png
+++ b/web/static/images/emoji/shell.png
Binary files differ
diff --git a/web/static/images/emoji/shield.png b/web/static/images/emoji/shield.png
new file mode 100644
index 000000000..30a63a8bf
--- /dev/null
+++ b/web/static/images/emoji/shield.png
Binary files differ
diff --git a/web/static/images/emoji/ship.png b/web/static/images/emoji/ship.png
index 5d2d8b602..08465890d 100755..100644
--- a/web/static/images/emoji/ship.png
+++ b/web/static/images/emoji/ship.png
Binary files differ
diff --git a/web/static/images/emoji/shipit.png b/web/static/images/emoji/shipit.png
index a58a47f62..a58a47f62 100755..100644
--- a/web/static/images/emoji/shipit.png
+++ b/web/static/images/emoji/shipit.png
Binary files differ
diff --git a/web/static/images/emoji/shirt.png b/web/static/images/emoji/shirt.png
index 297a6d63e..556efde26 100755..100644
--- a/web/static/images/emoji/shirt.png
+++ b/web/static/images/emoji/shirt.png
Binary files differ
diff --git a/web/static/images/emoji/shit.png b/web/static/images/emoji/shit.png
index 73a4dc840..0c237a788 100755..100644
--- a/web/static/images/emoji/shit.png
+++ b/web/static/images/emoji/shit.png
Binary files differ
diff --git a/web/static/images/emoji/shoe.png b/web/static/images/emoji/shoe.png
index 45b82e61c..8d8a9feeb 100755..100644
--- a/web/static/images/emoji/shoe.png
+++ b/web/static/images/emoji/shoe.png
Binary files differ
diff --git a/web/static/images/emoji/shopping_bags.png b/web/static/images/emoji/shopping_bags.png
new file mode 100644
index 000000000..c4aa0049c
--- /dev/null
+++ b/web/static/images/emoji/shopping_bags.png
Binary files differ
diff --git a/web/static/images/emoji/shower.png b/web/static/images/emoji/shower.png
index 0d72ab86b..860c4da66 100755..100644
--- a/web/static/images/emoji/shower.png
+++ b/web/static/images/emoji/shower.png
Binary files differ
diff --git a/web/static/images/emoji/signal_strength.png b/web/static/images/emoji/signal_strength.png
index a4bd23ebf..21956bb51 100755..100644
--- a/web/static/images/emoji/signal_strength.png
+++ b/web/static/images/emoji/signal_strength.png
Binary files differ
diff --git a/web/static/images/emoji/six.png b/web/static/images/emoji/six.png
index 568805565..cd0b30fd2 100755..100644
--- a/web/static/images/emoji/six.png
+++ b/web/static/images/emoji/six.png
Binary files differ
diff --git a/web/static/images/emoji/six_pointed_star.png b/web/static/images/emoji/six_pointed_star.png
index c11af14c8..3b590a628 100755..100644
--- a/web/static/images/emoji/six_pointed_star.png
+++ b/web/static/images/emoji/six_pointed_star.png
Binary files differ
diff --git a/web/static/images/emoji/ski.png b/web/static/images/emoji/ski.png
index 98f5cb0f4..ac8151619 100755..100644
--- a/web/static/images/emoji/ski.png
+++ b/web/static/images/emoji/ski.png
Binary files differ
diff --git a/web/static/images/emoji/skull.png b/web/static/images/emoji/skull.png
index bd4ee3829..ee66d7147 100755..100644
--- a/web/static/images/emoji/skull.png
+++ b/web/static/images/emoji/skull.png
Binary files differ
diff --git a/web/static/images/emoji/sleeping.png b/web/static/images/emoji/sleeping.png
index 093b85236..04ed2ea52 100755..100644
--- a/web/static/images/emoji/sleeping.png
+++ b/web/static/images/emoji/sleeping.png
Binary files differ
diff --git a/web/static/images/emoji/sleeping_accommodation.png b/web/static/images/emoji/sleeping_accommodation.png
new file mode 100644
index 000000000..4d232c9bb
--- /dev/null
+++ b/web/static/images/emoji/sleeping_accommodation.png
Binary files differ
diff --git a/web/static/images/emoji/sleepy.png b/web/static/images/emoji/sleepy.png
index df4f55efd..5269b493c 100755..100644
--- a/web/static/images/emoji/sleepy.png
+++ b/web/static/images/emoji/sleepy.png
Binary files differ
diff --git a/web/static/images/emoji/sleuth_or_spy.png b/web/static/images/emoji/sleuth_or_spy.png
new file mode 100644
index 000000000..9ee45b37b
--- /dev/null
+++ b/web/static/images/emoji/sleuth_or_spy.png
Binary files differ
diff --git a/web/static/images/emoji/slightly_frowning_face.png b/web/static/images/emoji/slightly_frowning_face.png
new file mode 100644
index 000000000..55e16c1cf
--- /dev/null
+++ b/web/static/images/emoji/slightly_frowning_face.png
Binary files differ
diff --git a/web/static/images/emoji/slightly_smiling_face.png b/web/static/images/emoji/slightly_smiling_face.png
new file mode 100644
index 000000000..1bb673b36
--- /dev/null
+++ b/web/static/images/emoji/slightly_smiling_face.png
Binary files differ
diff --git a/web/static/images/emoji/slot_machine.png b/web/static/images/emoji/slot_machine.png
index 26f114830..81db7b1c0 100755..100644
--- a/web/static/images/emoji/slot_machine.png
+++ b/web/static/images/emoji/slot_machine.png
Binary files differ
diff --git a/web/static/images/emoji/small_airplane.png b/web/static/images/emoji/small_airplane.png
new file mode 100644
index 000000000..bd369a205
--- /dev/null
+++ b/web/static/images/emoji/small_airplane.png
Binary files differ
diff --git a/web/static/images/emoji/small_blue_diamond.png b/web/static/images/emoji/small_blue_diamond.png
index 8cd49205f..9b8ded84a 100755..100644
--- a/web/static/images/emoji/small_blue_diamond.png
+++ b/web/static/images/emoji/small_blue_diamond.png
Binary files differ
diff --git a/web/static/images/emoji/small_orange_diamond.png b/web/static/images/emoji/small_orange_diamond.png
index 04941d37b..64a03b216 100755..100644
--- a/web/static/images/emoji/small_orange_diamond.png
+++ b/web/static/images/emoji/small_orange_diamond.png
Binary files differ
diff --git a/web/static/images/emoji/small_red_triangle.png b/web/static/images/emoji/small_red_triangle.png
index 8c4428da8..b321f2a49 100755..100644
--- a/web/static/images/emoji/small_red_triangle.png
+++ b/web/static/images/emoji/small_red_triangle.png
Binary files differ
diff --git a/web/static/images/emoji/small_red_triangle_down.png b/web/static/images/emoji/small_red_triangle_down.png
index 94832f060..4c9586d24 100755..100644
--- a/web/static/images/emoji/small_red_triangle_down.png
+++ b/web/static/images/emoji/small_red_triangle_down.png
Binary files differ
diff --git a/web/static/images/emoji/smile.png b/web/static/images/emoji/smile.png
index 81a839689..63beffb17 100755..100644
--- a/web/static/images/emoji/smile.png
+++ b/web/static/images/emoji/smile.png
Binary files differ
diff --git a/web/static/images/emoji/smile_cat.png b/web/static/images/emoji/smile_cat.png
index ad333ba3b..c54e14b53 100755..100644
--- a/web/static/images/emoji/smile_cat.png
+++ b/web/static/images/emoji/smile_cat.png
Binary files differ
diff --git a/web/static/images/emoji/smiley.png b/web/static/images/emoji/smiley.png
index 77b581d68..eb281633c 100755..100644
--- a/web/static/images/emoji/smiley.png
+++ b/web/static/images/emoji/smiley.png
Binary files differ
diff --git a/web/static/images/emoji/smiley_cat.png b/web/static/images/emoji/smiley_cat.png
index dbf1b0276..93872133e 100755..100644
--- a/web/static/images/emoji/smiley_cat.png
+++ b/web/static/images/emoji/smiley_cat.png
Binary files differ
diff --git a/web/static/images/emoji/smiling_imp.png b/web/static/images/emoji/smiling_imp.png
index d90404930..6e36a04e7 100755..100644
--- a/web/static/images/emoji/smiling_imp.png
+++ b/web/static/images/emoji/smiling_imp.png
Binary files differ
diff --git a/web/static/images/emoji/smirk.png b/web/static/images/emoji/smirk.png
index bc6e5082c..c7b1ac127 100755..100644
--- a/web/static/images/emoji/smirk.png
+++ b/web/static/images/emoji/smirk.png
Binary files differ
diff --git a/web/static/images/emoji/smirk_cat.png b/web/static/images/emoji/smirk_cat.png
index 351565e24..6cb9d069d 100755..100644
--- a/web/static/images/emoji/smirk_cat.png
+++ b/web/static/images/emoji/smirk_cat.png
Binary files differ
diff --git a/web/static/images/emoji/smoking.png b/web/static/images/emoji/smoking.png
index 4aad6cbd7..e8b49b893 100755..100644
--- a/web/static/images/emoji/smoking.png
+++ b/web/static/images/emoji/smoking.png
Binary files differ
diff --git a/web/static/images/emoji/snail.png b/web/static/images/emoji/snail.png
index e75e69a84..97f67fb2d 100755..100644
--- a/web/static/images/emoji/snail.png
+++ b/web/static/images/emoji/snail.png
Binary files differ
diff --git a/web/static/images/emoji/snake.png b/web/static/images/emoji/snake.png
index ef58933e2..dae731e22 100755..100644
--- a/web/static/images/emoji/snake.png
+++ b/web/static/images/emoji/snake.png
Binary files differ
diff --git a/web/static/images/emoji/snow_capped_mountain.png b/web/static/images/emoji/snow_capped_mountain.png
new file mode 100644
index 000000000..f9071adec
--- /dev/null
+++ b/web/static/images/emoji/snow_capped_mountain.png
Binary files differ
diff --git a/web/static/images/emoji/snow_cloud.png b/web/static/images/emoji/snow_cloud.png
new file mode 100644
index 000000000..96baf5b54
--- /dev/null
+++ b/web/static/images/emoji/snow_cloud.png
Binary files differ
diff --git a/web/static/images/emoji/snowboarder.png b/web/static/images/emoji/snowboarder.png
index aeda5c8d8..076c48889 100755..100644
--- a/web/static/images/emoji/snowboarder.png
+++ b/web/static/images/emoji/snowboarder.png
Binary files differ
diff --git a/web/static/images/emoji/snowflake.png b/web/static/images/emoji/snowflake.png
index 54b68ff4f..743b9fd98 100755..100644
--- a/web/static/images/emoji/snowflake.png
+++ b/web/static/images/emoji/snowflake.png
Binary files differ
diff --git a/web/static/images/emoji/snowman.png b/web/static/images/emoji/snowman.png
index a97902e53..5cfd23ec0 100755..100644
--- a/web/static/images/emoji/snowman.png
+++ b/web/static/images/emoji/snowman.png
Binary files differ
diff --git a/web/static/images/emoji/sob.png b/web/static/images/emoji/sob.png
index 1561df92e..1339cc6ec 100755..100644
--- a/web/static/images/emoji/sob.png
+++ b/web/static/images/emoji/sob.png
Binary files differ
diff --git a/web/static/images/emoji/soccer.png b/web/static/images/emoji/soccer.png
index 1e118b5b1..a5b188cef 100755..100644
--- a/web/static/images/emoji/soccer.png
+++ b/web/static/images/emoji/soccer.png
Binary files differ
diff --git a/web/static/images/emoji/soon.png b/web/static/images/emoji/soon.png
index 2cf46df25..c795ce03f 100755..100644
--- a/web/static/images/emoji/soon.png
+++ b/web/static/images/emoji/soon.png
Binary files differ
diff --git a/web/static/images/emoji/sos.png b/web/static/images/emoji/sos.png
index e3e16ef73..4af944919 100755..100644
--- a/web/static/images/emoji/sos.png
+++ b/web/static/images/emoji/sos.png
Binary files differ
diff --git a/web/static/images/emoji/sound.png b/web/static/images/emoji/sound.png
index 6aa4dbff4..0d7011bcb 100755..100644
--- a/web/static/images/emoji/sound.png
+++ b/web/static/images/emoji/sound.png
Binary files differ
diff --git a/web/static/images/emoji/space_invader.png b/web/static/images/emoji/space_invader.png
index 384049167..042bc2ad0 100755..100644
--- a/web/static/images/emoji/space_invader.png
+++ b/web/static/images/emoji/space_invader.png
Binary files differ
diff --git a/web/static/images/emoji/spades.png b/web/static/images/emoji/spades.png
index 133a1aba8..1cb4bea46 100755..100644
--- a/web/static/images/emoji/spades.png
+++ b/web/static/images/emoji/spades.png
Binary files differ
diff --git a/web/static/images/emoji/spaghetti.png b/web/static/images/emoji/spaghetti.png
index 08de243f5..ff15e877a 100755..100644
--- a/web/static/images/emoji/spaghetti.png
+++ b/web/static/images/emoji/spaghetti.png
Binary files differ
diff --git a/web/static/images/emoji/sparkle.png b/web/static/images/emoji/sparkle.png
index 23a68ceb2..cb37090c7 100755..100644
--- a/web/static/images/emoji/sparkle.png
+++ b/web/static/images/emoji/sparkle.png
Binary files differ
diff --git a/web/static/images/emoji/sparkler.png b/web/static/images/emoji/sparkler.png
index 4aabd7e0e..968a7172b 100755..100644
--- a/web/static/images/emoji/sparkler.png
+++ b/web/static/images/emoji/sparkler.png
Binary files differ
diff --git a/web/static/images/emoji/sparkles.png b/web/static/images/emoji/sparkles.png
index 51307bcfc..f7faa7270 100755..100644
--- a/web/static/images/emoji/sparkles.png
+++ b/web/static/images/emoji/sparkles.png
Binary files differ
diff --git a/web/static/images/emoji/sparkling_heart.png b/web/static/images/emoji/sparkling_heart.png
index 64ac06663..0bfffc4ca 100755..100644
--- a/web/static/images/emoji/sparkling_heart.png
+++ b/web/static/images/emoji/sparkling_heart.png
Binary files differ
diff --git a/web/static/images/emoji/speak_no_evil.png b/web/static/images/emoji/speak_no_evil.png
index 87944c4de..c6f76937f 100755..100644
--- a/web/static/images/emoji/speak_no_evil.png
+++ b/web/static/images/emoji/speak_no_evil.png
Binary files differ
diff --git a/web/static/images/emoji/speaker.png b/web/static/images/emoji/speaker.png
index 470476e18..38d5ee391 100755..100644
--- a/web/static/images/emoji/speaker.png
+++ b/web/static/images/emoji/speaker.png
Binary files differ
diff --git a/web/static/images/emoji/speaking_head_in_silhouette.png b/web/static/images/emoji/speaking_head_in_silhouette.png
new file mode 100644
index 000000000..137a3c4c5
--- /dev/null
+++ b/web/static/images/emoji/speaking_head_in_silhouette.png
Binary files differ
diff --git a/web/static/images/emoji/speech_balloon.png b/web/static/images/emoji/speech_balloon.png
index 2896c2788..4f6449572 100755..100644
--- a/web/static/images/emoji/speech_balloon.png
+++ b/web/static/images/emoji/speech_balloon.png
Binary files differ
diff --git a/web/static/images/emoji/speedboat.png b/web/static/images/emoji/speedboat.png
index da6689b3b..a6b11a72e 100755..100644
--- a/web/static/images/emoji/speedboat.png
+++ b/web/static/images/emoji/speedboat.png
Binary files differ
diff --git a/web/static/images/emoji/spider.png b/web/static/images/emoji/spider.png
new file mode 100644
index 000000000..9e1fe5441
--- /dev/null
+++ b/web/static/images/emoji/spider.png
Binary files differ
diff --git a/web/static/images/emoji/spider_web.png b/web/static/images/emoji/spider_web.png
new file mode 100644
index 000000000..edad19093
--- /dev/null
+++ b/web/static/images/emoji/spider_web.png
Binary files differ
diff --git a/web/static/images/emoji/spiral_calendar_pad.png b/web/static/images/emoji/spiral_calendar_pad.png
new file mode 100644
index 000000000..ce73aecfa
--- /dev/null
+++ b/web/static/images/emoji/spiral_calendar_pad.png
Binary files differ
diff --git a/web/static/images/emoji/spiral_note_pad.png b/web/static/images/emoji/spiral_note_pad.png
new file mode 100644
index 000000000..28bc54348
--- /dev/null
+++ b/web/static/images/emoji/spiral_note_pad.png
Binary files differ
diff --git a/web/static/images/emoji/spock-hand.png b/web/static/images/emoji/spock-hand.png
new file mode 100644
index 000000000..88e8765e0
--- /dev/null
+++ b/web/static/images/emoji/spock-hand.png
Binary files differ
diff --git a/web/static/images/emoji/sports_medal.png b/web/static/images/emoji/sports_medal.png
new file mode 100644
index 000000000..1bf04b7c4
--- /dev/null
+++ b/web/static/images/emoji/sports_medal.png
Binary files differ
diff --git a/web/static/images/emoji/squirrel.png b/web/static/images/emoji/squirrel.png
index a58a47f62..a58a47f62 100755..100644
--- a/web/static/images/emoji/squirrel.png
+++ b/web/static/images/emoji/squirrel.png
Binary files differ
diff --git a/web/static/images/emoji/stadium.png b/web/static/images/emoji/stadium.png
new file mode 100644
index 000000000..d1c925d35
--- /dev/null
+++ b/web/static/images/emoji/stadium.png
Binary files differ
diff --git a/web/static/images/emoji/star.png b/web/static/images/emoji/star.png
index 1bfddc862..00f6758a2 100755..100644
--- a/web/static/images/emoji/star.png
+++ b/web/static/images/emoji/star.png
Binary files differ
diff --git a/web/static/images/emoji/star2.png b/web/static/images/emoji/star2.png
index 8b40ff4c8..6399b9335 100755..100644
--- a/web/static/images/emoji/star2.png
+++ b/web/static/images/emoji/star2.png
Binary files differ
diff --git a/web/static/images/emoji/stars.png b/web/static/images/emoji/stars.png
index 097a84241..115748007 100755..100644
--- a/web/static/images/emoji/stars.png
+++ b/web/static/images/emoji/stars.png
Binary files differ
diff --git a/web/static/images/emoji/station.png b/web/static/images/emoji/station.png
index e77daa8a7..970d2799d 100755..100644
--- a/web/static/images/emoji/station.png
+++ b/web/static/images/emoji/station.png
Binary files differ
diff --git a/web/static/images/emoji/statue_of_liberty.png b/web/static/images/emoji/statue_of_liberty.png
index 9ad902806..709fd6bff 100755..100644
--- a/web/static/images/emoji/statue_of_liberty.png
+++ b/web/static/images/emoji/statue_of_liberty.png
Binary files differ
diff --git a/web/static/images/emoji/steam_locomotive.png b/web/static/images/emoji/steam_locomotive.png
index 549507766..f7c52db71 100755..100644
--- a/web/static/images/emoji/steam_locomotive.png
+++ b/web/static/images/emoji/steam_locomotive.png
Binary files differ
diff --git a/web/static/images/emoji/stew.png b/web/static/images/emoji/stew.png
index e9687f9ec..6f8305338 100755..100644
--- a/web/static/images/emoji/stew.png
+++ b/web/static/images/emoji/stew.png
Binary files differ
diff --git a/web/static/images/emoji/straight_ruler.png b/web/static/images/emoji/straight_ruler.png
index d96658ea1..42e7ac39c 100755..100644
--- a/web/static/images/emoji/straight_ruler.png
+++ b/web/static/images/emoji/straight_ruler.png
Binary files differ
diff --git a/web/static/images/emoji/strawberry.png b/web/static/images/emoji/strawberry.png
index 13eb827ab..b28837732 100755..100644
--- a/web/static/images/emoji/strawberry.png
+++ b/web/static/images/emoji/strawberry.png
Binary files differ
diff --git a/web/static/images/emoji/stuck_out_tongue.png b/web/static/images/emoji/stuck_out_tongue.png
index fa7b58e23..3fa455255 100755..100644
--- a/web/static/images/emoji/stuck_out_tongue.png
+++ b/web/static/images/emoji/stuck_out_tongue.png
Binary files differ
diff --git a/web/static/images/emoji/stuck_out_tongue_closed_eyes.png b/web/static/images/emoji/stuck_out_tongue_closed_eyes.png
index 333716ee1..b599a5f57 100755..100644
--- a/web/static/images/emoji/stuck_out_tongue_closed_eyes.png
+++ b/web/static/images/emoji/stuck_out_tongue_closed_eyes.png
Binary files differ
diff --git a/web/static/images/emoji/stuck_out_tongue_winking_eye.png b/web/static/images/emoji/stuck_out_tongue_winking_eye.png
index 6ae9d497d..a93847556 100755..100644
--- a/web/static/images/emoji/stuck_out_tongue_winking_eye.png
+++ b/web/static/images/emoji/stuck_out_tongue_winking_eye.png
Binary files differ
diff --git a/web/static/images/emoji/studio_microphone.png b/web/static/images/emoji/studio_microphone.png
new file mode 100644
index 000000000..7e186826e
--- /dev/null
+++ b/web/static/images/emoji/studio_microphone.png
Binary files differ
diff --git a/web/static/images/emoji/sun_with_face.png b/web/static/images/emoji/sun_with_face.png
index ee276636f..7ee45e4dd 100755..100644
--- a/web/static/images/emoji/sun_with_face.png
+++ b/web/static/images/emoji/sun_with_face.png
Binary files differ
diff --git a/web/static/images/emoji/sunflower.png b/web/static/images/emoji/sunflower.png
index d9bad194a..b7cfbf82b 100755..100644
--- a/web/static/images/emoji/sunflower.png
+++ b/web/static/images/emoji/sunflower.png
Binary files differ
diff --git a/web/static/images/emoji/sunglasses.png b/web/static/images/emoji/sunglasses.png
index f2e524787..6d97948de 100755..100644
--- a/web/static/images/emoji/sunglasses.png
+++ b/web/static/images/emoji/sunglasses.png
Binary files differ
diff --git a/web/static/images/emoji/sunny.png b/web/static/images/emoji/sunny.png
index d23c095e0..d4f88fb8b 100755..100644
--- a/web/static/images/emoji/sunny.png
+++ b/web/static/images/emoji/sunny.png
Binary files differ
diff --git a/web/static/images/emoji/sunrise.png b/web/static/images/emoji/sunrise.png
index ec58dcc94..4bcc4a8ac 100755..100644
--- a/web/static/images/emoji/sunrise.png
+++ b/web/static/images/emoji/sunrise.png
Binary files differ
diff --git a/web/static/images/emoji/sunrise_over_mountains.png b/web/static/images/emoji/sunrise_over_mountains.png
index ebc3db146..f8527646e 100755..100644
--- a/web/static/images/emoji/sunrise_over_mountains.png
+++ b/web/static/images/emoji/sunrise_over_mountains.png
Binary files differ
diff --git a/web/static/images/emoji/surfer.png b/web/static/images/emoji/surfer.png
index b067e8cb3..74b216a67 100755..100644
--- a/web/static/images/emoji/surfer.png
+++ b/web/static/images/emoji/surfer.png
Binary files differ
diff --git a/web/static/images/emoji/sushi.png b/web/static/images/emoji/sushi.png
index 0d179bd97..8c2f6826e 100755..100644
--- a/web/static/images/emoji/sushi.png
+++ b/web/static/images/emoji/sushi.png
Binary files differ
diff --git a/web/static/images/emoji/suspect.png b/web/static/images/emoji/suspect.png
index 58e8921c0..58e8921c0 100755..100644
--- a/web/static/images/emoji/suspect.png
+++ b/web/static/images/emoji/suspect.png
Binary files differ
diff --git a/web/static/images/emoji/suspension_railway.png b/web/static/images/emoji/suspension_railway.png
index aaa45f61f..595e9b160 100755..100644
--- a/web/static/images/emoji/suspension_railway.png
+++ b/web/static/images/emoji/suspension_railway.png
Binary files differ
diff --git a/web/static/images/emoji/sweat.png b/web/static/images/emoji/sweat.png
index e894b7699..1c590918c 100755..100644
--- a/web/static/images/emoji/sweat.png
+++ b/web/static/images/emoji/sweat.png
Binary files differ
diff --git a/web/static/images/emoji/sweat_drops.png b/web/static/images/emoji/sweat_drops.png
index a83b3e960..81205fb52 100755..100644
--- a/web/static/images/emoji/sweat_drops.png
+++ b/web/static/images/emoji/sweat_drops.png
Binary files differ
diff --git a/web/static/images/emoji/sweat_smile.png b/web/static/images/emoji/sweat_smile.png
index 3903f717f..691ffa771 100755..100644
--- a/web/static/images/emoji/sweat_smile.png
+++ b/web/static/images/emoji/sweat_smile.png
Binary files differ
diff --git a/web/static/images/emoji/sweet_potato.png b/web/static/images/emoji/sweet_potato.png
index cde7880a1..7c60e76cb 100755..100644
--- a/web/static/images/emoji/sweet_potato.png
+++ b/web/static/images/emoji/sweet_potato.png
Binary files differ
diff --git a/web/static/images/emoji/swimmer.png b/web/static/images/emoji/swimmer.png
index d3878a065..9f3e63702 100755..100644
--- a/web/static/images/emoji/swimmer.png
+++ b/web/static/images/emoji/swimmer.png
Binary files differ
diff --git a/web/static/images/emoji/symbols.png b/web/static/images/emoji/symbols.png
index 16bc1da92..f1cdcb734 100755..100644
--- a/web/static/images/emoji/symbols.png
+++ b/web/static/images/emoji/symbols.png
Binary files differ
diff --git a/web/static/images/emoji/syringe.png b/web/static/images/emoji/syringe.png
index 36aa8fed5..1e7f23ebf 100755..100644
--- a/web/static/images/emoji/syringe.png
+++ b/web/static/images/emoji/syringe.png
Binary files differ
diff --git a/web/static/images/emoji/tada.png b/web/static/images/emoji/tada.png
index 7411b5266..003a66996 100755..100644
--- a/web/static/images/emoji/tada.png
+++ b/web/static/images/emoji/tada.png
Binary files differ
diff --git a/web/static/images/emoji/tanabata_tree.png b/web/static/images/emoji/tanabata_tree.png
index 6dea4b2d4..ec7d8cc22 100755..100644
--- a/web/static/images/emoji/tanabata_tree.png
+++ b/web/static/images/emoji/tanabata_tree.png
Binary files differ
diff --git a/web/static/images/emoji/tangerine.png b/web/static/images/emoji/tangerine.png
index fc9d4f82a..7cb15fcf7 100755..100644
--- a/web/static/images/emoji/tangerine.png
+++ b/web/static/images/emoji/tangerine.png
Binary files differ
diff --git a/web/static/images/emoji/taurus.png b/web/static/images/emoji/taurus.png
index 6af582f69..3d3434ccf 100755..100644
--- a/web/static/images/emoji/taurus.png
+++ b/web/static/images/emoji/taurus.png
Binary files differ
diff --git a/web/static/images/emoji/taxi.png b/web/static/images/emoji/taxi.png
index 60a50d365..1b9af967a 100755..100644
--- a/web/static/images/emoji/taxi.png
+++ b/web/static/images/emoji/taxi.png
Binary files differ
diff --git a/web/static/images/emoji/tea.png b/web/static/images/emoji/tea.png
index 3ece0b708..b8d25a962 100755..100644
--- a/web/static/images/emoji/tea.png
+++ b/web/static/images/emoji/tea.png
Binary files differ
diff --git a/web/static/images/emoji/telephone.png b/web/static/images/emoji/telephone.png
index 87d2559b5..6a14f1bfe 100755..100644
--- a/web/static/images/emoji/telephone.png
+++ b/web/static/images/emoji/telephone.png
Binary files differ
diff --git a/web/static/images/emoji/telephone_receiver.png b/web/static/images/emoji/telephone_receiver.png
index 36e21e012..6a8259cb7 100755..100644
--- a/web/static/images/emoji/telephone_receiver.png
+++ b/web/static/images/emoji/telephone_receiver.png
Binary files differ
diff --git a/web/static/images/emoji/telescope.png b/web/static/images/emoji/telescope.png
index 98e57558a..8fc07d50f 100755..100644
--- a/web/static/images/emoji/telescope.png
+++ b/web/static/images/emoji/telescope.png
Binary files differ
diff --git a/web/static/images/emoji/tennis.png b/web/static/images/emoji/tennis.png
index 278d904ee..cade3a566 100755..100644
--- a/web/static/images/emoji/tennis.png
+++ b/web/static/images/emoji/tennis.png
Binary files differ
diff --git a/web/static/images/emoji/tent.png b/web/static/images/emoji/tent.png
index 5c0d20e48..db3101b4a 100755..100644
--- a/web/static/images/emoji/tent.png
+++ b/web/static/images/emoji/tent.png
Binary files differ
diff --git a/web/static/images/emoji/thermometer.png b/web/static/images/emoji/thermometer.png
new file mode 100644
index 000000000..5afccacd5
--- /dev/null
+++ b/web/static/images/emoji/thermometer.png
Binary files differ
diff --git a/web/static/images/emoji/thought_balloon.png b/web/static/images/emoji/thought_balloon.png
index febe30d05..0ccbc2e30 100755..100644
--- a/web/static/images/emoji/thought_balloon.png
+++ b/web/static/images/emoji/thought_balloon.png
Binary files differ
diff --git a/web/static/images/emoji/three.png b/web/static/images/emoji/three.png
index 55644c990..96ac84050 100755..100644
--- a/web/static/images/emoji/three.png
+++ b/web/static/images/emoji/three.png
Binary files differ
diff --git a/web/static/images/emoji/thumbsdown.png b/web/static/images/emoji/thumbsdown.png
index 41c6b825d..9b6d251b5 100755..100644
--- a/web/static/images/emoji/thumbsdown.png
+++ b/web/static/images/emoji/thumbsdown.png
Binary files differ
diff --git a/web/static/images/emoji/thumbsup.png b/web/static/images/emoji/thumbsup.png
index 81786c1d8..26949329f 100755..100644
--- a/web/static/images/emoji/thumbsup.png
+++ b/web/static/images/emoji/thumbsup.png
Binary files differ
diff --git a/web/static/images/emoji/ticket.png b/web/static/images/emoji/ticket.png
index cdacf1a70..1e697cab6 100755..100644
--- a/web/static/images/emoji/ticket.png
+++ b/web/static/images/emoji/ticket.png
Binary files differ
diff --git a/web/static/images/emoji/tiger.png b/web/static/images/emoji/tiger.png
index d6cc84a3b..64a19cd61 100755..100644
--- a/web/static/images/emoji/tiger.png
+++ b/web/static/images/emoji/tiger.png
Binary files differ
diff --git a/web/static/images/emoji/tiger2.png b/web/static/images/emoji/tiger2.png
index b0c7d8dc3..c7910315e 100755..100644
--- a/web/static/images/emoji/tiger2.png
+++ b/web/static/images/emoji/tiger2.png
Binary files differ
diff --git a/web/static/images/emoji/tired_face.png b/web/static/images/emoji/tired_face.png
index 77b783453..adf5fa0fc 100755..100644
--- a/web/static/images/emoji/tired_face.png
+++ b/web/static/images/emoji/tired_face.png
Binary files differ
diff --git a/web/static/images/emoji/tm.png b/web/static/images/emoji/tm.png
index c7dec75a3..0ddad3d83 100755..100644
--- a/web/static/images/emoji/tm.png
+++ b/web/static/images/emoji/tm.png
Binary files differ
diff --git a/web/static/images/emoji/toilet.png b/web/static/images/emoji/toilet.png
index e5cc4119a..6cf5255d5 100755..100644
--- a/web/static/images/emoji/toilet.png
+++ b/web/static/images/emoji/toilet.png
Binary files differ
diff --git a/web/static/images/emoji/tokyo_tower.png b/web/static/images/emoji/tokyo_tower.png
index e1cbd7a3c..8833f08a5 100755..100644
--- a/web/static/images/emoji/tokyo_tower.png
+++ b/web/static/images/emoji/tokyo_tower.png
Binary files differ
diff --git a/web/static/images/emoji/tomato.png b/web/static/images/emoji/tomato.png
index a129700bb..4114c35ff 100755..100644
--- a/web/static/images/emoji/tomato.png
+++ b/web/static/images/emoji/tomato.png
Binary files differ
diff --git a/web/static/images/emoji/tongue.png b/web/static/images/emoji/tongue.png
index b0bab1207..67ea886c6 100755..100644
--- a/web/static/images/emoji/tongue.png
+++ b/web/static/images/emoji/tongue.png
Binary files differ
diff --git a/web/static/images/emoji/top.png b/web/static/images/emoji/top.png
index 5aa4dd442..5c6eb3c52 100755..100644
--- a/web/static/images/emoji/top.png
+++ b/web/static/images/emoji/top.png
Binary files differ
diff --git a/web/static/images/emoji/tophat.png b/web/static/images/emoji/tophat.png
index 7d27134d6..a945ccb8b 100755..100644
--- a/web/static/images/emoji/tophat.png
+++ b/web/static/images/emoji/tophat.png
Binary files differ
diff --git a/web/static/images/emoji/tornado.png b/web/static/images/emoji/tornado.png
new file mode 100644
index 000000000..a0ce6d55a
--- /dev/null
+++ b/web/static/images/emoji/tornado.png
Binary files differ
diff --git a/web/static/images/emoji/tornado_cloud.png b/web/static/images/emoji/tornado_cloud.png
new file mode 100644
index 000000000..a0ce6d55a
--- /dev/null
+++ b/web/static/images/emoji/tornado_cloud.png
Binary files differ
diff --git a/web/static/images/emoji/trackball.png b/web/static/images/emoji/trackball.png
new file mode 100644
index 000000000..3ecf9b87b
--- /dev/null
+++ b/web/static/images/emoji/trackball.png
Binary files differ
diff --git a/web/static/images/emoji/tractor.png b/web/static/images/emoji/tractor.png
index 058fd3eda..fcd4000c5 100755..100644
--- a/web/static/images/emoji/tractor.png
+++ b/web/static/images/emoji/tractor.png
Binary files differ
diff --git a/web/static/images/emoji/traffic_light.png b/web/static/images/emoji/traffic_light.png
index 1facb276c..0a7704a26 100755..100644
--- a/web/static/images/emoji/traffic_light.png
+++ b/web/static/images/emoji/traffic_light.png
Binary files differ
diff --git a/web/static/images/emoji/train.png b/web/static/images/emoji/train.png
index 3202d80ea..93d810920 100755..100644
--- a/web/static/images/emoji/train.png
+++ b/web/static/images/emoji/train.png
Binary files differ
diff --git a/web/static/images/emoji/train2.png b/web/static/images/emoji/train2.png
index 9c0d3ab64..22d843302 100755..100644
--- a/web/static/images/emoji/train2.png
+++ b/web/static/images/emoji/train2.png
Binary files differ
diff --git a/web/static/images/emoji/tram.png b/web/static/images/emoji/tram.png
index 5eb29fb71..851cf1827 100755..100644
--- a/web/static/images/emoji/tram.png
+++ b/web/static/images/emoji/tram.png
Binary files differ
diff --git a/web/static/images/emoji/triangular_flag_on_post.png b/web/static/images/emoji/triangular_flag_on_post.png
index f9a3f32d7..89a1429a3 100755..100644
--- a/web/static/images/emoji/triangular_flag_on_post.png
+++ b/web/static/images/emoji/triangular_flag_on_post.png
Binary files differ
diff --git a/web/static/images/emoji/triangular_ruler.png b/web/static/images/emoji/triangular_ruler.png
index 383677cb7..b554c0625 100755..100644
--- a/web/static/images/emoji/triangular_ruler.png
+++ b/web/static/images/emoji/triangular_ruler.png
Binary files differ
diff --git a/web/static/images/emoji/trident.png b/web/static/images/emoji/trident.png
index d79a7b4cc..ae1e0bc88 100755..100644
--- a/web/static/images/emoji/trident.png
+++ b/web/static/images/emoji/trident.png
Binary files differ
diff --git a/web/static/images/emoji/triumph.png b/web/static/images/emoji/triumph.png
index 92f93bd10..5d0f2bf16 100755..100644
--- a/web/static/images/emoji/triumph.png
+++ b/web/static/images/emoji/triumph.png
Binary files differ
diff --git a/web/static/images/emoji/trolleybus.png b/web/static/images/emoji/trolleybus.png
index b9740a53f..5207d82da 100755..100644
--- a/web/static/images/emoji/trolleybus.png
+++ b/web/static/images/emoji/trolleybus.png
Binary files differ
diff --git a/web/static/images/emoji/trollface.png b/web/static/images/emoji/trollface.png
index 119d77e73..119d77e73 100755..100644
--- a/web/static/images/emoji/trollface.png
+++ b/web/static/images/emoji/trollface.png
Binary files differ
diff --git a/web/static/images/emoji/trophy.png b/web/static/images/emoji/trophy.png
index 95d3b63f5..38429fe19 100755..100644
--- a/web/static/images/emoji/trophy.png
+++ b/web/static/images/emoji/trophy.png
Binary files differ
diff --git a/web/static/images/emoji/tropical_drink.png b/web/static/images/emoji/tropical_drink.png
index 55ca9eeda..34a5a385c 100755..100644
--- a/web/static/images/emoji/tropical_drink.png
+++ b/web/static/images/emoji/tropical_drink.png
Binary files differ
diff --git a/web/static/images/emoji/tropical_fish.png b/web/static/images/emoji/tropical_fish.png
index a6d734987..1904f61be 100755..100644
--- a/web/static/images/emoji/tropical_fish.png
+++ b/web/static/images/emoji/tropical_fish.png
Binary files differ
diff --git a/web/static/images/emoji/truck.png b/web/static/images/emoji/truck.png
index 3f25ba1f9..ef99f12fb 100755..100644
--- a/web/static/images/emoji/truck.png
+++ b/web/static/images/emoji/truck.png
Binary files differ
diff --git a/web/static/images/emoji/trumpet.png b/web/static/images/emoji/trumpet.png
index c84cfb13e..c2270ccbf 100755..100644
--- a/web/static/images/emoji/trumpet.png
+++ b/web/static/images/emoji/trumpet.png
Binary files differ
diff --git a/web/static/images/emoji/tshirt.png b/web/static/images/emoji/tshirt.png
index 297a6d63e..556efde26 100755..100644
--- a/web/static/images/emoji/tshirt.png
+++ b/web/static/images/emoji/tshirt.png
Binary files differ
diff --git a/web/static/images/emoji/tulip.png b/web/static/images/emoji/tulip.png
index b3ee1102a..a05a51edf 100755..100644
--- a/web/static/images/emoji/tulip.png
+++ b/web/static/images/emoji/tulip.png
Binary files differ
diff --git a/web/static/images/emoji/turtle.png b/web/static/images/emoji/turtle.png
index 04d1d9684..c3a628c0a 100755..100644
--- a/web/static/images/emoji/turtle.png
+++ b/web/static/images/emoji/turtle.png
Binary files differ
diff --git a/web/static/images/emoji/tv.png b/web/static/images/emoji/tv.png
index 803dc3d41..5318e2dc8 100755..100644
--- a/web/static/images/emoji/tv.png
+++ b/web/static/images/emoji/tv.png
Binary files differ
diff --git a/web/static/images/emoji/twisted_rightwards_arrows.png b/web/static/images/emoji/twisted_rightwards_arrows.png
index 25cde18b2..96e03e168 100755..100644
--- a/web/static/images/emoji/twisted_rightwards_arrows.png
+++ b/web/static/images/emoji/twisted_rightwards_arrows.png
Binary files differ
diff --git a/web/static/images/emoji/two.png b/web/static/images/emoji/two.png
index c191f8a32..a062ea93a 100755..100644
--- a/web/static/images/emoji/two.png
+++ b/web/static/images/emoji/two.png
Binary files differ
diff --git a/web/static/images/emoji/two_hearts.png b/web/static/images/emoji/two_hearts.png
index b189e9aea..48f8d88d2 100755..100644
--- a/web/static/images/emoji/two_hearts.png
+++ b/web/static/images/emoji/two_hearts.png
Binary files differ
diff --git a/web/static/images/emoji/two_men_holding_hands.png b/web/static/images/emoji/two_men_holding_hands.png
index d1099f21f..6d223a144 100755..100644
--- a/web/static/images/emoji/two_men_holding_hands.png
+++ b/web/static/images/emoji/two_men_holding_hands.png
Binary files differ
diff --git a/web/static/images/emoji/two_women_holding_hands.png b/web/static/images/emoji/two_women_holding_hands.png
index 619646c4e..313e73c7d 100755..100644
--- a/web/static/images/emoji/two_women_holding_hands.png
+++ b/web/static/images/emoji/two_women_holding_hands.png
Binary files differ
diff --git a/web/static/images/emoji/u5272.png b/web/static/images/emoji/u5272.png
index 2148253fc..90ed437d9 100755..100644
--- a/web/static/images/emoji/u5272.png
+++ b/web/static/images/emoji/u5272.png
Binary files differ
diff --git a/web/static/images/emoji/u5408.png b/web/static/images/emoji/u5408.png
index 03ab0d874..02ff557d0 100755..100644
--- a/web/static/images/emoji/u5408.png
+++ b/web/static/images/emoji/u5408.png
Binary files differ
diff --git a/web/static/images/emoji/u55b6.png b/web/static/images/emoji/u55b6.png
index ba946d3f3..091841a03 100755..100644
--- a/web/static/images/emoji/u55b6.png
+++ b/web/static/images/emoji/u55b6.png
Binary files differ
diff --git a/web/static/images/emoji/u6307.png b/web/static/images/emoji/u6307.png
index 6557f5672..307d17ad7 100755..100644
--- a/web/static/images/emoji/u6307.png
+++ b/web/static/images/emoji/u6307.png
Binary files differ
diff --git a/web/static/images/emoji/u6708.png b/web/static/images/emoji/u6708.png
index e4dfe5aa7..cf85c803b 100755..100644
--- a/web/static/images/emoji/u6708.png
+++ b/web/static/images/emoji/u6708.png
Binary files differ
diff --git a/web/static/images/emoji/u6709.png b/web/static/images/emoji/u6709.png
index cd8fb3f62..b592c12ee 100755..100644
--- a/web/static/images/emoji/u6709.png
+++ b/web/static/images/emoji/u6709.png
Binary files differ
diff --git a/web/static/images/emoji/u6e80.png b/web/static/images/emoji/u6e80.png
index 5df1cb878..4d03236ff 100755..100644
--- a/web/static/images/emoji/u6e80.png
+++ b/web/static/images/emoji/u6e80.png
Binary files differ
diff --git a/web/static/images/emoji/u7121.png b/web/static/images/emoji/u7121.png
index 25f694ed3..5f2982163 100755..100644
--- a/web/static/images/emoji/u7121.png
+++ b/web/static/images/emoji/u7121.png
Binary files differ
diff --git a/web/static/images/emoji/u7533.png b/web/static/images/emoji/u7533.png
index fc4a9901b..e2c566183 100755..100644
--- a/web/static/images/emoji/u7533.png
+++ b/web/static/images/emoji/u7533.png
Binary files differ
diff --git a/web/static/images/emoji/u7981.png b/web/static/images/emoji/u7981.png
index f550a573d..cc617fed3 100755..100644
--- a/web/static/images/emoji/u7981.png
+++ b/web/static/images/emoji/u7981.png
Binary files differ
diff --git a/web/static/images/emoji/u7a7a.png b/web/static/images/emoji/u7a7a.png
index c05f5cff7..3d0922dba 100755..100644
--- a/web/static/images/emoji/u7a7a.png
+++ b/web/static/images/emoji/u7a7a.png
Binary files differ
diff --git a/web/static/images/emoji/uk.png b/web/static/images/emoji/uk.png
index 2a62c7a08..61c03f759 100755..100644
--- a/web/static/images/emoji/uk.png
+++ b/web/static/images/emoji/uk.png
Binary files differ
diff --git a/web/static/images/emoji/umbrella.png b/web/static/images/emoji/umbrella.png
index 1db722fa6..83672dd6c 100755..100644
--- a/web/static/images/emoji/umbrella.png
+++ b/web/static/images/emoji/umbrella.png
Binary files differ
diff --git a/web/static/images/emoji/unamused.png b/web/static/images/emoji/unamused.png
index 3722e6f57..9d406ca65 100755..100644
--- a/web/static/images/emoji/unamused.png
+++ b/web/static/images/emoji/unamused.png
Binary files differ
diff --git a/web/static/images/emoji/underage.png b/web/static/images/emoji/underage.png
index a789b3c62..603ce57ea 100755..100644
--- a/web/static/images/emoji/underage.png
+++ b/web/static/images/emoji/underage.png
Binary files differ
diff --git a/web/static/images/emoji/unlock.png b/web/static/images/emoji/unlock.png
index 22b429cd0..db05d1b73 100755..100644
--- a/web/static/images/emoji/unlock.png
+++ b/web/static/images/emoji/unlock.png
Binary files differ
diff --git a/web/static/images/emoji/up.png b/web/static/images/emoji/up.png
index 829219a86..aa7974ec1 100755..100644
--- a/web/static/images/emoji/up.png
+++ b/web/static/images/emoji/up.png
Binary files differ
diff --git a/web/static/images/emoji/us.png b/web/static/images/emoji/us.png
index 38137669a..6c98de9be 100755..100644
--- a/web/static/images/emoji/us.png
+++ b/web/static/images/emoji/us.png
Binary files differ
diff --git a/web/static/images/emoji/v.png b/web/static/images/emoji/v.png
index f61267c28..0b7aa52d1 100755..100644
--- a/web/static/images/emoji/v.png
+++ b/web/static/images/emoji/v.png
Binary files differ
diff --git a/web/static/images/emoji/vertical_traffic_light.png b/web/static/images/emoji/vertical_traffic_light.png
index 7a5ba35f0..e533edda0 100755..100644
--- a/web/static/images/emoji/vertical_traffic_light.png
+++ b/web/static/images/emoji/vertical_traffic_light.png
Binary files differ
diff --git a/web/static/images/emoji/vhs.png b/web/static/images/emoji/vhs.png
index 881081c17..134e3a2c4 100755..100644
--- a/web/static/images/emoji/vhs.png
+++ b/web/static/images/emoji/vhs.png
Binary files differ
diff --git a/web/static/images/emoji/vibration_mode.png b/web/static/images/emoji/vibration_mode.png
index a716e96c6..6da565442 100755..100644
--- a/web/static/images/emoji/vibration_mode.png
+++ b/web/static/images/emoji/vibration_mode.png
Binary files differ
diff --git a/web/static/images/emoji/video_camera.png b/web/static/images/emoji/video_camera.png
index 274cecdd6..1b3514f8a 100755..100644
--- a/web/static/images/emoji/video_camera.png
+++ b/web/static/images/emoji/video_camera.png
Binary files differ
diff --git a/web/static/images/emoji/video_game.png b/web/static/images/emoji/video_game.png
index e265a3bd8..702832e99 100755..100644
--- a/web/static/images/emoji/video_game.png
+++ b/web/static/images/emoji/video_game.png
Binary files differ
diff --git a/web/static/images/emoji/violin.png b/web/static/images/emoji/violin.png
index 69347b545..0bb8e0a10 100755..100644
--- a/web/static/images/emoji/violin.png
+++ b/web/static/images/emoji/violin.png
Binary files differ
diff --git a/web/static/images/emoji/virgo.png b/web/static/images/emoji/virgo.png
index 72e1763f5..238424313 100755..100644
--- a/web/static/images/emoji/virgo.png
+++ b/web/static/images/emoji/virgo.png
Binary files differ
diff --git a/web/static/images/emoji/volcano.png b/web/static/images/emoji/volcano.png
index 9b434539b..5f2c292f0 100755..100644
--- a/web/static/images/emoji/volcano.png
+++ b/web/static/images/emoji/volcano.png
Binary files differ
diff --git a/web/static/images/emoji/vs.png b/web/static/images/emoji/vs.png
index 863638850..327337277 100755..100644
--- a/web/static/images/emoji/vs.png
+++ b/web/static/images/emoji/vs.png
Binary files differ
diff --git a/web/static/images/emoji/walking.png b/web/static/images/emoji/walking.png
index 52bc0381c..174c4d0e2 100755..100644
--- a/web/static/images/emoji/walking.png
+++ b/web/static/images/emoji/walking.png
Binary files differ
diff --git a/web/static/images/emoji/waning_crescent_moon.png b/web/static/images/emoji/waning_crescent_moon.png
index 30387780f..f9ab41111 100755..100644
--- a/web/static/images/emoji/waning_crescent_moon.png
+++ b/web/static/images/emoji/waning_crescent_moon.png
Binary files differ
diff --git a/web/static/images/emoji/waning_gibbous_moon.png b/web/static/images/emoji/waning_gibbous_moon.png
index 510099070..3b9240298 100755..100644
--- a/web/static/images/emoji/waning_gibbous_moon.png
+++ b/web/static/images/emoji/waning_gibbous_moon.png
Binary files differ
diff --git a/web/static/images/emoji/warning.png b/web/static/images/emoji/warning.png
index db6f96f02..8a5dd577a 100755..100644
--- a/web/static/images/emoji/warning.png
+++ b/web/static/images/emoji/warning.png
Binary files differ
diff --git a/web/static/images/emoji/wastebasket.png b/web/static/images/emoji/wastebasket.png
new file mode 100644
index 000000000..3baef5973
--- /dev/null
+++ b/web/static/images/emoji/wastebasket.png
Binary files differ
diff --git a/web/static/images/emoji/watch.png b/web/static/images/emoji/watch.png
index d503bb87c..50f16588a 100755..100644
--- a/web/static/images/emoji/watch.png
+++ b/web/static/images/emoji/watch.png
Binary files differ
diff --git a/web/static/images/emoji/water_buffalo.png b/web/static/images/emoji/water_buffalo.png
index 3bcde3edd..2c8fa68e8 100755..100644
--- a/web/static/images/emoji/water_buffalo.png
+++ b/web/static/images/emoji/water_buffalo.png
Binary files differ
diff --git a/web/static/images/emoji/watermelon.png b/web/static/images/emoji/watermelon.png
index fc212be78..5125aea3e 100755..100644
--- a/web/static/images/emoji/watermelon.png
+++ b/web/static/images/emoji/watermelon.png
Binary files differ
diff --git a/web/static/images/emoji/wave.png b/web/static/images/emoji/wave.png
index 56e6e822b..8a7086bd0 100755..100644
--- a/web/static/images/emoji/wave.png
+++ b/web/static/images/emoji/wave.png
Binary files differ
diff --git a/web/static/images/emoji/waving_black_flag.png b/web/static/images/emoji/waving_black_flag.png
new file mode 100644
index 000000000..d48e98fe0
--- /dev/null
+++ b/web/static/images/emoji/waving_black_flag.png
Binary files differ
diff --git a/web/static/images/emoji/waving_white_flag.png b/web/static/images/emoji/waving_white_flag.png
new file mode 100644
index 000000000..bf6124fab
--- /dev/null
+++ b/web/static/images/emoji/waving_white_flag.png
Binary files differ
diff --git a/web/static/images/emoji/wavy_dash.png b/web/static/images/emoji/wavy_dash.png
index 5a74e5c7a..3b346827b 100755..100644
--- a/web/static/images/emoji/wavy_dash.png
+++ b/web/static/images/emoji/wavy_dash.png
Binary files differ
diff --git a/web/static/images/emoji/waxing_crescent_moon.png b/web/static/images/emoji/waxing_crescent_moon.png
index c8f13dd31..7d4b5a056 100755..100644
--- a/web/static/images/emoji/waxing_crescent_moon.png
+++ b/web/static/images/emoji/waxing_crescent_moon.png
Binary files differ
diff --git a/web/static/images/emoji/waxing_gibbous_moon.png b/web/static/images/emoji/waxing_gibbous_moon.png
index 54e7ec671..b53fd4288 100755..100644
--- a/web/static/images/emoji/waxing_gibbous_moon.png
+++ b/web/static/images/emoji/waxing_gibbous_moon.png
Binary files differ
diff --git a/web/static/images/emoji/wc.png b/web/static/images/emoji/wc.png
index dfe84d2a7..b153f2c2a 100755..100644
--- a/web/static/images/emoji/wc.png
+++ b/web/static/images/emoji/wc.png
Binary files differ
diff --git a/web/static/images/emoji/weary.png b/web/static/images/emoji/weary.png
index 0c5475411..1c18789e8 100755..100644
--- a/web/static/images/emoji/weary.png
+++ b/web/static/images/emoji/weary.png
Binary files differ
diff --git a/web/static/images/emoji/wedding.png b/web/static/images/emoji/wedding.png
index ead19d52c..dda4a140f 100755..100644
--- a/web/static/images/emoji/wedding.png
+++ b/web/static/images/emoji/wedding.png
Binary files differ
diff --git a/web/static/images/emoji/weight_lifter.png b/web/static/images/emoji/weight_lifter.png
new file mode 100644
index 000000000..db6bb3d51
--- /dev/null
+++ b/web/static/images/emoji/weight_lifter.png
Binary files differ
diff --git a/web/static/images/emoji/whale.png b/web/static/images/emoji/whale.png
index 5bb113e42..cf1ecee86 100755..100644
--- a/web/static/images/emoji/whale.png
+++ b/web/static/images/emoji/whale.png
Binary files differ
diff --git a/web/static/images/emoji/whale2.png b/web/static/images/emoji/whale2.png
index 0ef4ea94f..181860530 100755..100644
--- a/web/static/images/emoji/whale2.png
+++ b/web/static/images/emoji/whale2.png
Binary files differ
diff --git a/web/static/images/emoji/wheelchair.png b/web/static/images/emoji/wheelchair.png
index eddcdd797..638696ca9 100755..100644
--- a/web/static/images/emoji/wheelchair.png
+++ b/web/static/images/emoji/wheelchair.png
Binary files differ
diff --git a/web/static/images/emoji/white_check_mark.png b/web/static/images/emoji/white_check_mark.png
index 61dc0583c..241a4f6f9 100755..100644
--- a/web/static/images/emoji/white_check_mark.png
+++ b/web/static/images/emoji/white_check_mark.png
Binary files differ
diff --git a/web/static/images/emoji/white_circle.png b/web/static/images/emoji/white_circle.png
index 3f648d1bd..84e8a43a2 100755..100644
--- a/web/static/images/emoji/white_circle.png
+++ b/web/static/images/emoji/white_circle.png
Binary files differ
diff --git a/web/static/images/emoji/white_flower.png b/web/static/images/emoji/white_flower.png
index c0929d0dd..6d1c47e91 100755..100644
--- a/web/static/images/emoji/white_flower.png
+++ b/web/static/images/emoji/white_flower.png
Binary files differ
diff --git a/web/static/images/emoji/white_large_square.png b/web/static/images/emoji/white_large_square.png
index 60cb19a13..2f6071f06 100755..100644
--- a/web/static/images/emoji/white_large_square.png
+++ b/web/static/images/emoji/white_large_square.png
Binary files differ
diff --git a/web/static/images/emoji/white_medium_small_square.png b/web/static/images/emoji/white_medium_small_square.png
index a115cdc49..7a34786e8 100755..100644
--- a/web/static/images/emoji/white_medium_small_square.png
+++ b/web/static/images/emoji/white_medium_small_square.png
Binary files differ
diff --git a/web/static/images/emoji/white_medium_square.png b/web/static/images/emoji/white_medium_square.png
index 199808bcf..f3c39550f 100755..100644
--- a/web/static/images/emoji/white_medium_square.png
+++ b/web/static/images/emoji/white_medium_square.png
Binary files differ
diff --git a/web/static/images/emoji/white_small_square.png b/web/static/images/emoji/white_small_square.png
index 24ba879f4..5b115d325 100755..100644
--- a/web/static/images/emoji/white_small_square.png
+++ b/web/static/images/emoji/white_small_square.png
Binary files differ
diff --git a/web/static/images/emoji/white_square_button.png b/web/static/images/emoji/white_square_button.png
index ad54d55c0..df974d948 100755..100644
--- a/web/static/images/emoji/white_square_button.png
+++ b/web/static/images/emoji/white_square_button.png
Binary files differ
diff --git a/web/static/images/emoji/wind_blowing_face.png b/web/static/images/emoji/wind_blowing_face.png
new file mode 100644
index 000000000..1586cb2cd
--- /dev/null
+++ b/web/static/images/emoji/wind_blowing_face.png
Binary files differ
diff --git a/web/static/images/emoji/wind_chime.png b/web/static/images/emoji/wind_chime.png
index efacf5dd4..8aee0e8bd 100755..100644
--- a/web/static/images/emoji/wind_chime.png
+++ b/web/static/images/emoji/wind_chime.png
Binary files differ
diff --git a/web/static/images/emoji/wine_glass.png b/web/static/images/emoji/wine_glass.png
index 82b0f0005..7aea60cc8 100755..100644
--- a/web/static/images/emoji/wine_glass.png
+++ b/web/static/images/emoji/wine_glass.png
Binary files differ
diff --git a/web/static/images/emoji/wink.png b/web/static/images/emoji/wink.png
index 756766dd3..d2ae627f7 100755..100644
--- a/web/static/images/emoji/wink.png
+++ b/web/static/images/emoji/wink.png
Binary files differ
diff --git a/web/static/images/emoji/wolf.png b/web/static/images/emoji/wolf.png
index c60c96895..46f054c62 100755..100644
--- a/web/static/images/emoji/wolf.png
+++ b/web/static/images/emoji/wolf.png
Binary files differ
diff --git a/web/static/images/emoji/woman.png b/web/static/images/emoji/woman.png
index 6bf0d2b12..72f7d61e2 100755..100644
--- a/web/static/images/emoji/woman.png
+++ b/web/static/images/emoji/woman.png
Binary files differ
diff --git a/web/static/images/emoji/womans_clothes.png b/web/static/images/emoji/womans_clothes.png
index aa297c7b6..1a5494267 100755..100644
--- a/web/static/images/emoji/womans_clothes.png
+++ b/web/static/images/emoji/womans_clothes.png
Binary files differ
diff --git a/web/static/images/emoji/womans_hat.png b/web/static/images/emoji/womans_hat.png
index 4cb2e6a69..33af561b3 100755..100644
--- a/web/static/images/emoji/womans_hat.png
+++ b/web/static/images/emoji/womans_hat.png
Binary files differ
diff --git a/web/static/images/emoji/womens.png b/web/static/images/emoji/womens.png
index 2fab29660..57a510e34 100755..100644
--- a/web/static/images/emoji/womens.png
+++ b/web/static/images/emoji/womens.png
Binary files differ
diff --git a/web/static/images/emoji/world_map.png b/web/static/images/emoji/world_map.png
new file mode 100644
index 000000000..799747f8f
--- /dev/null
+++ b/web/static/images/emoji/world_map.png
Binary files differ
diff --git a/web/static/images/emoji/worried.png b/web/static/images/emoji/worried.png
index bfa1856c0..c26a5f5a4 100755..100644
--- a/web/static/images/emoji/worried.png
+++ b/web/static/images/emoji/worried.png
Binary files differ
diff --git a/web/static/images/emoji/wrench.png b/web/static/images/emoji/wrench.png
index a87072ad1..64a0d6a76 100755..100644
--- a/web/static/images/emoji/wrench.png
+++ b/web/static/images/emoji/wrench.png
Binary files differ
diff --git a/web/static/images/emoji/x.png b/web/static/images/emoji/x.png
index dff9efa8b..18de93090 100755..100644
--- a/web/static/images/emoji/x.png
+++ b/web/static/images/emoji/x.png
Binary files differ
diff --git a/web/static/images/emoji/yellow_heart.png b/web/static/images/emoji/yellow_heart.png
index fa41ce78a..2deb5e6ce 100755..100644
--- a/web/static/images/emoji/yellow_heart.png
+++ b/web/static/images/emoji/yellow_heart.png
Binary files differ
diff --git a/web/static/images/emoji/yen.png b/web/static/images/emoji/yen.png
index 139bc936e..c0545520f 100755..100644
--- a/web/static/images/emoji/yen.png
+++ b/web/static/images/emoji/yen.png
Binary files differ
diff --git a/web/static/images/emoji/yum.png b/web/static/images/emoji/yum.png
index fc39637ec..7a353a7e8 100755..100644
--- a/web/static/images/emoji/yum.png
+++ b/web/static/images/emoji/yum.png
Binary files differ
diff --git a/web/static/images/emoji/zap.png b/web/static/images/emoji/zap.png
index 260c531b9..96ec4dccb 100755..100644
--- a/web/static/images/emoji/zap.png
+++ b/web/static/images/emoji/zap.png
Binary files differ
diff --git a/web/static/images/emoji/zero.png b/web/static/images/emoji/zero.png
index 6e57b3343..56e4e0672 100755..100644
--- a/web/static/images/emoji/zero.png
+++ b/web/static/images/emoji/zero.png
Binary files differ
diff --git a/web/static/images/emoji/zzz.png b/web/static/images/emoji/zzz.png
index 30be04655..05e245f20 100755..100644
--- a/web/static/images/emoji/zzz.png
+++ b/web/static/images/emoji/zzz.png
Binary files differ
diff --git a/web/static/js/babel-polyfill-6.1.18.js b/web/static/js/babel-polyfill-6.1.18.js
new file mode 100644
index 000000000..8a871402a
--- /dev/null
+++ b/web/static/js/babel-polyfill-6.1.18.js
@@ -0,0 +1,4412 @@
+(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(_dereq_,module,exports){
+(function (global){
+"use strict";
+
+_dereq_(188);
+
+_dereq_(189);
+
+if (global._babelPolyfill) {
+ throw new Error("only one instance of babel/polyfill is allowed");
+}
+global._babelPolyfill = true;
+}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
+},{"188":188,"189":189}],2:[function(_dereq_,module,exports){
+module.exports = function(it){
+ if(typeof it != 'function')throw TypeError(it + ' is not a function!');
+ return it;
+};
+},{}],3:[function(_dereq_,module,exports){
+// 22.1.3.31 Array.prototype[@@unscopables]
+var UNSCOPABLES = _dereq_(83)('unscopables')
+ , ArrayProto = Array.prototype;
+if(ArrayProto[UNSCOPABLES] == undefined)_dereq_(31)(ArrayProto, UNSCOPABLES, {});
+module.exports = function(key){
+ ArrayProto[UNSCOPABLES][key] = true;
+};
+},{"31":31,"83":83}],4:[function(_dereq_,module,exports){
+var isObject = _dereq_(38);
+module.exports = function(it){
+ if(!isObject(it))throw TypeError(it + ' is not an object!');
+ return it;
+};
+},{"38":38}],5:[function(_dereq_,module,exports){
+// 22.1.3.3 Array.prototype.copyWithin(target, start, end = this.length)
+'use strict';
+var toObject = _dereq_(80)
+ , toIndex = _dereq_(76)
+ , toLength = _dereq_(79);
+
+module.exports = [].copyWithin || function copyWithin(target/*= 0*/, start/*= 0, end = @length*/){
+ var O = toObject(this)
+ , len = toLength(O.length)
+ , to = toIndex(target, len)
+ , from = toIndex(start, len)
+ , $$ = arguments
+ , end = $$.length > 2 ? $$[2] : undefined
+ , count = Math.min((end === undefined ? len : toIndex(end, len)) - from, len - to)
+ , inc = 1;
+ if(from < to && to < from + count){
+ inc = -1;
+ from += count - 1;
+ to += count - 1;
+ }
+ while(count-- > 0){
+ if(from in O)O[to] = O[from];
+ else delete O[to];
+ to += inc;
+ from += inc;
+ } return O;
+};
+},{"76":76,"79":79,"80":80}],6:[function(_dereq_,module,exports){
+// 22.1.3.6 Array.prototype.fill(value, start = 0, end = this.length)
+'use strict';
+var toObject = _dereq_(80)
+ , toIndex = _dereq_(76)
+ , toLength = _dereq_(79);
+module.exports = [].fill || function fill(value /*, start = 0, end = @length */){
+ var O = toObject(this)
+ , length = toLength(O.length)
+ , $$ = arguments
+ , $$len = $$.length
+ , index = toIndex($$len > 1 ? $$[1] : undefined, length)
+ , end = $$len > 2 ? $$[2] : undefined
+ , endPos = end === undefined ? length : toIndex(end, length);
+ while(endPos > index)O[index++] = value;
+ return O;
+};
+},{"76":76,"79":79,"80":80}],7:[function(_dereq_,module,exports){
+// false -> Array#indexOf
+// true -> Array#includes
+var toIObject = _dereq_(78)
+ , toLength = _dereq_(79)
+ , toIndex = _dereq_(76);
+module.exports = function(IS_INCLUDES){
+ return function($this, el, fromIndex){
+ var O = toIObject($this)
+ , length = toLength(O.length)
+ , index = toIndex(fromIndex, length)
+ , value;
+ // Array#includes uses SameValueZero equality algorithm
+ if(IS_INCLUDES && el != el)while(length > index){
+ value = O[index++];
+ if(value != value)return true;
+ // Array#toIndex ignores holes, Array#includes - not
+ } else for(;length > index; index++)if(IS_INCLUDES || index in O){
+ if(O[index] === el)return IS_INCLUDES || index;
+ } return !IS_INCLUDES && -1;
+ };
+};
+},{"76":76,"78":78,"79":79}],8:[function(_dereq_,module,exports){
+// 0 -> Array#forEach
+// 1 -> Array#map
+// 2 -> Array#filter
+// 3 -> Array#some
+// 4 -> Array#every
+// 5 -> Array#find
+// 6 -> Array#findIndex
+var ctx = _dereq_(17)
+ , IObject = _dereq_(34)
+ , toObject = _dereq_(80)
+ , toLength = _dereq_(79)
+ , asc = _dereq_(9);
+module.exports = function(TYPE){
+ var IS_MAP = TYPE == 1
+ , IS_FILTER = TYPE == 2
+ , IS_SOME = TYPE == 3
+ , IS_EVERY = TYPE == 4
+ , IS_FIND_INDEX = TYPE == 6
+ , NO_HOLES = TYPE == 5 || IS_FIND_INDEX;
+ return function($this, callbackfn, that){
+ var O = toObject($this)
+ , self = IObject(O)
+ , f = ctx(callbackfn, that, 3)
+ , length = toLength(self.length)
+ , index = 0
+ , result = IS_MAP ? asc($this, length) : IS_FILTER ? asc($this, 0) : undefined
+ , val, res;
+ for(;length > index; index++)if(NO_HOLES || index in self){
+ val = self[index];
+ res = f(val, index, O);
+ if(TYPE){
+ if(IS_MAP)result[index] = res; // map
+ else if(res)switch(TYPE){
+ case 3: return true; // some
+ case 5: return val; // find
+ case 6: return index; // findIndex
+ case 2: result.push(val); // filter
+ } else if(IS_EVERY)return false; // every
+ }
+ }
+ return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : result;
+ };
+};
+},{"17":17,"34":34,"79":79,"80":80,"9":9}],9:[function(_dereq_,module,exports){
+// 9.4.2.3 ArraySpeciesCreate(originalArray, length)
+var isObject = _dereq_(38)
+ , isArray = _dereq_(36)
+ , SPECIES = _dereq_(83)('species');
+module.exports = function(original, length){
+ var C;
+ if(isArray(original)){
+ C = original.constructor;
+ // cross-realm fallback
+ if(typeof C == 'function' && (C === Array || isArray(C.prototype)))C = undefined;
+ if(isObject(C)){
+ C = C[SPECIES];
+ if(C === null)C = undefined;
+ }
+ } return new (C === undefined ? Array : C)(length);
+};
+},{"36":36,"38":38,"83":83}],10:[function(_dereq_,module,exports){
+// getting tag from 19.1.3.6 Object.prototype.toString()
+var cof = _dereq_(11)
+ , TAG = _dereq_(83)('toStringTag')
+ // ES3 wrong here
+ , ARG = cof(function(){ return arguments; }()) == 'Arguments';
+
+module.exports = function(it){
+ var O, T, B;
+ return it === undefined ? 'Undefined' : it === null ? 'Null'
+ // @@toStringTag case
+ : typeof (T = (O = Object(it))[TAG]) == 'string' ? T
+ // builtinTag case
+ : ARG ? cof(O)
+ // ES3 arguments fallback
+ : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;
+};
+},{"11":11,"83":83}],11:[function(_dereq_,module,exports){
+var toString = {}.toString;
+
+module.exports = function(it){
+ return toString.call(it).slice(8, -1);
+};
+},{}],12:[function(_dereq_,module,exports){
+'use strict';
+var $ = _dereq_(46)
+ , hide = _dereq_(31)
+ , redefineAll = _dereq_(60)
+ , ctx = _dereq_(17)
+ , strictNew = _dereq_(69)
+ , defined = _dereq_(18)
+ , forOf = _dereq_(27)
+ , $iterDefine = _dereq_(42)
+ , step = _dereq_(44)
+ , ID = _dereq_(82)('id')
+ , $has = _dereq_(30)
+ , isObject = _dereq_(38)
+ , setSpecies = _dereq_(65)
+ , DESCRIPTORS = _dereq_(19)
+ , isExtensible = Object.isExtensible || isObject
+ , SIZE = DESCRIPTORS ? '_s' : 'size'
+ , id = 0;
+
+var fastKey = function(it, create){
+ // return primitive with prefix
+ if(!isObject(it))return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;
+ if(!$has(it, ID)){
+ // can't set id to frozen object
+ if(!isExtensible(it))return 'F';
+ // not necessary to add id
+ if(!create)return 'E';
+ // add missing object id
+ hide(it, ID, ++id);
+ // return object id with prefix
+ } return 'O' + it[ID];
+};
+
+var getEntry = function(that, key){
+ // fast case
+ var index = fastKey(key), entry;
+ if(index !== 'F')return that._i[index];
+ // frozen object case
+ for(entry = that._f; entry; entry = entry.n){
+ if(entry.k == key)return entry;
+ }
+};
+
+module.exports = {
+ getConstructor: function(wrapper, NAME, IS_MAP, ADDER){
+ var C = wrapper(function(that, iterable){
+ strictNew(that, C, NAME);
+ that._i = $.create(null); // index
+ that._f = undefined; // first entry
+ that._l = undefined; // last entry
+ that[SIZE] = 0; // size
+ if(iterable != undefined)forOf(iterable, IS_MAP, that[ADDER], that);
+ });
+ redefineAll(C.prototype, {
+ // 23.1.3.1 Map.prototype.clear()
+ // 23.2.3.2 Set.prototype.clear()
+ clear: function clear(){
+ for(var that = this, data = that._i, entry = that._f; entry; entry = entry.n){
+ entry.r = true;
+ if(entry.p)entry.p = entry.p.n = undefined;
+ delete data[entry.i];
+ }
+ that._f = that._l = undefined;
+ that[SIZE] = 0;
+ },
+ // 23.1.3.3 Map.prototype.delete(key)
+ // 23.2.3.4 Set.prototype.delete(value)
+ 'delete': function(key){
+ var that = this
+ , entry = getEntry(that, key);
+ if(entry){
+ var next = entry.n
+ , prev = entry.p;
+ delete that._i[entry.i];
+ entry.r = true;
+ if(prev)prev.n = next;
+ if(next)next.p = prev;
+ if(that._f == entry)that._f = next;
+ if(that._l == entry)that._l = prev;
+ that[SIZE]--;
+ } return !!entry;
+ },
+ // 23.2.3.6 Set.prototype.forEach(callbackfn, thisArg = undefined)
+ // 23.1.3.5 Map.prototype.forEach(callbackfn, thisArg = undefined)
+ forEach: function forEach(callbackfn /*, that = undefined */){
+ var f = ctx(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3)
+ , entry;
+ while(entry = entry ? entry.n : this._f){
+ f(entry.v, entry.k, this);
+ // revert to the last existing entry
+ while(entry && entry.r)entry = entry.p;
+ }
+ },
+ // 23.1.3.7 Map.prototype.has(key)
+ // 23.2.3.7 Set.prototype.has(value)
+ has: function has(key){
+ return !!getEntry(this, key);
+ }
+ });
+ if(DESCRIPTORS)$.setDesc(C.prototype, 'size', {
+ get: function(){
+ return defined(this[SIZE]);
+ }
+ });
+ return C;
+ },
+ def: function(that, key, value){
+ var entry = getEntry(that, key)
+ , prev, index;
+ // change existing entry
+ if(entry){
+ entry.v = value;
+ // create new entry
+ } else {
+ that._l = entry = {
+ i: index = fastKey(key, true), // <- index
+ k: key, // <- key
+ v: value, // <- value
+ p: prev = that._l, // <- previous entry
+ n: undefined, // <- next entry
+ r: false // <- removed
+ };
+ if(!that._f)that._f = entry;
+ if(prev)prev.n = entry;
+ that[SIZE]++;
+ // add to index
+ if(index !== 'F')that._i[index] = entry;
+ } return that;
+ },
+ getEntry: getEntry,
+ setStrong: function(C, NAME, IS_MAP){
+ // add .keys, .values, .entries, [@@iterator]
+ // 23.1.3.4, 23.1.3.8, 23.1.3.11, 23.1.3.12, 23.2.3.5, 23.2.3.8, 23.2.3.10, 23.2.3.11
+ $iterDefine(C, NAME, function(iterated, kind){
+ this._t = iterated; // target
+ this._k = kind; // kind
+ this._l = undefined; // previous
+ }, function(){
+ var that = this
+ , kind = that._k
+ , entry = that._l;
+ // revert to the last existing entry
+ while(entry && entry.r)entry = entry.p;
+ // get next entry
+ if(!that._t || !(that._l = entry = entry ? entry.n : that._t._f)){
+ // or finish the iteration
+ that._t = undefined;
+ return step(1);
+ }
+ // return step by kind
+ if(kind == 'keys' )return step(0, entry.k);
+ if(kind == 'values')return step(0, entry.v);
+ return step(0, [entry.k, entry.v]);
+ }, IS_MAP ? 'entries' : 'values' , !IS_MAP, true);
+
+ // add [@@species], 23.1.2.2, 23.2.2.2
+ setSpecies(NAME);
+ }
+};
+},{"17":17,"18":18,"19":19,"27":27,"30":30,"31":31,"38":38,"42":42,"44":44,"46":46,"60":60,"65":65,"69":69,"82":82}],13:[function(_dereq_,module,exports){
+// https://github.com/DavidBruant/Map-Set.prototype.toJSON
+var forOf = _dereq_(27)
+ , classof = _dereq_(10);
+module.exports = function(NAME){
+ return function toJSON(){
+ if(classof(this) != NAME)throw TypeError(NAME + "#toJSON isn't generic");
+ var arr = [];
+ forOf(this, false, arr.push, arr);
+ return arr;
+ };
+};
+},{"10":10,"27":27}],14:[function(_dereq_,module,exports){
+'use strict';
+var hide = _dereq_(31)
+ , redefineAll = _dereq_(60)
+ , anObject = _dereq_(4)
+ , isObject = _dereq_(38)
+ , strictNew = _dereq_(69)
+ , forOf = _dereq_(27)
+ , createArrayMethod = _dereq_(8)
+ , $has = _dereq_(30)
+ , WEAK = _dereq_(82)('weak')
+ , isExtensible = Object.isExtensible || isObject
+ , arrayFind = createArrayMethod(5)
+ , arrayFindIndex = createArrayMethod(6)
+ , id = 0;
+
+// fallback for frozen keys
+var frozenStore = function(that){
+ return that._l || (that._l = new FrozenStore);
+};
+var FrozenStore = function(){
+ this.a = [];
+};
+var findFrozen = function(store, key){
+ return arrayFind(store.a, function(it){
+ return it[0] === key;
+ });
+};
+FrozenStore.prototype = {
+ get: function(key){
+ var entry = findFrozen(this, key);
+ if(entry)return entry[1];
+ },
+ has: function(key){
+ return !!findFrozen(this, key);
+ },
+ set: function(key, value){
+ var entry = findFrozen(this, key);
+ if(entry)entry[1] = value;
+ else this.a.push([key, value]);
+ },
+ 'delete': function(key){
+ var index = arrayFindIndex(this.a, function(it){
+ return it[0] === key;
+ });
+ if(~index)this.a.splice(index, 1);
+ return !!~index;
+ }
+};
+
+module.exports = {
+ getConstructor: function(wrapper, NAME, IS_MAP, ADDER){
+ var C = wrapper(function(that, iterable){
+ strictNew(that, C, NAME);
+ that._i = id++; // collection id
+ that._l = undefined; // leak store for frozen objects
+ if(iterable != undefined)forOf(iterable, IS_MAP, that[ADDER], that);
+ });
+ redefineAll(C.prototype, {
+ // 23.3.3.2 WeakMap.prototype.delete(key)
+ // 23.4.3.3 WeakSet.prototype.delete(value)
+ 'delete': function(key){
+ if(!isObject(key))return false;
+ if(!isExtensible(key))return frozenStore(this)['delete'](key);
+ return $has(key, WEAK) && $has(key[WEAK], this._i) && delete key[WEAK][this._i];
+ },
+ // 23.3.3.4 WeakMap.prototype.has(key)
+ // 23.4.3.4 WeakSet.prototype.has(value)
+ has: function has(key){
+ if(!isObject(key))return false;
+ if(!isExtensible(key))return frozenStore(this).has(key);
+ return $has(key, WEAK) && $has(key[WEAK], this._i);
+ }
+ });
+ return C;
+ },
+ def: function(that, key, value){
+ if(!isExtensible(anObject(key))){
+ frozenStore(that).set(key, value);
+ } else {
+ $has(key, WEAK) || hide(key, WEAK, {});
+ key[WEAK][that._i] = value;
+ } return that;
+ },
+ frozenStore: frozenStore,
+ WEAK: WEAK
+};
+},{"27":27,"30":30,"31":31,"38":38,"4":4,"60":60,"69":69,"8":8,"82":82}],15:[function(_dereq_,module,exports){
+'use strict';
+var global = _dereq_(29)
+ , $export = _dereq_(22)
+ , redefine = _dereq_(61)
+ , redefineAll = _dereq_(60)
+ , forOf = _dereq_(27)
+ , strictNew = _dereq_(69)
+ , isObject = _dereq_(38)
+ , fails = _dereq_(24)
+ , $iterDetect = _dereq_(43)
+ , setToStringTag = _dereq_(66);
+
+module.exports = function(NAME, wrapper, methods, common, IS_MAP, IS_WEAK){
+ var Base = global[NAME]
+ , C = Base
+ , ADDER = IS_MAP ? 'set' : 'add'
+ , proto = C && C.prototype
+ , O = {};
+ var fixMethod = function(KEY){
+ var fn = proto[KEY];
+ redefine(proto, KEY,
+ KEY == 'delete' ? function(a){
+ return IS_WEAK && !isObject(a) ? false : fn.call(this, a === 0 ? 0 : a);
+ } : KEY == 'has' ? function has(a){
+ return IS_WEAK && !isObject(a) ? false : fn.call(this, a === 0 ? 0 : a);
+ } : KEY == 'get' ? function get(a){
+ return IS_WEAK && !isObject(a) ? undefined : fn.call(this, a === 0 ? 0 : a);
+ } : KEY == 'add' ? function add(a){ fn.call(this, a === 0 ? 0 : a); return this; }
+ : function set(a, b){ fn.call(this, a === 0 ? 0 : a, b); return this; }
+ );
+ };
+ if(typeof C != 'function' || !(IS_WEAK || proto.forEach && !fails(function(){
+ new C().entries().next();
+ }))){
+ // create collection constructor
+ C = common.getConstructor(wrapper, NAME, IS_MAP, ADDER);
+ redefineAll(C.prototype, methods);
+ } else {
+ var instance = new C
+ // early implementations not supports chaining
+ , HASNT_CHAINING = instance[ADDER](IS_WEAK ? {} : -0, 1) != instance
+ // V8 ~ Chromium 40- weak-collections throws on primitives, but should return false
+ , THROWS_ON_PRIMITIVES = fails(function(){ instance.has(1); })
+ // most early implementations doesn't supports iterables, most modern - not close it correctly
+ , ACCEPT_ITERABLES = $iterDetect(function(iter){ new C(iter); }) // eslint-disable-line no-new
+ // for early implementations -0 and +0 not the same
+ , BUGGY_ZERO;
+ if(!ACCEPT_ITERABLES){
+ C = wrapper(function(target, iterable){
+ strictNew(target, C, NAME);
+ var that = new Base;
+ if(iterable != undefined)forOf(iterable, IS_MAP, that[ADDER], that);
+ return that;
+ });
+ C.prototype = proto;
+ proto.constructor = C;
+ }
+ IS_WEAK || instance.forEach(function(val, key){
+ BUGGY_ZERO = 1 / key === -Infinity;
+ });
+ if(THROWS_ON_PRIMITIVES || BUGGY_ZERO){
+ fixMethod('delete');
+ fixMethod('has');
+ IS_MAP && fixMethod('get');
+ }
+ if(BUGGY_ZERO || HASNT_CHAINING)fixMethod(ADDER);
+ // weak collections should not contains .clear method
+ if(IS_WEAK && proto.clear)delete proto.clear;
+ }
+
+ setToStringTag(C, NAME);
+
+ O[NAME] = C;
+ $export($export.G + $export.W + $export.F * (C != Base), O);
+
+ if(!IS_WEAK)common.setStrong(C, NAME, IS_MAP);
+
+ return C;
+};
+},{"22":22,"24":24,"27":27,"29":29,"38":38,"43":43,"60":60,"61":61,"66":66,"69":69}],16:[function(_dereq_,module,exports){
+var core = module.exports = {version: '1.2.6'};
+if(typeof __e == 'number')__e = core; // eslint-disable-line no-undef
+},{}],17:[function(_dereq_,module,exports){
+// optional / simple context binding
+var aFunction = _dereq_(2);
+module.exports = function(fn, that, length){
+ aFunction(fn);
+ if(that === undefined)return fn;
+ switch(length){
+ case 1: return function(a){
+ return fn.call(that, a);
+ };
+ case 2: return function(a, b){
+ return fn.call(that, a, b);
+ };
+ case 3: return function(a, b, c){
+ return fn.call(that, a, b, c);
+ };
+ }
+ return function(/* ...args */){
+ return fn.apply(that, arguments);
+ };
+};
+},{"2":2}],18:[function(_dereq_,module,exports){
+// 7.2.1 RequireObjectCoercible(argument)
+module.exports = function(it){
+ if(it == undefined)throw TypeError("Can't call method on " + it);
+ return it;
+};
+},{}],19:[function(_dereq_,module,exports){
+// Thank's IE8 for his funny defineProperty
+module.exports = !_dereq_(24)(function(){
+ return Object.defineProperty({}, 'a', {get: function(){ return 7; }}).a != 7;
+});
+},{"24":24}],20:[function(_dereq_,module,exports){
+var isObject = _dereq_(38)
+ , document = _dereq_(29).document
+ // in old IE typeof document.createElement is 'object'
+ , is = isObject(document) && isObject(document.createElement);
+module.exports = function(it){
+ return is ? document.createElement(it) : {};
+};
+},{"29":29,"38":38}],21:[function(_dereq_,module,exports){
+// all enumerable object keys, includes symbols
+var $ = _dereq_(46);
+module.exports = function(it){
+ var keys = $.getKeys(it)
+ , getSymbols = $.getSymbols;
+ if(getSymbols){
+ var symbols = getSymbols(it)
+ , isEnum = $.isEnum
+ , i = 0
+ , key;
+ while(symbols.length > i)if(isEnum.call(it, key = symbols[i++]))keys.push(key);
+ }
+ return keys;
+};
+},{"46":46}],22:[function(_dereq_,module,exports){
+var global = _dereq_(29)
+ , core = _dereq_(16)
+ , hide = _dereq_(31)
+ , redefine = _dereq_(61)
+ , ctx = _dereq_(17)
+ , PROTOTYPE = 'prototype';
+
+var $export = function(type, name, source){
+ var IS_FORCED = type & $export.F
+ , IS_GLOBAL = type & $export.G
+ , IS_STATIC = type & $export.S
+ , IS_PROTO = type & $export.P
+ , IS_BIND = type & $export.B
+ , target = IS_GLOBAL ? global : IS_STATIC ? global[name] || (global[name] = {}) : (global[name] || {})[PROTOTYPE]
+ , exports = IS_GLOBAL ? core : core[name] || (core[name] = {})
+ , expProto = exports[PROTOTYPE] || (exports[PROTOTYPE] = {})
+ , key, own, out, exp;
+ if(IS_GLOBAL)source = name;
+ for(key in source){
+ // contains in native
+ own = !IS_FORCED && target && key in target;
+ // export native or passed
+ out = (own ? target : source)[key];
+ // bind timers to global for call from export context
+ exp = IS_BIND && own ? ctx(out, global) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;
+ // extend global
+ if(target && !own)redefine(target, key, out);
+ // export
+ if(exports[key] != out)hide(exports, key, exp);
+ if(IS_PROTO && expProto[key] != out)expProto[key] = out;
+ }
+};
+global.core = core;
+// type bitmap
+$export.F = 1; // forced
+$export.G = 2; // global
+$export.S = 4; // static
+$export.P = 8; // proto
+$export.B = 16; // bind
+$export.W = 32; // wrap
+module.exports = $export;
+},{"16":16,"17":17,"29":29,"31":31,"61":61}],23:[function(_dereq_,module,exports){
+var MATCH = _dereq_(83)('match');
+module.exports = function(KEY){
+ var re = /./;
+ try {
+ '/./'[KEY](re);
+ } catch(e){
+ try {
+ re[MATCH] = false;
+ return !'/./'[KEY](re);
+ } catch(f){ /* empty */ }
+ } return true;
+};
+},{"83":83}],24:[function(_dereq_,module,exports){
+module.exports = function(exec){
+ try {
+ return !!exec();
+ } catch(e){
+ return true;
+ }
+};
+},{}],25:[function(_dereq_,module,exports){
+'use strict';
+var hide = _dereq_(31)
+ , redefine = _dereq_(61)
+ , fails = _dereq_(24)
+ , defined = _dereq_(18)
+ , wks = _dereq_(83);
+
+module.exports = function(KEY, length, exec){
+ var SYMBOL = wks(KEY)
+ , original = ''[KEY];
+ if(fails(function(){
+ var O = {};
+ O[SYMBOL] = function(){ return 7; };
+ return ''[KEY](O) != 7;
+ })){
+ redefine(String.prototype, KEY, exec(defined, SYMBOL, original));
+ hide(RegExp.prototype, SYMBOL, length == 2
+ // 21.2.5.8 RegExp.prototype[@@replace](string, replaceValue)
+ // 21.2.5.11 RegExp.prototype[@@split](string, limit)
+ ? function(string, arg){ return original.call(string, this, arg); }
+ // 21.2.5.6 RegExp.prototype[@@match](string)
+ // 21.2.5.9 RegExp.prototype[@@search](string)
+ : function(string){ return original.call(string, this); }
+ );
+ }
+};
+},{"18":18,"24":24,"31":31,"61":61,"83":83}],26:[function(_dereq_,module,exports){
+'use strict';
+// 21.2.5.3 get RegExp.prototype.flags
+var anObject = _dereq_(4);
+module.exports = function(){
+ var that = anObject(this)
+ , result = '';
+ if(that.global) result += 'g';
+ if(that.ignoreCase) result += 'i';
+ if(that.multiline) result += 'm';
+ if(that.unicode) result += 'u';
+ if(that.sticky) result += 'y';
+ return result;
+};
+},{"4":4}],27:[function(_dereq_,module,exports){
+var ctx = _dereq_(17)
+ , call = _dereq_(40)
+ , isArrayIter = _dereq_(35)
+ , anObject = _dereq_(4)
+ , toLength = _dereq_(79)
+ , getIterFn = _dereq_(84);
+module.exports = function(iterable, entries, fn, that){
+ var iterFn = getIterFn(iterable)
+ , f = ctx(fn, that, entries ? 2 : 1)
+ , index = 0
+ , length, step, iterator;
+ if(typeof iterFn != 'function')throw TypeError(iterable + ' is not iterable!');
+ // fast case for arrays with default iterator
+ if(isArrayIter(iterFn))for(length = toLength(iterable.length); length > index; index++){
+ entries ? f(anObject(step = iterable[index])[0], step[1]) : f(iterable[index]);
+ } else for(iterator = iterFn.call(iterable); !(step = iterator.next()).done; ){
+ call(iterator, f, step.value, entries);
+ }
+};
+},{"17":17,"35":35,"4":4,"40":40,"79":79,"84":84}],28:[function(_dereq_,module,exports){
+// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window
+var toIObject = _dereq_(78)
+ , getNames = _dereq_(46).getNames
+ , toString = {}.toString;
+
+var windowNames = typeof window == 'object' && Object.getOwnPropertyNames
+ ? Object.getOwnPropertyNames(window) : [];
+
+var getWindowNames = function(it){
+ try {
+ return getNames(it);
+ } catch(e){
+ return windowNames.slice();
+ }
+};
+
+module.exports.get = function getOwnPropertyNames(it){
+ if(windowNames && toString.call(it) == '[object Window]')return getWindowNames(it);
+ return getNames(toIObject(it));
+};
+},{"46":46,"78":78}],29:[function(_dereq_,module,exports){
+// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028
+var global = module.exports = typeof window != 'undefined' && window.Math == Math
+ ? window : typeof self != 'undefined' && self.Math == Math ? self : Function('return this')();
+if(typeof __g == 'number')__g = global; // eslint-disable-line no-undef
+},{}],30:[function(_dereq_,module,exports){
+var hasOwnProperty = {}.hasOwnProperty;
+module.exports = function(it, key){
+ return hasOwnProperty.call(it, key);
+};
+},{}],31:[function(_dereq_,module,exports){
+var $ = _dereq_(46)
+ , createDesc = _dereq_(59);
+module.exports = _dereq_(19) ? function(object, key, value){
+ return $.setDesc(object, key, createDesc(1, value));
+} : function(object, key, value){
+ object[key] = value;
+ return object;
+};
+},{"19":19,"46":46,"59":59}],32:[function(_dereq_,module,exports){
+module.exports = _dereq_(29).document && document.documentElement;
+},{"29":29}],33:[function(_dereq_,module,exports){
+// fast apply, http://jsperf.lnkit.com/fast-apply/5
+module.exports = function(fn, args, that){
+ var un = that === undefined;
+ switch(args.length){
+ case 0: return un ? fn()
+ : fn.call(that);
+ case 1: return un ? fn(args[0])
+ : fn.call(that, args[0]);
+ case 2: return un ? fn(args[0], args[1])
+ : fn.call(that, args[0], args[1]);
+ case 3: return un ? fn(args[0], args[1], args[2])
+ : fn.call(that, args[0], args[1], args[2]);
+ case 4: return un ? fn(args[0], args[1], args[2], args[3])
+ : fn.call(that, args[0], args[1], args[2], args[3]);
+ } return fn.apply(that, args);
+};
+},{}],34:[function(_dereq_,module,exports){
+// fallback for non-array-like ES3 and non-enumerable old V8 strings
+var cof = _dereq_(11);
+module.exports = Object('z').propertyIsEnumerable(0) ? Object : function(it){
+ return cof(it) == 'String' ? it.split('') : Object(it);
+};
+},{"11":11}],35:[function(_dereq_,module,exports){
+// check on default Array iterator
+var Iterators = _dereq_(45)
+ , ITERATOR = _dereq_(83)('iterator')
+ , ArrayProto = Array.prototype;
+
+module.exports = function(it){
+ return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it);
+};
+},{"45":45,"83":83}],36:[function(_dereq_,module,exports){
+// 7.2.2 IsArray(argument)
+var cof = _dereq_(11);
+module.exports = Array.isArray || function(arg){
+ return cof(arg) == 'Array';
+};
+},{"11":11}],37:[function(_dereq_,module,exports){
+// 20.1.2.3 Number.isInteger(number)
+var isObject = _dereq_(38)
+ , floor = Math.floor;
+module.exports = function isInteger(it){
+ return !isObject(it) && isFinite(it) && floor(it) === it;
+};
+},{"38":38}],38:[function(_dereq_,module,exports){
+module.exports = function(it){
+ return typeof it === 'object' ? it !== null : typeof it === 'function';
+};
+},{}],39:[function(_dereq_,module,exports){
+// 7.2.8 IsRegExp(argument)
+var isObject = _dereq_(38)
+ , cof = _dereq_(11)
+ , MATCH = _dereq_(83)('match');
+module.exports = function(it){
+ var isRegExp;
+ return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : cof(it) == 'RegExp');
+};
+},{"11":11,"38":38,"83":83}],40:[function(_dereq_,module,exports){
+// call something on iterator step with safe closing on error
+var anObject = _dereq_(4);
+module.exports = function(iterator, fn, value, entries){
+ try {
+ return entries ? fn(anObject(value)[0], value[1]) : fn(value);
+ // 7.4.6 IteratorClose(iterator, completion)
+ } catch(e){
+ var ret = iterator['return'];
+ if(ret !== undefined)anObject(ret.call(iterator));
+ throw e;
+ }
+};
+},{"4":4}],41:[function(_dereq_,module,exports){
+'use strict';
+var $ = _dereq_(46)
+ , descriptor = _dereq_(59)
+ , setToStringTag = _dereq_(66)
+ , IteratorPrototype = {};
+
+// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()
+_dereq_(31)(IteratorPrototype, _dereq_(83)('iterator'), function(){ return this; });
+
+module.exports = function(Constructor, NAME, next){
+ Constructor.prototype = $.create(IteratorPrototype, {next: descriptor(1, next)});
+ setToStringTag(Constructor, NAME + ' Iterator');
+};
+},{"31":31,"46":46,"59":59,"66":66,"83":83}],42:[function(_dereq_,module,exports){
+'use strict';
+var LIBRARY = _dereq_(48)
+ , $export = _dereq_(22)
+ , redefine = _dereq_(61)
+ , hide = _dereq_(31)
+ , has = _dereq_(30)
+ , Iterators = _dereq_(45)
+ , $iterCreate = _dereq_(41)
+ , setToStringTag = _dereq_(66)
+ , getProto = _dereq_(46).getProto
+ , ITERATOR = _dereq_(83)('iterator')
+ , BUGGY = !([].keys && 'next' in [].keys()) // Safari has buggy iterators w/o `next`
+ , FF_ITERATOR = '@@iterator'
+ , KEYS = 'keys'
+ , VALUES = 'values';
+
+var returnThis = function(){ return this; };
+
+module.exports = function(Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED){
+ $iterCreate(Constructor, NAME, next);
+ var getMethod = function(kind){
+ if(!BUGGY && kind in proto)return proto[kind];
+ switch(kind){
+ case KEYS: return function keys(){ return new Constructor(this, kind); };
+ case VALUES: return function values(){ return new Constructor(this, kind); };
+ } return function entries(){ return new Constructor(this, kind); };
+ };
+ var TAG = NAME + ' Iterator'
+ , DEF_VALUES = DEFAULT == VALUES
+ , VALUES_BUG = false
+ , proto = Base.prototype
+ , $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT]
+ , $default = $native || getMethod(DEFAULT)
+ , methods, key;
+ // Fix native
+ if($native){
+ var IteratorPrototype = getProto($default.call(new Base));
+ // Set @@toStringTag to native iterators
+ setToStringTag(IteratorPrototype, TAG, true);
+ // FF fix
+ if(!LIBRARY && has(proto, FF_ITERATOR))hide(IteratorPrototype, ITERATOR, returnThis);
+ // fix Array#{values, @@iterator}.name in V8 / FF
+ if(DEF_VALUES && $native.name !== VALUES){
+ VALUES_BUG = true;
+ $default = function values(){ return $native.call(this); };
+ }
+ }
+ // Define iterator
+ if((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])){
+ hide(proto, ITERATOR, $default);
+ }
+ // Plug for library
+ Iterators[NAME] = $default;
+ Iterators[TAG] = returnThis;
+ if(DEFAULT){
+ methods = {
+ values: DEF_VALUES ? $default : getMethod(VALUES),
+ keys: IS_SET ? $default : getMethod(KEYS),
+ entries: !DEF_VALUES ? $default : getMethod('entries')
+ };
+ if(FORCED)for(key in methods){
+ if(!(key in proto))redefine(proto, key, methods[key]);
+ } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);
+ }
+ return methods;
+};
+},{"22":22,"30":30,"31":31,"41":41,"45":45,"46":46,"48":48,"61":61,"66":66,"83":83}],43:[function(_dereq_,module,exports){
+var ITERATOR = _dereq_(83)('iterator')
+ , SAFE_CLOSING = false;
+
+try {
+ var riter = [7][ITERATOR]();
+ riter['return'] = function(){ SAFE_CLOSING = true; };
+ Array.from(riter, function(){ throw 2; });
+} catch(e){ /* empty */ }
+
+module.exports = function(exec, skipClosing){
+ if(!skipClosing && !SAFE_CLOSING)return false;
+ var safe = false;
+ try {
+ var arr = [7]
+ , iter = arr[ITERATOR]();
+ iter.next = function(){ safe = true; };
+ arr[ITERATOR] = function(){ return iter; };
+ exec(arr);
+ } catch(e){ /* empty */ }
+ return safe;
+};
+},{"83":83}],44:[function(_dereq_,module,exports){
+module.exports = function(done, value){
+ return {value: value, done: !!done};
+};
+},{}],45:[function(_dereq_,module,exports){
+module.exports = {};
+},{}],46:[function(_dereq_,module,exports){
+var $Object = Object;
+module.exports = {
+ create: $Object.create,
+ getProto: $Object.getPrototypeOf,
+ isEnum: {}.propertyIsEnumerable,
+ getDesc: $Object.getOwnPropertyDescriptor,
+ setDesc: $Object.defineProperty,
+ setDescs: $Object.defineProperties,
+ getKeys: $Object.keys,
+ getNames: $Object.getOwnPropertyNames,
+ getSymbols: $Object.getOwnPropertySymbols,
+ each: [].forEach
+};
+},{}],47:[function(_dereq_,module,exports){
+var $ = _dereq_(46)
+ , toIObject = _dereq_(78);
+module.exports = function(object, el){
+ var O = toIObject(object)
+ , keys = $.getKeys(O)
+ , length = keys.length
+ , index = 0
+ , key;
+ while(length > index)if(O[key = keys[index++]] === el)return key;
+};
+},{"46":46,"78":78}],48:[function(_dereq_,module,exports){
+module.exports = false;
+},{}],49:[function(_dereq_,module,exports){
+// 20.2.2.14 Math.expm1(x)
+module.exports = Math.expm1 || function expm1(x){
+ return (x = +x) == 0 ? x : x > -1e-6 && x < 1e-6 ? x + x * x / 2 : Math.exp(x) - 1;
+};
+},{}],50:[function(_dereq_,module,exports){
+// 20.2.2.20 Math.log1p(x)
+module.exports = Math.log1p || function log1p(x){
+ return (x = +x) > -1e-8 && x < 1e-8 ? x - x * x / 2 : Math.log(1 + x);
+};
+},{}],51:[function(_dereq_,module,exports){
+// 20.2.2.28 Math.sign(x)
+module.exports = Math.sign || function sign(x){
+ return (x = +x) == 0 || x != x ? x : x < 0 ? -1 : 1;
+};
+},{}],52:[function(_dereq_,module,exports){
+var global = _dereq_(29)
+ , macrotask = _dereq_(75).set
+ , Observer = global.MutationObserver || global.WebKitMutationObserver
+ , process = global.process
+ , Promise = global.Promise
+ , isNode = _dereq_(11)(process) == 'process'
+ , head, last, notify;
+
+var flush = function(){
+ var parent, domain, fn;
+ if(isNode && (parent = process.domain)){
+ process.domain = null;
+ parent.exit();
+ }
+ while(head){
+ domain = head.domain;
+ fn = head.fn;
+ if(domain)domain.enter();
+ fn(); // <- currently we use it only for Promise - try / catch not required
+ if(domain)domain.exit();
+ head = head.next;
+ } last = undefined;
+ if(parent)parent.enter();
+};
+
+// Node.js
+if(isNode){
+ notify = function(){
+ process.nextTick(flush);
+ };
+// browsers with MutationObserver
+} else if(Observer){
+ var toggle = 1
+ , node = document.createTextNode('');
+ new Observer(flush).observe(node, {characterData: true}); // eslint-disable-line no-new
+ notify = function(){
+ node.data = toggle = -toggle;
+ };
+// environments with maybe non-completely correct, but existent Promise
+} else if(Promise && Promise.resolve){
+ notify = function(){
+ Promise.resolve().then(flush);
+ };
+// for other environments - macrotask based on:
+// - setImmediate
+// - MessageChannel
+// - window.postMessag
+// - onreadystatechange
+// - setTimeout
+} else {
+ notify = function(){
+ // strange IE + webpack dev server bug - use .call(global)
+ macrotask.call(global, flush);
+ };
+}
+
+module.exports = function asap(fn){
+ var task = {fn: fn, next: undefined, domain: isNode && process.domain};
+ if(last)last.next = task;
+ if(!head){
+ head = task;
+ notify();
+ } last = task;
+};
+},{"11":11,"29":29,"75":75}],53:[function(_dereq_,module,exports){
+// 19.1.2.1 Object.assign(target, source, ...)
+var $ = _dereq_(46)
+ , toObject = _dereq_(80)
+ , IObject = _dereq_(34);
+
+// should work with symbols and should have deterministic property order (V8 bug)
+module.exports = _dereq_(24)(function(){
+ var a = Object.assign
+ , A = {}
+ , B = {}
+ , S = Symbol()
+ , K = 'abcdefghijklmnopqrst';
+ A[S] = 7;
+ K.split('').forEach(function(k){ B[k] = k; });
+ return a({}, A)[S] != 7 || Object.keys(a({}, B)).join('') != K;
+}) ? function assign(target, source){ // eslint-disable-line no-unused-vars
+ var T = toObject(target)
+ , $$ = arguments
+ , $$len = $$.length
+ , index = 1
+ , getKeys = $.getKeys
+ , getSymbols = $.getSymbols
+ , isEnum = $.isEnum;
+ while($$len > index){
+ var S = IObject($$[index++])
+ , keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S)
+ , length = keys.length
+ , j = 0
+ , key;
+ while(length > j)if(isEnum.call(S, key = keys[j++]))T[key] = S[key];
+ }
+ return T;
+} : Object.assign;
+},{"24":24,"34":34,"46":46,"80":80}],54:[function(_dereq_,module,exports){
+// most Object methods by ES6 should accept primitives
+var $export = _dereq_(22)
+ , core = _dereq_(16)
+ , fails = _dereq_(24);
+module.exports = function(KEY, exec){
+ var fn = (core.Object || {})[KEY] || Object[KEY]
+ , exp = {};
+ exp[KEY] = exec(fn);
+ $export($export.S + $export.F * fails(function(){ fn(1); }), 'Object', exp);
+};
+},{"16":16,"22":22,"24":24}],55:[function(_dereq_,module,exports){
+var $ = _dereq_(46)
+ , toIObject = _dereq_(78)
+ , isEnum = $.isEnum;
+module.exports = function(isEntries){
+ return function(it){
+ var O = toIObject(it)
+ , keys = $.getKeys(O)
+ , length = keys.length
+ , i = 0
+ , result = []
+ , key;
+ while(length > i)if(isEnum.call(O, key = keys[i++])){
+ result.push(isEntries ? [key, O[key]] : O[key]);
+ } return result;
+ };
+};
+},{"46":46,"78":78}],56:[function(_dereq_,module,exports){
+// all object keys, includes non-enumerable and symbols
+var $ = _dereq_(46)
+ , anObject = _dereq_(4)
+ , Reflect = _dereq_(29).Reflect;
+module.exports = Reflect && Reflect.ownKeys || function ownKeys(it){
+ var keys = $.getNames(anObject(it))
+ , getSymbols = $.getSymbols;
+ return getSymbols ? keys.concat(getSymbols(it)) : keys;
+};
+},{"29":29,"4":4,"46":46}],57:[function(_dereq_,module,exports){
+'use strict';
+var path = _dereq_(58)
+ , invoke = _dereq_(33)
+ , aFunction = _dereq_(2);
+module.exports = function(/* ...pargs */){
+ var fn = aFunction(this)
+ , length = arguments.length
+ , pargs = Array(length)
+ , i = 0
+ , _ = path._
+ , holder = false;
+ while(length > i)if((pargs[i] = arguments[i++]) === _)holder = true;
+ return function(/* ...args */){
+ var that = this
+ , $$ = arguments
+ , $$len = $$.length
+ , j = 0, k = 0, args;
+ if(!holder && !$$len)return invoke(fn, pargs, that);
+ args = pargs.slice();
+ if(holder)for(;length > j; j++)if(args[j] === _)args[j] = $$[k++];
+ while($$len > k)args.push($$[k++]);
+ return invoke(fn, args, that);
+ };
+};
+},{"2":2,"33":33,"58":58}],58:[function(_dereq_,module,exports){
+module.exports = _dereq_(29);
+},{"29":29}],59:[function(_dereq_,module,exports){
+module.exports = function(bitmap, value){
+ return {
+ enumerable : !(bitmap & 1),
+ configurable: !(bitmap & 2),
+ writable : !(bitmap & 4),
+ value : value
+ };
+};
+},{}],60:[function(_dereq_,module,exports){
+var redefine = _dereq_(61);
+module.exports = function(target, src){
+ for(var key in src)redefine(target, key, src[key]);
+ return target;
+};
+},{"61":61}],61:[function(_dereq_,module,exports){
+// add fake Function#toString
+// for correct work wrapped methods / constructors with methods like LoDash isNative
+var global = _dereq_(29)
+ , hide = _dereq_(31)
+ , SRC = _dereq_(82)('src')
+ , TO_STRING = 'toString'
+ , $toString = Function[TO_STRING]
+ , TPL = ('' + $toString).split(TO_STRING);
+
+_dereq_(16).inspectSource = function(it){
+ return $toString.call(it);
+};
+
+(module.exports = function(O, key, val, safe){
+ if(typeof val == 'function'){
+ val.hasOwnProperty(SRC) || hide(val, SRC, O[key] ? '' + O[key] : TPL.join(String(key)));
+ val.hasOwnProperty('name') || hide(val, 'name', key);
+ }
+ if(O === global){
+ O[key] = val;
+ } else {
+ if(!safe)delete O[key];
+ hide(O, key, val);
+ }
+})(Function.prototype, TO_STRING, function toString(){
+ return typeof this == 'function' && this[SRC] || $toString.call(this);
+});
+},{"16":16,"29":29,"31":31,"82":82}],62:[function(_dereq_,module,exports){
+module.exports = function(regExp, replace){
+ var replacer = replace === Object(replace) ? function(part){
+ return replace[part];
+ } : replace;
+ return function(it){
+ return String(it).replace(regExp, replacer);
+ };
+};
+},{}],63:[function(_dereq_,module,exports){
+// 7.2.9 SameValue(x, y)
+module.exports = Object.is || function is(x, y){
+ return x === y ? x !== 0 || 1 / x === 1 / y : x != x && y != y;
+};
+},{}],64:[function(_dereq_,module,exports){
+// Works with __proto__ only. Old v8 can't work with null proto objects.
+/* eslint-disable no-proto */
+var getDesc = _dereq_(46).getDesc
+ , isObject = _dereq_(38)
+ , anObject = _dereq_(4);
+var check = function(O, proto){
+ anObject(O);
+ if(!isObject(proto) && proto !== null)throw TypeError(proto + ": can't set as prototype!");
+};
+module.exports = {
+ set: Object.setPrototypeOf || ('__proto__' in {} ? // eslint-disable-line
+ function(test, buggy, set){
+ try {
+ set = _dereq_(17)(Function.call, getDesc(Object.prototype, '__proto__').set, 2);
+ set(test, []);
+ buggy = !(test instanceof Array);
+ } catch(e){ buggy = true; }
+ return function setPrototypeOf(O, proto){
+ check(O, proto);
+ if(buggy)O.__proto__ = proto;
+ else set(O, proto);
+ return O;
+ };
+ }({}, false) : undefined),
+ check: check
+};
+},{"17":17,"38":38,"4":4,"46":46}],65:[function(_dereq_,module,exports){
+'use strict';
+var global = _dereq_(29)
+ , $ = _dereq_(46)
+ , DESCRIPTORS = _dereq_(19)
+ , SPECIES = _dereq_(83)('species');
+
+module.exports = function(KEY){
+ var C = global[KEY];
+ if(DESCRIPTORS && C && !C[SPECIES])$.setDesc(C, SPECIES, {
+ configurable: true,
+ get: function(){ return this; }
+ });
+};
+},{"19":19,"29":29,"46":46,"83":83}],66:[function(_dereq_,module,exports){
+var def = _dereq_(46).setDesc
+ , has = _dereq_(30)
+ , TAG = _dereq_(83)('toStringTag');
+
+module.exports = function(it, tag, stat){
+ if(it && !has(it = stat ? it : it.prototype, TAG))def(it, TAG, {configurable: true, value: tag});
+};
+},{"30":30,"46":46,"83":83}],67:[function(_dereq_,module,exports){
+var global = _dereq_(29)
+ , SHARED = '__core-js_shared__'
+ , store = global[SHARED] || (global[SHARED] = {});
+module.exports = function(key){
+ return store[key] || (store[key] = {});
+};
+},{"29":29}],68:[function(_dereq_,module,exports){
+// 7.3.20 SpeciesConstructor(O, defaultConstructor)
+var anObject = _dereq_(4)
+ , aFunction = _dereq_(2)
+ , SPECIES = _dereq_(83)('species');
+module.exports = function(O, D){
+ var C = anObject(O).constructor, S;
+ return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? D : aFunction(S);
+};
+},{"2":2,"4":4,"83":83}],69:[function(_dereq_,module,exports){
+module.exports = function(it, Constructor, name){
+ if(!(it instanceof Constructor))throw TypeError(name + ": use the 'new' operator!");
+ return it;
+};
+},{}],70:[function(_dereq_,module,exports){
+var toInteger = _dereq_(77)
+ , defined = _dereq_(18);
+// true -> String#at
+// false -> String#codePointAt
+module.exports = function(TO_STRING){
+ return function(that, pos){
+ var s = String(defined(that))
+ , i = toInteger(pos)
+ , l = s.length
+ , a, b;
+ if(i < 0 || i >= l)return TO_STRING ? '' : undefined;
+ a = s.charCodeAt(i);
+ return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff
+ ? TO_STRING ? s.charAt(i) : a
+ : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;
+ };
+};
+},{"18":18,"77":77}],71:[function(_dereq_,module,exports){
+// helper for String#{startsWith, endsWith, includes}
+var isRegExp = _dereq_(39)
+ , defined = _dereq_(18);
+
+module.exports = function(that, searchString, NAME){
+ if(isRegExp(searchString))throw TypeError('String#' + NAME + " doesn't accept regex!");
+ return String(defined(that));
+};
+},{"18":18,"39":39}],72:[function(_dereq_,module,exports){
+// https://github.com/ljharb/proposal-string-pad-left-right
+var toLength = _dereq_(79)
+ , repeat = _dereq_(73)
+ , defined = _dereq_(18);
+
+module.exports = function(that, maxLength, fillString, left){
+ var S = String(defined(that))
+ , stringLength = S.length
+ , fillStr = fillString === undefined ? ' ' : String(fillString)
+ , intMaxLength = toLength(maxLength);
+ if(intMaxLength <= stringLength)return S;
+ if(fillStr == '')fillStr = ' ';
+ var fillLen = intMaxLength - stringLength
+ , stringFiller = repeat.call(fillStr, Math.ceil(fillLen / fillStr.length));
+ if(stringFiller.length > fillLen)stringFiller = stringFiller.slice(0, fillLen);
+ return left ? stringFiller + S : S + stringFiller;
+};
+},{"18":18,"73":73,"79":79}],73:[function(_dereq_,module,exports){
+'use strict';
+var toInteger = _dereq_(77)
+ , defined = _dereq_(18);
+
+module.exports = function repeat(count){
+ var str = String(defined(this))
+ , res = ''
+ , n = toInteger(count);
+ if(n < 0 || n == Infinity)throw RangeError("Count can't be negative");
+ for(;n > 0; (n >>>= 1) && (str += str))if(n & 1)res += str;
+ return res;
+};
+},{"18":18,"77":77}],74:[function(_dereq_,module,exports){
+var $export = _dereq_(22)
+ , defined = _dereq_(18)
+ , fails = _dereq_(24)
+ , spaces = '\x09\x0A\x0B\x0C\x0D\x20\xA0\u1680\u180E\u2000\u2001\u2002\u2003' +
+ '\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\u2028\u2029\uFEFF'
+ , space = '[' + spaces + ']'
+ , non = '\u200b\u0085'
+ , ltrim = RegExp('^' + space + space + '*')
+ , rtrim = RegExp(space + space + '*$');
+
+var exporter = function(KEY, exec){
+ var exp = {};
+ exp[KEY] = exec(trim);
+ $export($export.P + $export.F * fails(function(){
+ return !!spaces[KEY]() || non[KEY]() != non;
+ }), 'String', exp);
+};
+
+// 1 -> String#trimLeft
+// 2 -> String#trimRight
+// 3 -> String#trim
+var trim = exporter.trim = function(string, TYPE){
+ string = String(defined(string));
+ if(TYPE & 1)string = string.replace(ltrim, '');
+ if(TYPE & 2)string = string.replace(rtrim, '');
+ return string;
+};
+
+module.exports = exporter;
+},{"18":18,"22":22,"24":24}],75:[function(_dereq_,module,exports){
+var ctx = _dereq_(17)
+ , invoke = _dereq_(33)
+ , html = _dereq_(32)
+ , cel = _dereq_(20)
+ , global = _dereq_(29)
+ , process = global.process
+ , setTask = global.setImmediate
+ , clearTask = global.clearImmediate
+ , MessageChannel = global.MessageChannel
+ , counter = 0
+ , queue = {}
+ , ONREADYSTATECHANGE = 'onreadystatechange'
+ , defer, channel, port;
+var run = function(){
+ var id = +this;
+ if(queue.hasOwnProperty(id)){
+ var fn = queue[id];
+ delete queue[id];
+ fn();
+ }
+};
+var listner = function(event){
+ run.call(event.data);
+};
+// Node.js 0.9+ & IE10+ has setImmediate, otherwise:
+if(!setTask || !clearTask){
+ setTask = function setImmediate(fn){
+ var args = [], i = 1;
+ while(arguments.length > i)args.push(arguments[i++]);
+ queue[++counter] = function(){
+ invoke(typeof fn == 'function' ? fn : Function(fn), args);
+ };
+ defer(counter);
+ return counter;
+ };
+ clearTask = function clearImmediate(id){
+ delete queue[id];
+ };
+ // Node.js 0.8-
+ if(_dereq_(11)(process) == 'process'){
+ defer = function(id){
+ process.nextTick(ctx(run, id, 1));
+ };
+ // Browsers with MessageChannel, includes WebWorkers
+ } else if(MessageChannel){
+ channel = new MessageChannel;
+ port = channel.port2;
+ channel.port1.onmessage = listner;
+ defer = ctx(port.postMessage, port, 1);
+ // Browsers with postMessage, skip WebWorkers
+ // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'
+ } else if(global.addEventListener && typeof postMessage == 'function' && !global.importScripts){
+ defer = function(id){
+ global.postMessage(id + '', '*');
+ };
+ global.addEventListener('message', listner, false);
+ // IE8-
+ } else if(ONREADYSTATECHANGE in cel('script')){
+ defer = function(id){
+ html.appendChild(cel('script'))[ONREADYSTATECHANGE] = function(){
+ html.removeChild(this);
+ run.call(id);
+ };
+ };
+ // Rest old browsers
+ } else {
+ defer = function(id){
+ setTimeout(ctx(run, id, 1), 0);
+ };
+ }
+}
+module.exports = {
+ set: setTask,
+ clear: clearTask
+};
+},{"11":11,"17":17,"20":20,"29":29,"32":32,"33":33}],76:[function(_dereq_,module,exports){
+var toInteger = _dereq_(77)
+ , max = Math.max
+ , min = Math.min;
+module.exports = function(index, length){
+ index = toInteger(index);
+ return index < 0 ? max(index + length, 0) : min(index, length);
+};
+},{"77":77}],77:[function(_dereq_,module,exports){
+// 7.1.4 ToInteger
+var ceil = Math.ceil
+ , floor = Math.floor;
+module.exports = function(it){
+ return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);
+};
+},{}],78:[function(_dereq_,module,exports){
+// to indexed object, toObject with fallback for non-array-like ES3 strings
+var IObject = _dereq_(34)
+ , defined = _dereq_(18);
+module.exports = function(it){
+ return IObject(defined(it));
+};
+},{"18":18,"34":34}],79:[function(_dereq_,module,exports){
+// 7.1.15 ToLength
+var toInteger = _dereq_(77)
+ , min = Math.min;
+module.exports = function(it){
+ return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991
+};
+},{"77":77}],80:[function(_dereq_,module,exports){
+// 7.1.13 ToObject(argument)
+var defined = _dereq_(18);
+module.exports = function(it){
+ return Object(defined(it));
+};
+},{"18":18}],81:[function(_dereq_,module,exports){
+// 7.1.1 ToPrimitive(input [, PreferredType])
+var isObject = _dereq_(38);
+// instead of the ES6 spec version, we didn't implement @@toPrimitive case
+// and the second argument - flag - preferred type is a string
+module.exports = function(it, S){
+ if(!isObject(it))return it;
+ var fn, val;
+ if(S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it)))return val;
+ if(typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it)))return val;
+ if(!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it)))return val;
+ throw TypeError("Can't convert object to primitive value");
+};
+},{"38":38}],82:[function(_dereq_,module,exports){
+var id = 0
+ , px = Math.random();
+module.exports = function(key){
+ return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));
+};
+},{}],83:[function(_dereq_,module,exports){
+var store = _dereq_(67)('wks')
+ , uid = _dereq_(82)
+ , Symbol = _dereq_(29).Symbol;
+module.exports = function(name){
+ return store[name] || (store[name] =
+ Symbol && Symbol[name] || (Symbol || uid)('Symbol.' + name));
+};
+},{"29":29,"67":67,"82":82}],84:[function(_dereq_,module,exports){
+var classof = _dereq_(10)
+ , ITERATOR = _dereq_(83)('iterator')
+ , Iterators = _dereq_(45);
+module.exports = _dereq_(16).getIteratorMethod = function(it){
+ if(it != undefined)return it[ITERATOR]
+ || it['@@iterator']
+ || Iterators[classof(it)];
+};
+},{"10":10,"16":16,"45":45,"83":83}],85:[function(_dereq_,module,exports){
+'use strict';
+var $ = _dereq_(46)
+ , $export = _dereq_(22)
+ , DESCRIPTORS = _dereq_(19)
+ , createDesc = _dereq_(59)
+ , html = _dereq_(32)
+ , cel = _dereq_(20)
+ , has = _dereq_(30)
+ , cof = _dereq_(11)
+ , invoke = _dereq_(33)
+ , fails = _dereq_(24)
+ , anObject = _dereq_(4)
+ , aFunction = _dereq_(2)
+ , isObject = _dereq_(38)
+ , toObject = _dereq_(80)
+ , toIObject = _dereq_(78)
+ , toInteger = _dereq_(77)
+ , toIndex = _dereq_(76)
+ , toLength = _dereq_(79)
+ , IObject = _dereq_(34)
+ , IE_PROTO = _dereq_(82)('__proto__')
+ , createArrayMethod = _dereq_(8)
+ , arrayIndexOf = _dereq_(7)(false)
+ , ObjectProto = Object.prototype
+ , ArrayProto = Array.prototype
+ , arraySlice = ArrayProto.slice
+ , arrayJoin = ArrayProto.join
+ , defineProperty = $.setDesc
+ , getOwnDescriptor = $.getDesc
+ , defineProperties = $.setDescs
+ , factories = {}
+ , IE8_DOM_DEFINE;
+
+if(!DESCRIPTORS){
+ IE8_DOM_DEFINE = !fails(function(){
+ return defineProperty(cel('div'), 'a', {get: function(){ return 7; }}).a != 7;
+ });
+ $.setDesc = function(O, P, Attributes){
+ if(IE8_DOM_DEFINE)try {
+ return defineProperty(O, P, Attributes);
+ } catch(e){ /* empty */ }
+ if('get' in Attributes || 'set' in Attributes)throw TypeError('Accessors not supported!');
+ if('value' in Attributes)anObject(O)[P] = Attributes.value;
+ return O;
+ };
+ $.getDesc = function(O, P){
+ if(IE8_DOM_DEFINE)try {
+ return getOwnDescriptor(O, P);
+ } catch(e){ /* empty */ }
+ if(has(O, P))return createDesc(!ObjectProto.propertyIsEnumerable.call(O, P), O[P]);
+ };
+ $.setDescs = defineProperties = function(O, Properties){
+ anObject(O);
+ var keys = $.getKeys(Properties)
+ , length = keys.length
+ , i = 0
+ , P;
+ while(length > i)$.setDesc(O, P = keys[i++], Properties[P]);
+ return O;
+ };
+}
+$export($export.S + $export.F * !DESCRIPTORS, 'Object', {
+ // 19.1.2.6 / 15.2.3.3 Object.getOwnPropertyDescriptor(O, P)
+ getOwnPropertyDescriptor: $.getDesc,
+ // 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes)
+ defineProperty: $.setDesc,
+ // 19.1.2.3 / 15.2.3.7 Object.defineProperties(O, Properties)
+ defineProperties: defineProperties
+});
+
+ // IE 8- don't enum bug keys
+var keys1 = ('constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,' +
+ 'toLocaleString,toString,valueOf').split(',')
+ // Additional keys for getOwnPropertyNames
+ , keys2 = keys1.concat('length', 'prototype')
+ , keysLen1 = keys1.length;
+
+// Create object with `null` prototype: use iframe Object with cleared prototype
+var createDict = function(){
+ // Thrash, waste and sodomy: IE GC bug
+ var iframe = cel('iframe')
+ , i = keysLen1
+ , gt = '>'
+ , iframeDocument;
+ iframe.style.display = 'none';
+ html.appendChild(iframe);
+ iframe.src = 'javascript:'; // eslint-disable-line no-script-url
+ // createDict = iframe.contentWindow.Object;
+ // html.removeChild(iframe);
+ iframeDocument = iframe.contentWindow.document;
+ iframeDocument.open();
+ iframeDocument.write('<script>document.F=Object</script' + gt);
+ iframeDocument.close();
+ createDict = iframeDocument.F;
+ while(i--)delete createDict.prototype[keys1[i]];
+ return createDict();
+};
+var createGetKeys = function(names, length){
+ return function(object){
+ var O = toIObject(object)
+ , i = 0
+ , result = []
+ , key;
+ for(key in O)if(key != IE_PROTO)has(O, key) && result.push(key);
+ // Don't enum bug & hidden keys
+ while(length > i)if(has(O, key = names[i++])){
+ ~arrayIndexOf(result, key) || result.push(key);
+ }
+ return result;
+ };
+};
+var Empty = function(){};
+$export($export.S, 'Object', {
+ // 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)
+ getPrototypeOf: $.getProto = $.getProto || function(O){
+ O = toObject(O);
+ if(has(O, IE_PROTO))return O[IE_PROTO];
+ if(typeof O.constructor == 'function' && O instanceof O.constructor){
+ return O.constructor.prototype;
+ } return O instanceof Object ? ObjectProto : null;
+ },
+ // 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)
+ getOwnPropertyNames: $.getNames = $.getNames || createGetKeys(keys2, keys2.length, true),
+ // 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])
+ create: $.create = $.create || function(O, /*?*/Properties){
+ var result;
+ if(O !== null){
+ Empty.prototype = anObject(O);
+ result = new Empty();
+ Empty.prototype = null;
+ // add "__proto__" for Object.getPrototypeOf shim
+ result[IE_PROTO] = O;
+ } else result = createDict();
+ return Properties === undefined ? result : defineProperties(result, Properties);
+ },
+ // 19.1.2.14 / 15.2.3.14 Object.keys(O)
+ keys: $.getKeys = $.getKeys || createGetKeys(keys1, keysLen1, false)
+});
+
+var construct = function(F, len, args){
+ if(!(len in factories)){
+ for(var n = [], i = 0; i < len; i++)n[i] = 'a[' + i + ']';
+ factories[len] = Function('F,a', 'return new F(' + n.join(',') + ')');
+ }
+ return factories[len](F, args);
+};
+
+// 19.2.3.2 / 15.3.4.5 Function.prototype.bind(thisArg, args...)
+$export($export.P, 'Function', {
+ bind: function bind(that /*, args... */){
+ var fn = aFunction(this)
+ , partArgs = arraySlice.call(arguments, 1);
+ var bound = function(/* args... */){
+ var args = partArgs.concat(arraySlice.call(arguments));
+ return this instanceof bound ? construct(fn, args.length, args) : invoke(fn, args, that);
+ };
+ if(isObject(fn.prototype))bound.prototype = fn.prototype;
+ return bound;
+ }
+});
+
+// fallback for not array-like ES3 strings and DOM objects
+$export($export.P + $export.F * fails(function(){
+ if(html)arraySlice.call(html);
+}), 'Array', {
+ slice: function(begin, end){
+ var len = toLength(this.length)
+ , klass = cof(this);
+ end = end === undefined ? len : end;
+ if(klass == 'Array')return arraySlice.call(this, begin, end);
+ var start = toIndex(begin, len)
+ , upTo = toIndex(end, len)
+ , size = toLength(upTo - start)
+ , cloned = Array(size)
+ , i = 0;
+ for(; i < size; i++)cloned[i] = klass == 'String'
+ ? this.charAt(start + i)
+ : this[start + i];
+ return cloned;
+ }
+});
+$export($export.P + $export.F * (IObject != Object), 'Array', {
+ join: function join(separator){
+ return arrayJoin.call(IObject(this), separator === undefined ? ',' : separator);
+ }
+});
+
+// 22.1.2.2 / 15.4.3.2 Array.isArray(arg)
+$export($export.S, 'Array', {isArray: _dereq_(36)});
+
+var createArrayReduce = function(isRight){
+ return function(callbackfn, memo){
+ aFunction(callbackfn);
+ var O = IObject(this)
+ , length = toLength(O.length)
+ , index = isRight ? length - 1 : 0
+ , i = isRight ? -1 : 1;
+ if(arguments.length < 2)for(;;){
+ if(index in O){
+ memo = O[index];
+ index += i;
+ break;
+ }
+ index += i;
+ if(isRight ? index < 0 : length <= index){
+ throw TypeError('Reduce of empty array with no initial value');
+ }
+ }
+ for(;isRight ? index >= 0 : length > index; index += i)if(index in O){
+ memo = callbackfn(memo, O[index], index, this);
+ }
+ return memo;
+ };
+};
+
+var methodize = function($fn){
+ return function(arg1/*, arg2 = undefined */){
+ return $fn(this, arg1, arguments[1]);
+ };
+};
+
+$export($export.P, 'Array', {
+ // 22.1.3.10 / 15.4.4.18 Array.prototype.forEach(callbackfn [, thisArg])
+ forEach: $.each = $.each || methodize(createArrayMethod(0)),
+ // 22.1.3.15 / 15.4.4.19 Array.prototype.map(callbackfn [, thisArg])
+ map: methodize(createArrayMethod(1)),
+ // 22.1.3.7 / 15.4.4.20 Array.prototype.filter(callbackfn [, thisArg])
+ filter: methodize(createArrayMethod(2)),
+ // 22.1.3.23 / 15.4.4.17 Array.prototype.some(callbackfn [, thisArg])
+ some: methodize(createArrayMethod(3)),
+ // 22.1.3.5 / 15.4.4.16 Array.prototype.every(callbackfn [, thisArg])
+ every: methodize(createArrayMethod(4)),
+ // 22.1.3.18 / 15.4.4.21 Array.prototype.reduce(callbackfn [, initialValue])
+ reduce: createArrayReduce(false),
+ // 22.1.3.19 / 15.4.4.22 Array.prototype.reduceRight(callbackfn [, initialValue])
+ reduceRight: createArrayReduce(true),
+ // 22.1.3.11 / 15.4.4.14 Array.prototype.indexOf(searchElement [, fromIndex])
+ indexOf: methodize(arrayIndexOf),
+ // 22.1.3.14 / 15.4.4.15 Array.prototype.lastIndexOf(searchElement [, fromIndex])
+ lastIndexOf: function(el, fromIndex /* = @[*-1] */){
+ var O = toIObject(this)
+ , length = toLength(O.length)
+ , index = length - 1;
+ if(arguments.length > 1)index = Math.min(index, toInteger(fromIndex));
+ if(index < 0)index = toLength(length + index);
+ for(;index >= 0; index--)if(index in O)if(O[index] === el)return index;
+ return -1;
+ }
+});
+
+// 20.3.3.1 / 15.9.4.4 Date.now()
+$export($export.S, 'Date', {now: function(){ return +new Date; }});
+
+var lz = function(num){
+ return num > 9 ? num : '0' + num;
+};
+
+// 20.3.4.36 / 15.9.5.43 Date.prototype.toISOString()
+// PhantomJS / old WebKit has a broken implementations
+$export($export.P + $export.F * (fails(function(){
+ return new Date(-5e13 - 1).toISOString() != '0385-07-25T07:06:39.999Z';
+}) || !fails(function(){
+ new Date(NaN).toISOString();
+})), 'Date', {
+ toISOString: function toISOString(){
+ if(!isFinite(this))throw RangeError('Invalid time value');
+ var d = this
+ , y = d.getUTCFullYear()
+ , m = d.getUTCMilliseconds()
+ , s = y < 0 ? '-' : y > 9999 ? '+' : '';
+ return s + ('00000' + Math.abs(y)).slice(s ? -6 : -4) +
+ '-' + lz(d.getUTCMonth() + 1) + '-' + lz(d.getUTCDate()) +
+ 'T' + lz(d.getUTCHours()) + ':' + lz(d.getUTCMinutes()) +
+ ':' + lz(d.getUTCSeconds()) + '.' + (m > 99 ? m : '0' + lz(m)) + 'Z';
+ }
+});
+},{"11":11,"19":19,"2":2,"20":20,"22":22,"24":24,"30":30,"32":32,"33":33,"34":34,"36":36,"38":38,"4":4,"46":46,"59":59,"7":7,"76":76,"77":77,"78":78,"79":79,"8":8,"80":80,"82":82}],86:[function(_dereq_,module,exports){
+// 22.1.3.3 Array.prototype.copyWithin(target, start, end = this.length)
+var $export = _dereq_(22);
+
+$export($export.P, 'Array', {copyWithin: _dereq_(5)});
+
+_dereq_(3)('copyWithin');
+},{"22":22,"3":3,"5":5}],87:[function(_dereq_,module,exports){
+// 22.1.3.6 Array.prototype.fill(value, start = 0, end = this.length)
+var $export = _dereq_(22);
+
+$export($export.P, 'Array', {fill: _dereq_(6)});
+
+_dereq_(3)('fill');
+},{"22":22,"3":3,"6":6}],88:[function(_dereq_,module,exports){
+'use strict';
+// 22.1.3.9 Array.prototype.findIndex(predicate, thisArg = undefined)
+var $export = _dereq_(22)
+ , $find = _dereq_(8)(6)
+ , KEY = 'findIndex'
+ , forced = true;
+// Shouldn't skip holes
+if(KEY in [])Array(1)[KEY](function(){ forced = false; });
+$export($export.P + $export.F * forced, 'Array', {
+ findIndex: function findIndex(callbackfn/*, that = undefined */){
+ return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);
+ }
+});
+_dereq_(3)(KEY);
+},{"22":22,"3":3,"8":8}],89:[function(_dereq_,module,exports){
+'use strict';
+// 22.1.3.8 Array.prototype.find(predicate, thisArg = undefined)
+var $export = _dereq_(22)
+ , $find = _dereq_(8)(5)
+ , KEY = 'find'
+ , forced = true;
+// Shouldn't skip holes
+if(KEY in [])Array(1)[KEY](function(){ forced = false; });
+$export($export.P + $export.F * forced, 'Array', {
+ find: function find(callbackfn/*, that = undefined */){
+ return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);
+ }
+});
+_dereq_(3)(KEY);
+},{"22":22,"3":3,"8":8}],90:[function(_dereq_,module,exports){
+'use strict';
+var ctx = _dereq_(17)
+ , $export = _dereq_(22)
+ , toObject = _dereq_(80)
+ , call = _dereq_(40)
+ , isArrayIter = _dereq_(35)
+ , toLength = _dereq_(79)
+ , getIterFn = _dereq_(84);
+$export($export.S + $export.F * !_dereq_(43)(function(iter){ Array.from(iter); }), 'Array', {
+ // 22.1.2.1 Array.from(arrayLike, mapfn = undefined, thisArg = undefined)
+ from: function from(arrayLike/*, mapfn = undefined, thisArg = undefined*/){
+ var O = toObject(arrayLike)
+ , C = typeof this == 'function' ? this : Array
+ , $$ = arguments
+ , $$len = $$.length
+ , mapfn = $$len > 1 ? $$[1] : undefined
+ , mapping = mapfn !== undefined
+ , index = 0
+ , iterFn = getIterFn(O)
+ , length, result, step, iterator;
+ if(mapping)mapfn = ctx(mapfn, $$len > 2 ? $$[2] : undefined, 2);
+ // if object isn't iterable or it's array with default iterator - use simple case
+ if(iterFn != undefined && !(C == Array && isArrayIter(iterFn))){
+ for(iterator = iterFn.call(O), result = new C; !(step = iterator.next()).done; index++){
+ result[index] = mapping ? call(iterator, mapfn, [step.value, index], true) : step.value;
+ }
+ } else {
+ length = toLength(O.length);
+ for(result = new C(length); length > index; index++){
+ result[index] = mapping ? mapfn(O[index], index) : O[index];
+ }
+ }
+ result.length = index;
+ return result;
+ }
+});
+
+},{"17":17,"22":22,"35":35,"40":40,"43":43,"79":79,"80":80,"84":84}],91:[function(_dereq_,module,exports){
+'use strict';
+var addToUnscopables = _dereq_(3)
+ , step = _dereq_(44)
+ , Iterators = _dereq_(45)
+ , toIObject = _dereq_(78);
+
+// 22.1.3.4 Array.prototype.entries()
+// 22.1.3.13 Array.prototype.keys()
+// 22.1.3.29 Array.prototype.values()
+// 22.1.3.30 Array.prototype[@@iterator]()
+module.exports = _dereq_(42)(Array, 'Array', function(iterated, kind){
+ this._t = toIObject(iterated); // target
+ this._i = 0; // next index
+ this._k = kind; // kind
+// 22.1.5.2.1 %ArrayIteratorPrototype%.next()
+}, function(){
+ var O = this._t
+ , kind = this._k
+ , index = this._i++;
+ if(!O || index >= O.length){
+ this._t = undefined;
+ return step(1);
+ }
+ if(kind == 'keys' )return step(0, index);
+ if(kind == 'values')return step(0, O[index]);
+ return step(0, [index, O[index]]);
+}, 'values');
+
+// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)
+Iterators.Arguments = Iterators.Array;
+
+addToUnscopables('keys');
+addToUnscopables('values');
+addToUnscopables('entries');
+},{"3":3,"42":42,"44":44,"45":45,"78":78}],92:[function(_dereq_,module,exports){
+'use strict';
+var $export = _dereq_(22);
+
+// WebKit Array.of isn't generic
+$export($export.S + $export.F * _dereq_(24)(function(){
+ function F(){}
+ return !(Array.of.call(F) instanceof F);
+}), 'Array', {
+ // 22.1.2.3 Array.of( ...items)
+ of: function of(/* ...args */){
+ var index = 0
+ , $$ = arguments
+ , $$len = $$.length
+ , result = new (typeof this == 'function' ? this : Array)($$len);
+ while($$len > index)result[index] = $$[index++];
+ result.length = $$len;
+ return result;
+ }
+});
+},{"22":22,"24":24}],93:[function(_dereq_,module,exports){
+_dereq_(65)('Array');
+},{"65":65}],94:[function(_dereq_,module,exports){
+'use strict';
+var $ = _dereq_(46)
+ , isObject = _dereq_(38)
+ , HAS_INSTANCE = _dereq_(83)('hasInstance')
+ , FunctionProto = Function.prototype;
+// 19.2.3.6 Function.prototype[@@hasInstance](V)
+if(!(HAS_INSTANCE in FunctionProto))$.setDesc(FunctionProto, HAS_INSTANCE, {value: function(O){
+ if(typeof this != 'function' || !isObject(O))return false;
+ if(!isObject(this.prototype))return O instanceof this;
+ // for environment w/o native `@@hasInstance` logic enough `instanceof`, but add this:
+ while(O = $.getProto(O))if(this.prototype === O)return true;
+ return false;
+}});
+},{"38":38,"46":46,"83":83}],95:[function(_dereq_,module,exports){
+var setDesc = _dereq_(46).setDesc
+ , createDesc = _dereq_(59)
+ , has = _dereq_(30)
+ , FProto = Function.prototype
+ , nameRE = /^\s*function ([^ (]*)/
+ , NAME = 'name';
+// 19.2.4.2 name
+NAME in FProto || _dereq_(19) && setDesc(FProto, NAME, {
+ configurable: true,
+ get: function(){
+ var match = ('' + this).match(nameRE)
+ , name = match ? match[1] : '';
+ has(this, NAME) || setDesc(this, NAME, createDesc(5, name));
+ return name;
+ }
+});
+},{"19":19,"30":30,"46":46,"59":59}],96:[function(_dereq_,module,exports){
+'use strict';
+var strong = _dereq_(12);
+
+// 23.1 Map Objects
+_dereq_(15)('Map', function(get){
+ return function Map(){ return get(this, arguments.length > 0 ? arguments[0] : undefined); };
+}, {
+ // 23.1.3.6 Map.prototype.get(key)
+ get: function get(key){
+ var entry = strong.getEntry(this, key);
+ return entry && entry.v;
+ },
+ // 23.1.3.9 Map.prototype.set(key, value)
+ set: function set(key, value){
+ return strong.def(this, key === 0 ? 0 : key, value);
+ }
+}, strong, true);
+},{"12":12,"15":15}],97:[function(_dereq_,module,exports){
+// 20.2.2.3 Math.acosh(x)
+var $export = _dereq_(22)
+ , log1p = _dereq_(50)
+ , sqrt = Math.sqrt
+ , $acosh = Math.acosh;
+
+// V8 bug https://code.google.com/p/v8/issues/detail?id=3509
+$export($export.S + $export.F * !($acosh && Math.floor($acosh(Number.MAX_VALUE)) == 710), 'Math', {
+ acosh: function acosh(x){
+ return (x = +x) < 1 ? NaN : x > 94906265.62425156
+ ? Math.log(x) + Math.LN2
+ : log1p(x - 1 + sqrt(x - 1) * sqrt(x + 1));
+ }
+});
+},{"22":22,"50":50}],98:[function(_dereq_,module,exports){
+// 20.2.2.5 Math.asinh(x)
+var $export = _dereq_(22);
+
+function asinh(x){
+ return !isFinite(x = +x) || x == 0 ? x : x < 0 ? -asinh(-x) : Math.log(x + Math.sqrt(x * x + 1));
+}
+
+$export($export.S, 'Math', {asinh: asinh});
+},{"22":22}],99:[function(_dereq_,module,exports){
+// 20.2.2.7 Math.atanh(x)
+var $export = _dereq_(22);
+
+$export($export.S, 'Math', {
+ atanh: function atanh(x){
+ return (x = +x) == 0 ? x : Math.log((1 + x) / (1 - x)) / 2;
+ }
+});
+},{"22":22}],100:[function(_dereq_,module,exports){
+// 20.2.2.9 Math.cbrt(x)
+var $export = _dereq_(22)
+ , sign = _dereq_(51);
+
+$export($export.S, 'Math', {
+ cbrt: function cbrt(x){
+ return sign(x = +x) * Math.pow(Math.abs(x), 1 / 3);
+ }
+});
+},{"22":22,"51":51}],101:[function(_dereq_,module,exports){
+// 20.2.2.11 Math.clz32(x)
+var $export = _dereq_(22);
+
+$export($export.S, 'Math', {
+ clz32: function clz32(x){
+ return (x >>>= 0) ? 31 - Math.floor(Math.log(x + 0.5) * Math.LOG2E) : 32;
+ }
+});
+},{"22":22}],102:[function(_dereq_,module,exports){
+// 20.2.2.12 Math.cosh(x)
+var $export = _dereq_(22)
+ , exp = Math.exp;
+
+$export($export.S, 'Math', {
+ cosh: function cosh(x){
+ return (exp(x = +x) + exp(-x)) / 2;
+ }
+});
+},{"22":22}],103:[function(_dereq_,module,exports){
+// 20.2.2.14 Math.expm1(x)
+var $export = _dereq_(22);
+
+$export($export.S, 'Math', {expm1: _dereq_(49)});
+},{"22":22,"49":49}],104:[function(_dereq_,module,exports){
+// 20.2.2.16 Math.fround(x)
+var $export = _dereq_(22)
+ , sign = _dereq_(51)
+ , pow = Math.pow
+ , EPSILON = pow(2, -52)
+ , EPSILON32 = pow(2, -23)
+ , MAX32 = pow(2, 127) * (2 - EPSILON32)
+ , MIN32 = pow(2, -126);
+
+var roundTiesToEven = function(n){
+ return n + 1 / EPSILON - 1 / EPSILON;
+};
+
+
+$export($export.S, 'Math', {
+ fround: function fround(x){
+ var $abs = Math.abs(x)
+ , $sign = sign(x)
+ , a, result;
+ if($abs < MIN32)return $sign * roundTiesToEven($abs / MIN32 / EPSILON32) * MIN32 * EPSILON32;
+ a = (1 + EPSILON32 / EPSILON) * $abs;
+ result = a - (a - $abs);
+ if(result > MAX32 || result != result)return $sign * Infinity;
+ return $sign * result;
+ }
+});
+},{"22":22,"51":51}],105:[function(_dereq_,module,exports){
+// 20.2.2.17 Math.hypot([value1[, value2[, … ]]])
+var $export = _dereq_(22)
+ , abs = Math.abs;
+
+$export($export.S, 'Math', {
+ hypot: function hypot(value1, value2){ // eslint-disable-line no-unused-vars
+ var sum = 0
+ , i = 0
+ , $$ = arguments
+ , $$len = $$.length
+ , larg = 0
+ , arg, div;
+ while(i < $$len){
+ arg = abs($$[i++]);
+ if(larg < arg){
+ div = larg / arg;
+ sum = sum * div * div + 1;
+ larg = arg;
+ } else if(arg > 0){
+ div = arg / larg;
+ sum += div * div;
+ } else sum += arg;
+ }
+ return larg === Infinity ? Infinity : larg * Math.sqrt(sum);
+ }
+});
+},{"22":22}],106:[function(_dereq_,module,exports){
+// 20.2.2.18 Math.imul(x, y)
+var $export = _dereq_(22)
+ , $imul = Math.imul;
+
+// some WebKit versions fails with big numbers, some has wrong arity
+$export($export.S + $export.F * _dereq_(24)(function(){
+ return $imul(0xffffffff, 5) != -5 || $imul.length != 2;
+}), 'Math', {
+ imul: function imul(x, y){
+ var UINT16 = 0xffff
+ , xn = +x
+ , yn = +y
+ , xl = UINT16 & xn
+ , yl = UINT16 & yn;
+ return 0 | xl * yl + ((UINT16 & xn >>> 16) * yl + xl * (UINT16 & yn >>> 16) << 16 >>> 0);
+ }
+});
+},{"22":22,"24":24}],107:[function(_dereq_,module,exports){
+// 20.2.2.21 Math.log10(x)
+var $export = _dereq_(22);
+
+$export($export.S, 'Math', {
+ log10: function log10(x){
+ return Math.log(x) / Math.LN10;
+ }
+});
+},{"22":22}],108:[function(_dereq_,module,exports){
+// 20.2.2.20 Math.log1p(x)
+var $export = _dereq_(22);
+
+$export($export.S, 'Math', {log1p: _dereq_(50)});
+},{"22":22,"50":50}],109:[function(_dereq_,module,exports){
+// 20.2.2.22 Math.log2(x)
+var $export = _dereq_(22);
+
+$export($export.S, 'Math', {
+ log2: function log2(x){
+ return Math.log(x) / Math.LN2;
+ }
+});
+},{"22":22}],110:[function(_dereq_,module,exports){
+// 20.2.2.28 Math.sign(x)
+var $export = _dereq_(22);
+
+$export($export.S, 'Math', {sign: _dereq_(51)});
+},{"22":22,"51":51}],111:[function(_dereq_,module,exports){
+// 20.2.2.30 Math.sinh(x)
+var $export = _dereq_(22)
+ , expm1 = _dereq_(49)
+ , exp = Math.exp;
+
+// V8 near Chromium 38 has a problem with very small numbers
+$export($export.S + $export.F * _dereq_(24)(function(){
+ return !Math.sinh(-2e-17) != -2e-17;
+}), 'Math', {
+ sinh: function sinh(x){
+ return Math.abs(x = +x) < 1
+ ? (expm1(x) - expm1(-x)) / 2
+ : (exp(x - 1) - exp(-x - 1)) * (Math.E / 2);
+ }
+});
+},{"22":22,"24":24,"49":49}],112:[function(_dereq_,module,exports){
+// 20.2.2.33 Math.tanh(x)
+var $export = _dereq_(22)
+ , expm1 = _dereq_(49)
+ , exp = Math.exp;
+
+$export($export.S, 'Math', {
+ tanh: function tanh(x){
+ var a = expm1(x = +x)
+ , b = expm1(-x);
+ return a == Infinity ? 1 : b == Infinity ? -1 : (a - b) / (exp(x) + exp(-x));
+ }
+});
+},{"22":22,"49":49}],113:[function(_dereq_,module,exports){
+// 20.2.2.34 Math.trunc(x)
+var $export = _dereq_(22);
+
+$export($export.S, 'Math', {
+ trunc: function trunc(it){
+ return (it > 0 ? Math.floor : Math.ceil)(it);
+ }
+});
+},{"22":22}],114:[function(_dereq_,module,exports){
+'use strict';
+var $ = _dereq_(46)
+ , global = _dereq_(29)
+ , has = _dereq_(30)
+ , cof = _dereq_(11)
+ , toPrimitive = _dereq_(81)
+ , fails = _dereq_(24)
+ , $trim = _dereq_(74).trim
+ , NUMBER = 'Number'
+ , $Number = global[NUMBER]
+ , Base = $Number
+ , proto = $Number.prototype
+ // Opera ~12 has broken Object#toString
+ , BROKEN_COF = cof($.create(proto)) == NUMBER
+ , TRIM = 'trim' in String.prototype;
+
+// 7.1.3 ToNumber(argument)
+var toNumber = function(argument){
+ var it = toPrimitive(argument, false);
+ if(typeof it == 'string' && it.length > 2){
+ it = TRIM ? it.trim() : $trim(it, 3);
+ var first = it.charCodeAt(0)
+ , third, radix, maxCode;
+ if(first === 43 || first === 45){
+ third = it.charCodeAt(2);
+ if(third === 88 || third === 120)return NaN; // Number('+0x1') should be NaN, old V8 fix
+ } else if(first === 48){
+ switch(it.charCodeAt(1)){
+ case 66 : case 98 : radix = 2; maxCode = 49; break; // fast equal /^0b[01]+$/i
+ case 79 : case 111 : radix = 8; maxCode = 55; break; // fast equal /^0o[0-7]+$/i
+ default : return +it;
+ }
+ for(var digits = it.slice(2), i = 0, l = digits.length, code; i < l; i++){
+ code = digits.charCodeAt(i);
+ // parseInt parses a string to a first unavailable symbol
+ // but ToNumber should return NaN if a string contains unavailable symbols
+ if(code < 48 || code > maxCode)return NaN;
+ } return parseInt(digits, radix);
+ }
+ } return +it;
+};
+
+if(!$Number(' 0o1') || !$Number('0b1') || $Number('+0x1')){
+ $Number = function Number(value){
+ var it = arguments.length < 1 ? 0 : value
+ , that = this;
+ return that instanceof $Number
+ // check on 1..constructor(foo) case
+ && (BROKEN_COF ? fails(function(){ proto.valueOf.call(that); }) : cof(that) != NUMBER)
+ ? new Base(toNumber(it)) : toNumber(it);
+ };
+ $.each.call(_dereq_(19) ? $.getNames(Base) : (
+ // ES3:
+ 'MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,' +
+ // ES6 (in case, if modules with ES6 Number statics required before):
+ 'EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,' +
+ 'MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger'
+ ).split(','), function(key){
+ if(has(Base, key) && !has($Number, key)){
+ $.setDesc($Number, key, $.getDesc(Base, key));
+ }
+ });
+ $Number.prototype = proto;
+ proto.constructor = $Number;
+ _dereq_(61)(global, NUMBER, $Number);
+}
+},{"11":11,"19":19,"24":24,"29":29,"30":30,"46":46,"61":61,"74":74,"81":81}],115:[function(_dereq_,module,exports){
+// 20.1.2.1 Number.EPSILON
+var $export = _dereq_(22);
+
+$export($export.S, 'Number', {EPSILON: Math.pow(2, -52)});
+},{"22":22}],116:[function(_dereq_,module,exports){
+// 20.1.2.2 Number.isFinite(number)
+var $export = _dereq_(22)
+ , _isFinite = _dereq_(29).isFinite;
+
+$export($export.S, 'Number', {
+ isFinite: function isFinite(it){
+ return typeof it == 'number' && _isFinite(it);
+ }
+});
+},{"22":22,"29":29}],117:[function(_dereq_,module,exports){
+// 20.1.2.3 Number.isInteger(number)
+var $export = _dereq_(22);
+
+$export($export.S, 'Number', {isInteger: _dereq_(37)});
+},{"22":22,"37":37}],118:[function(_dereq_,module,exports){
+// 20.1.2.4 Number.isNaN(number)
+var $export = _dereq_(22);
+
+$export($export.S, 'Number', {
+ isNaN: function isNaN(number){
+ return number != number;
+ }
+});
+},{"22":22}],119:[function(_dereq_,module,exports){
+// 20.1.2.5 Number.isSafeInteger(number)
+var $export = _dereq_(22)
+ , isInteger = _dereq_(37)
+ , abs = Math.abs;
+
+$export($export.S, 'Number', {
+ isSafeInteger: function isSafeInteger(number){
+ return isInteger(number) && abs(number) <= 0x1fffffffffffff;
+ }
+});
+},{"22":22,"37":37}],120:[function(_dereq_,module,exports){
+// 20.1.2.6 Number.MAX_SAFE_INTEGER
+var $export = _dereq_(22);
+
+$export($export.S, 'Number', {MAX_SAFE_INTEGER: 0x1fffffffffffff});
+},{"22":22}],121:[function(_dereq_,module,exports){
+// 20.1.2.10 Number.MIN_SAFE_INTEGER
+var $export = _dereq_(22);
+
+$export($export.S, 'Number', {MIN_SAFE_INTEGER: -0x1fffffffffffff});
+},{"22":22}],122:[function(_dereq_,module,exports){
+// 20.1.2.12 Number.parseFloat(string)
+var $export = _dereq_(22);
+
+$export($export.S, 'Number', {parseFloat: parseFloat});
+},{"22":22}],123:[function(_dereq_,module,exports){
+// 20.1.2.13 Number.parseInt(string, radix)
+var $export = _dereq_(22);
+
+$export($export.S, 'Number', {parseInt: parseInt});
+},{"22":22}],124:[function(_dereq_,module,exports){
+// 19.1.3.1 Object.assign(target, source)
+var $export = _dereq_(22);
+
+$export($export.S + $export.F, 'Object', {assign: _dereq_(53)});
+},{"22":22,"53":53}],125:[function(_dereq_,module,exports){
+// 19.1.2.5 Object.freeze(O)
+var isObject = _dereq_(38);
+
+_dereq_(54)('freeze', function($freeze){
+ return function freeze(it){
+ return $freeze && isObject(it) ? $freeze(it) : it;
+ };
+});
+},{"38":38,"54":54}],126:[function(_dereq_,module,exports){
+// 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)
+var toIObject = _dereq_(78);
+
+_dereq_(54)('getOwnPropertyDescriptor', function($getOwnPropertyDescriptor){
+ return function getOwnPropertyDescriptor(it, key){
+ return $getOwnPropertyDescriptor(toIObject(it), key);
+ };
+});
+},{"54":54,"78":78}],127:[function(_dereq_,module,exports){
+// 19.1.2.7 Object.getOwnPropertyNames(O)
+_dereq_(54)('getOwnPropertyNames', function(){
+ return _dereq_(28).get;
+});
+},{"28":28,"54":54}],128:[function(_dereq_,module,exports){
+// 19.1.2.9 Object.getPrototypeOf(O)
+var toObject = _dereq_(80);
+
+_dereq_(54)('getPrototypeOf', function($getPrototypeOf){
+ return function getPrototypeOf(it){
+ return $getPrototypeOf(toObject(it));
+ };
+});
+},{"54":54,"80":80}],129:[function(_dereq_,module,exports){
+// 19.1.2.11 Object.isExtensible(O)
+var isObject = _dereq_(38);
+
+_dereq_(54)('isExtensible', function($isExtensible){
+ return function isExtensible(it){
+ return isObject(it) ? $isExtensible ? $isExtensible(it) : true : false;
+ };
+});
+},{"38":38,"54":54}],130:[function(_dereq_,module,exports){
+// 19.1.2.12 Object.isFrozen(O)
+var isObject = _dereq_(38);
+
+_dereq_(54)('isFrozen', function($isFrozen){
+ return function isFrozen(it){
+ return isObject(it) ? $isFrozen ? $isFrozen(it) : false : true;
+ };
+});
+},{"38":38,"54":54}],131:[function(_dereq_,module,exports){
+// 19.1.2.13 Object.isSealed(O)
+var isObject = _dereq_(38);
+
+_dereq_(54)('isSealed', function($isSealed){
+ return function isSealed(it){
+ return isObject(it) ? $isSealed ? $isSealed(it) : false : true;
+ };
+});
+},{"38":38,"54":54}],132:[function(_dereq_,module,exports){
+// 19.1.3.10 Object.is(value1, value2)
+var $export = _dereq_(22);
+$export($export.S, 'Object', {is: _dereq_(63)});
+},{"22":22,"63":63}],133:[function(_dereq_,module,exports){
+// 19.1.2.14 Object.keys(O)
+var toObject = _dereq_(80);
+
+_dereq_(54)('keys', function($keys){
+ return function keys(it){
+ return $keys(toObject(it));
+ };
+});
+},{"54":54,"80":80}],134:[function(_dereq_,module,exports){
+// 19.1.2.15 Object.preventExtensions(O)
+var isObject = _dereq_(38);
+
+_dereq_(54)('preventExtensions', function($preventExtensions){
+ return function preventExtensions(it){
+ return $preventExtensions && isObject(it) ? $preventExtensions(it) : it;
+ };
+});
+},{"38":38,"54":54}],135:[function(_dereq_,module,exports){
+// 19.1.2.17 Object.seal(O)
+var isObject = _dereq_(38);
+
+_dereq_(54)('seal', function($seal){
+ return function seal(it){
+ return $seal && isObject(it) ? $seal(it) : it;
+ };
+});
+},{"38":38,"54":54}],136:[function(_dereq_,module,exports){
+// 19.1.3.19 Object.setPrototypeOf(O, proto)
+var $export = _dereq_(22);
+$export($export.S, 'Object', {setPrototypeOf: _dereq_(64).set});
+},{"22":22,"64":64}],137:[function(_dereq_,module,exports){
+'use strict';
+// 19.1.3.6 Object.prototype.toString()
+var classof = _dereq_(10)
+ , test = {};
+test[_dereq_(83)('toStringTag')] = 'z';
+if(test + '' != '[object z]'){
+ _dereq_(61)(Object.prototype, 'toString', function toString(){
+ return '[object ' + classof(this) + ']';
+ }, true);
+}
+},{"10":10,"61":61,"83":83}],138:[function(_dereq_,module,exports){
+'use strict';
+var $ = _dereq_(46)
+ , LIBRARY = _dereq_(48)
+ , global = _dereq_(29)
+ , ctx = _dereq_(17)
+ , classof = _dereq_(10)
+ , $export = _dereq_(22)
+ , isObject = _dereq_(38)
+ , anObject = _dereq_(4)
+ , aFunction = _dereq_(2)
+ , strictNew = _dereq_(69)
+ , forOf = _dereq_(27)
+ , setProto = _dereq_(64).set
+ , same = _dereq_(63)
+ , SPECIES = _dereq_(83)('species')
+ , speciesConstructor = _dereq_(68)
+ , asap = _dereq_(52)
+ , PROMISE = 'Promise'
+ , process = global.process
+ , isNode = classof(process) == 'process'
+ , P = global[PROMISE]
+ , Wrapper;
+
+var testResolve = function(sub){
+ var test = new P(function(){});
+ if(sub)test.constructor = Object;
+ return P.resolve(test) === test;
+};
+
+var USE_NATIVE = function(){
+ var works = false;
+ function P2(x){
+ var self = new P(x);
+ setProto(self, P2.prototype);
+ return self;
+ }
+ try {
+ works = P && P.resolve && testResolve();
+ setProto(P2, P);
+ P2.prototype = $.create(P.prototype, {constructor: {value: P2}});
+ // actual Firefox has broken subclass support, test that
+ if(!(P2.resolve(5).then(function(){}) instanceof P2)){
+ works = false;
+ }
+ // actual V8 bug, https://code.google.com/p/v8/issues/detail?id=4162
+ if(works && _dereq_(19)){
+ var thenableThenGotten = false;
+ P.resolve($.setDesc({}, 'then', {
+ get: function(){ thenableThenGotten = true; }
+ }));
+ works = thenableThenGotten;
+ }
+ } catch(e){ works = false; }
+ return works;
+}();
+
+// helpers
+var sameConstructor = function(a, b){
+ // library wrapper special case
+ if(LIBRARY && a === P && b === Wrapper)return true;
+ return same(a, b);
+};
+var getConstructor = function(C){
+ var S = anObject(C)[SPECIES];
+ return S != undefined ? S : C;
+};
+var isThenable = function(it){
+ var then;
+ return isObject(it) && typeof (then = it.then) == 'function' ? then : false;
+};
+var PromiseCapability = function(C){
+ var resolve, reject;
+ this.promise = new C(function($$resolve, $$reject){
+ if(resolve !== undefined || reject !== undefined)throw TypeError('Bad Promise constructor');
+ resolve = $$resolve;
+ reject = $$reject;
+ });
+ this.resolve = aFunction(resolve),
+ this.reject = aFunction(reject)
+};
+var perform = function(exec){
+ try {
+ exec();
+ } catch(e){
+ return {error: e};
+ }
+};
+var notify = function(record, isReject){
+ if(record.n)return;
+ record.n = true;
+ var chain = record.c;
+ asap(function(){
+ var value = record.v
+ , ok = record.s == 1
+ , i = 0;
+ var run = function(reaction){
+ var handler = ok ? reaction.ok : reaction.fail
+ , resolve = reaction.resolve
+ , reject = reaction.reject
+ , result, then;
+ try {
+ if(handler){
+ if(!ok)record.h = true;
+ result = handler === true ? value : handler(value);
+ if(result === reaction.promise){
+ reject(TypeError('Promise-chain cycle'));
+ } else if(then = isThenable(result)){
+ then.call(result, resolve, reject);
+ } else resolve(result);
+ } else reject(value);
+ } catch(e){
+ reject(e);
+ }
+ };
+ while(chain.length > i)run(chain[i++]); // variable length - can't use forEach
+ chain.length = 0;
+ record.n = false;
+ if(isReject)setTimeout(function(){
+ var promise = record.p
+ , handler, console;
+ if(isUnhandled(promise)){
+ if(isNode){
+ process.emit('unhandledRejection', value, promise);
+ } else if(handler = global.onunhandledrejection){
+ handler({promise: promise, reason: value});
+ } else if((console = global.console) && console.error){
+ console.error('Unhandled promise rejection', value);
+ }
+ } record.a = undefined;
+ }, 1);
+ });
+};
+var isUnhandled = function(promise){
+ var record = promise._d
+ , chain = record.a || record.c
+ , i = 0
+ , reaction;
+ if(record.h)return false;
+ while(chain.length > i){
+ reaction = chain[i++];
+ if(reaction.fail || !isUnhandled(reaction.promise))return false;
+ } return true;
+};
+var $reject = function(value){
+ var record = this;
+ if(record.d)return;
+ record.d = true;
+ record = record.r || record; // unwrap
+ record.v = value;
+ record.s = 2;
+ record.a = record.c.slice();
+ notify(record, true);
+};
+var $resolve = function(value){
+ var record = this
+ , then;
+ if(record.d)return;
+ record.d = true;
+ record = record.r || record; // unwrap
+ try {
+ if(record.p === value)throw TypeError("Promise can't be resolved itself");
+ if(then = isThenable(value)){
+ asap(function(){
+ var wrapper = {r: record, d: false}; // wrap
+ try {
+ then.call(value, ctx($resolve, wrapper, 1), ctx($reject, wrapper, 1));
+ } catch(e){
+ $reject.call(wrapper, e);
+ }
+ });
+ } else {
+ record.v = value;
+ record.s = 1;
+ notify(record, false);
+ }
+ } catch(e){
+ $reject.call({r: record, d: false}, e); // wrap
+ }
+};
+
+// constructor polyfill
+if(!USE_NATIVE){
+ // 25.4.3.1 Promise(executor)
+ P = function Promise(executor){
+ aFunction(executor);
+ var record = this._d = {
+ p: strictNew(this, P, PROMISE), // <- promise
+ c: [], // <- awaiting reactions
+ a: undefined, // <- checked in isUnhandled reactions
+ s: 0, // <- state
+ d: false, // <- done
+ v: undefined, // <- value
+ h: false, // <- handled rejection
+ n: false // <- notify
+ };
+ try {
+ executor(ctx($resolve, record, 1), ctx($reject, record, 1));
+ } catch(err){
+ $reject.call(record, err);
+ }
+ };
+ _dereq_(60)(P.prototype, {
+ // 25.4.5.3 Promise.prototype.then(onFulfilled, onRejected)
+ then: function then(onFulfilled, onRejected){
+ var reaction = new PromiseCapability(speciesConstructor(this, P))
+ , promise = reaction.promise
+ , record = this._d;
+ reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true;
+ reaction.fail = typeof onRejected == 'function' && onRejected;
+ record.c.push(reaction);
+ if(record.a)record.a.push(reaction);
+ if(record.s)notify(record, false);
+ return promise;
+ },
+ // 25.4.5.1 Promise.prototype.catch(onRejected)
+ 'catch': function(onRejected){
+ return this.then(undefined, onRejected);
+ }
+ });
+}
+
+$export($export.G + $export.W + $export.F * !USE_NATIVE, {Promise: P});
+_dereq_(66)(P, PROMISE);
+_dereq_(65)(PROMISE);
+Wrapper = _dereq_(16)[PROMISE];
+
+// statics
+$export($export.S + $export.F * !USE_NATIVE, PROMISE, {
+ // 25.4.4.5 Promise.reject(r)
+ reject: function reject(r){
+ var capability = new PromiseCapability(this)
+ , $$reject = capability.reject;
+ $$reject(r);
+ return capability.promise;
+ }
+});
+$export($export.S + $export.F * (!USE_NATIVE || testResolve(true)), PROMISE, {
+ // 25.4.4.6 Promise.resolve(x)
+ resolve: function resolve(x){
+ // instanceof instead of internal slot check because we should fix it without replacement native Promise core
+ if(x instanceof P && sameConstructor(x.constructor, this))return x;
+ var capability = new PromiseCapability(this)
+ , $$resolve = capability.resolve;
+ $$resolve(x);
+ return capability.promise;
+ }
+});
+$export($export.S + $export.F * !(USE_NATIVE && _dereq_(43)(function(iter){
+ P.all(iter)['catch'](function(){});
+})), PROMISE, {
+ // 25.4.4.1 Promise.all(iterable)
+ all: function all(iterable){
+ var C = getConstructor(this)
+ , capability = new PromiseCapability(C)
+ , resolve = capability.resolve
+ , reject = capability.reject
+ , values = [];
+ var abrupt = perform(function(){
+ forOf(iterable, false, values.push, values);
+ var remaining = values.length
+ , results = Array(remaining);
+ if(remaining)$.each.call(values, function(promise, index){
+ var alreadyCalled = false;
+ C.resolve(promise).then(function(value){
+ if(alreadyCalled)return;
+ alreadyCalled = true;
+ results[index] = value;
+ --remaining || resolve(results);
+ }, reject);
+ });
+ else resolve(results);
+ });
+ if(abrupt)reject(abrupt.error);
+ return capability.promise;
+ },
+ // 25.4.4.4 Promise.race(iterable)
+ race: function race(iterable){
+ var C = getConstructor(this)
+ , capability = new PromiseCapability(C)
+ , reject = capability.reject;
+ var abrupt = perform(function(){
+ forOf(iterable, false, function(promise){
+ C.resolve(promise).then(capability.resolve, reject);
+ });
+ });
+ if(abrupt)reject(abrupt.error);
+ return capability.promise;
+ }
+});
+},{"10":10,"16":16,"17":17,"19":19,"2":2,"22":22,"27":27,"29":29,"38":38,"4":4,"43":43,"46":46,"48":48,"52":52,"60":60,"63":63,"64":64,"65":65,"66":66,"68":68,"69":69,"83":83}],139:[function(_dereq_,module,exports){
+// 26.1.1 Reflect.apply(target, thisArgument, argumentsList)
+var $export = _dereq_(22)
+ , _apply = Function.apply;
+
+$export($export.S, 'Reflect', {
+ apply: function apply(target, thisArgument, argumentsList){
+ return _apply.call(target, thisArgument, argumentsList);
+ }
+});
+},{"22":22}],140:[function(_dereq_,module,exports){
+// 26.1.2 Reflect.construct(target, argumentsList [, newTarget])
+var $ = _dereq_(46)
+ , $export = _dereq_(22)
+ , aFunction = _dereq_(2)
+ , anObject = _dereq_(4)
+ , isObject = _dereq_(38)
+ , bind = Function.bind || _dereq_(16).Function.prototype.bind;
+
+// MS Edge supports only 2 arguments
+// FF Nightly sets third argument as `new.target`, but does not create `this` from it
+$export($export.S + $export.F * _dereq_(24)(function(){
+ function F(){}
+ return !(Reflect.construct(function(){}, [], F) instanceof F);
+}), 'Reflect', {
+ construct: function construct(Target, args /*, newTarget*/){
+ aFunction(Target);
+ var newTarget = arguments.length < 3 ? Target : aFunction(arguments[2]);
+ if(Target == newTarget){
+ // w/o altered newTarget, optimization for 0-4 arguments
+ if(args != undefined)switch(anObject(args).length){
+ case 0: return new Target;
+ case 1: return new Target(args[0]);
+ case 2: return new Target(args[0], args[1]);
+ case 3: return new Target(args[0], args[1], args[2]);
+ case 4: return new Target(args[0], args[1], args[2], args[3]);
+ }
+ // w/o altered newTarget, lot of arguments case
+ var $args = [null];
+ $args.push.apply($args, args);
+ return new (bind.apply(Target, $args));
+ }
+ // with altered newTarget, not support built-in constructors
+ var proto = newTarget.prototype
+ , instance = $.create(isObject(proto) ? proto : Object.prototype)
+ , result = Function.apply.call(Target, instance, args);
+ return isObject(result) ? result : instance;
+ }
+});
+},{"16":16,"2":2,"22":22,"24":24,"38":38,"4":4,"46":46}],141:[function(_dereq_,module,exports){
+// 26.1.3 Reflect.defineProperty(target, propertyKey, attributes)
+var $ = _dereq_(46)
+ , $export = _dereq_(22)
+ , anObject = _dereq_(4);
+
+// MS Edge has broken Reflect.defineProperty - throwing instead of returning false
+$export($export.S + $export.F * _dereq_(24)(function(){
+ Reflect.defineProperty($.setDesc({}, 1, {value: 1}), 1, {value: 2});
+}), 'Reflect', {
+ defineProperty: function defineProperty(target, propertyKey, attributes){
+ anObject(target);
+ try {
+ $.setDesc(target, propertyKey, attributes);
+ return true;
+ } catch(e){
+ return false;
+ }
+ }
+});
+},{"22":22,"24":24,"4":4,"46":46}],142:[function(_dereq_,module,exports){
+// 26.1.4 Reflect.deleteProperty(target, propertyKey)
+var $export = _dereq_(22)
+ , getDesc = _dereq_(46).getDesc
+ , anObject = _dereq_(4);
+
+$export($export.S, 'Reflect', {
+ deleteProperty: function deleteProperty(target, propertyKey){
+ var desc = getDesc(anObject(target), propertyKey);
+ return desc && !desc.configurable ? false : delete target[propertyKey];
+ }
+});
+},{"22":22,"4":4,"46":46}],143:[function(_dereq_,module,exports){
+'use strict';
+// 26.1.5 Reflect.enumerate(target)
+var $export = _dereq_(22)
+ , anObject = _dereq_(4);
+var Enumerate = function(iterated){
+ this._t = anObject(iterated); // target
+ this._i = 0; // next index
+ var keys = this._k = [] // keys
+ , key;
+ for(key in iterated)keys.push(key);
+};
+_dereq_(41)(Enumerate, 'Object', function(){
+ var that = this
+ , keys = that._k
+ , key;
+ do {
+ if(that._i >= keys.length)return {value: undefined, done: true};
+ } while(!((key = keys[that._i++]) in that._t));
+ return {value: key, done: false};
+});
+
+$export($export.S, 'Reflect', {
+ enumerate: function enumerate(target){
+ return new Enumerate(target);
+ }
+});
+},{"22":22,"4":4,"41":41}],144:[function(_dereq_,module,exports){
+// 26.1.7 Reflect.getOwnPropertyDescriptor(target, propertyKey)
+var $ = _dereq_(46)
+ , $export = _dereq_(22)
+ , anObject = _dereq_(4);
+
+$export($export.S, 'Reflect', {
+ getOwnPropertyDescriptor: function getOwnPropertyDescriptor(target, propertyKey){
+ return $.getDesc(anObject(target), propertyKey);
+ }
+});
+},{"22":22,"4":4,"46":46}],145:[function(_dereq_,module,exports){
+// 26.1.8 Reflect.getPrototypeOf(target)
+var $export = _dereq_(22)
+ , getProto = _dereq_(46).getProto
+ , anObject = _dereq_(4);
+
+$export($export.S, 'Reflect', {
+ getPrototypeOf: function getPrototypeOf(target){
+ return getProto(anObject(target));
+ }
+});
+},{"22":22,"4":4,"46":46}],146:[function(_dereq_,module,exports){
+// 26.1.6 Reflect.get(target, propertyKey [, receiver])
+var $ = _dereq_(46)
+ , has = _dereq_(30)
+ , $export = _dereq_(22)
+ , isObject = _dereq_(38)
+ , anObject = _dereq_(4);
+
+function get(target, propertyKey/*, receiver*/){
+ var receiver = arguments.length < 3 ? target : arguments[2]
+ , desc, proto;
+ if(anObject(target) === receiver)return target[propertyKey];
+ if(desc = $.getDesc(target, propertyKey))return has(desc, 'value')
+ ? desc.value
+ : desc.get !== undefined
+ ? desc.get.call(receiver)
+ : undefined;
+ if(isObject(proto = $.getProto(target)))return get(proto, propertyKey, receiver);
+}
+
+$export($export.S, 'Reflect', {get: get});
+},{"22":22,"30":30,"38":38,"4":4,"46":46}],147:[function(_dereq_,module,exports){
+// 26.1.9 Reflect.has(target, propertyKey)
+var $export = _dereq_(22);
+
+$export($export.S, 'Reflect', {
+ has: function has(target, propertyKey){
+ return propertyKey in target;
+ }
+});
+},{"22":22}],148:[function(_dereq_,module,exports){
+// 26.1.10 Reflect.isExtensible(target)
+var $export = _dereq_(22)
+ , anObject = _dereq_(4)
+ , $isExtensible = Object.isExtensible;
+
+$export($export.S, 'Reflect', {
+ isExtensible: function isExtensible(target){
+ anObject(target);
+ return $isExtensible ? $isExtensible(target) : true;
+ }
+});
+},{"22":22,"4":4}],149:[function(_dereq_,module,exports){
+// 26.1.11 Reflect.ownKeys(target)
+var $export = _dereq_(22);
+
+$export($export.S, 'Reflect', {ownKeys: _dereq_(56)});
+},{"22":22,"56":56}],150:[function(_dereq_,module,exports){
+// 26.1.12 Reflect.preventExtensions(target)
+var $export = _dereq_(22)
+ , anObject = _dereq_(4)
+ , $preventExtensions = Object.preventExtensions;
+
+$export($export.S, 'Reflect', {
+ preventExtensions: function preventExtensions(target){
+ anObject(target);
+ try {
+ if($preventExtensions)$preventExtensions(target);
+ return true;
+ } catch(e){
+ return false;
+ }
+ }
+});
+},{"22":22,"4":4}],151:[function(_dereq_,module,exports){
+// 26.1.14 Reflect.setPrototypeOf(target, proto)
+var $export = _dereq_(22)
+ , setProto = _dereq_(64);
+
+if(setProto)$export($export.S, 'Reflect', {
+ setPrototypeOf: function setPrototypeOf(target, proto){
+ setProto.check(target, proto);
+ try {
+ setProto.set(target, proto);
+ return true;
+ } catch(e){
+ return false;
+ }
+ }
+});
+},{"22":22,"64":64}],152:[function(_dereq_,module,exports){
+// 26.1.13 Reflect.set(target, propertyKey, V [, receiver])
+var $ = _dereq_(46)
+ , has = _dereq_(30)
+ , $export = _dereq_(22)
+ , createDesc = _dereq_(59)
+ , anObject = _dereq_(4)
+ , isObject = _dereq_(38);
+
+function set(target, propertyKey, V/*, receiver*/){
+ var receiver = arguments.length < 4 ? target : arguments[3]
+ , ownDesc = $.getDesc(anObject(target), propertyKey)
+ , existingDescriptor, proto;
+ if(!ownDesc){
+ if(isObject(proto = $.getProto(target))){
+ return set(proto, propertyKey, V, receiver);
+ }
+ ownDesc = createDesc(0);
+ }
+ if(has(ownDesc, 'value')){
+ if(ownDesc.writable === false || !isObject(receiver))return false;
+ existingDescriptor = $.getDesc(receiver, propertyKey) || createDesc(0);
+ existingDescriptor.value = V;
+ $.setDesc(receiver, propertyKey, existingDescriptor);
+ return true;
+ }
+ return ownDesc.set === undefined ? false : (ownDesc.set.call(receiver, V), true);
+}
+
+$export($export.S, 'Reflect', {set: set});
+},{"22":22,"30":30,"38":38,"4":4,"46":46,"59":59}],153:[function(_dereq_,module,exports){
+var $ = _dereq_(46)
+ , global = _dereq_(29)
+ , isRegExp = _dereq_(39)
+ , $flags = _dereq_(26)
+ , $RegExp = global.RegExp
+ , Base = $RegExp
+ , proto = $RegExp.prototype
+ , re1 = /a/g
+ , re2 = /a/g
+ // "new" creates a new object, old webkit buggy here
+ , CORRECT_NEW = new $RegExp(re1) !== re1;
+
+if(_dereq_(19) && (!CORRECT_NEW || _dereq_(24)(function(){
+ re2[_dereq_(83)('match')] = false;
+ // RegExp constructor can alter flags and IsRegExp works correct with @@match
+ return $RegExp(re1) != re1 || $RegExp(re2) == re2 || $RegExp(re1, 'i') != '/a/i';
+}))){
+ $RegExp = function RegExp(p, f){
+ var piRE = isRegExp(p)
+ , fiU = f === undefined;
+ return !(this instanceof $RegExp) && piRE && p.constructor === $RegExp && fiU ? p
+ : CORRECT_NEW
+ ? new Base(piRE && !fiU ? p.source : p, f)
+ : Base((piRE = p instanceof $RegExp) ? p.source : p, piRE && fiU ? $flags.call(p) : f);
+ };
+ $.each.call($.getNames(Base), function(key){
+ key in $RegExp || $.setDesc($RegExp, key, {
+ configurable: true,
+ get: function(){ return Base[key]; },
+ set: function(it){ Base[key] = it; }
+ });
+ });
+ proto.constructor = $RegExp;
+ $RegExp.prototype = proto;
+ _dereq_(61)(global, 'RegExp', $RegExp);
+}
+
+_dereq_(65)('RegExp');
+},{"19":19,"24":24,"26":26,"29":29,"39":39,"46":46,"61":61,"65":65,"83":83}],154:[function(_dereq_,module,exports){
+// 21.2.5.3 get RegExp.prototype.flags()
+var $ = _dereq_(46);
+if(_dereq_(19) && /./g.flags != 'g')$.setDesc(RegExp.prototype, 'flags', {
+ configurable: true,
+ get: _dereq_(26)
+});
+},{"19":19,"26":26,"46":46}],155:[function(_dereq_,module,exports){
+// @@match logic
+_dereq_(25)('match', 1, function(defined, MATCH){
+ // 21.1.3.11 String.prototype.match(regexp)
+ return function match(regexp){
+ 'use strict';
+ var O = defined(this)
+ , fn = regexp == undefined ? undefined : regexp[MATCH];
+ return fn !== undefined ? fn.call(regexp, O) : new RegExp(regexp)[MATCH](String(O));
+ };
+});
+},{"25":25}],156:[function(_dereq_,module,exports){
+// @@replace logic
+_dereq_(25)('replace', 2, function(defined, REPLACE, $replace){
+ // 21.1.3.14 String.prototype.replace(searchValue, replaceValue)
+ return function replace(searchValue, replaceValue){
+ 'use strict';
+ var O = defined(this)
+ , fn = searchValue == undefined ? undefined : searchValue[REPLACE];
+ return fn !== undefined
+ ? fn.call(searchValue, O, replaceValue)
+ : $replace.call(String(O), searchValue, replaceValue);
+ };
+});
+},{"25":25}],157:[function(_dereq_,module,exports){
+// @@search logic
+_dereq_(25)('search', 1, function(defined, SEARCH){
+ // 21.1.3.15 String.prototype.search(regexp)
+ return function search(regexp){
+ 'use strict';
+ var O = defined(this)
+ , fn = regexp == undefined ? undefined : regexp[SEARCH];
+ return fn !== undefined ? fn.call(regexp, O) : new RegExp(regexp)[SEARCH](String(O));
+ };
+});
+},{"25":25}],158:[function(_dereq_,module,exports){
+// @@split logic
+_dereq_(25)('split', 2, function(defined, SPLIT, $split){
+ // 21.1.3.17 String.prototype.split(separator, limit)
+ return function split(separator, limit){
+ 'use strict';
+ var O = defined(this)
+ , fn = separator == undefined ? undefined : separator[SPLIT];
+ return fn !== undefined
+ ? fn.call(separator, O, limit)
+ : $split.call(String(O), separator, limit);
+ };
+});
+},{"25":25}],159:[function(_dereq_,module,exports){
+'use strict';
+var strong = _dereq_(12);
+
+// 23.2 Set Objects
+_dereq_(15)('Set', function(get){
+ return function Set(){ return get(this, arguments.length > 0 ? arguments[0] : undefined); };
+}, {
+ // 23.2.3.1 Set.prototype.add(value)
+ add: function add(value){
+ return strong.def(this, value = value === 0 ? 0 : value, value);
+ }
+}, strong);
+},{"12":12,"15":15}],160:[function(_dereq_,module,exports){
+'use strict';
+var $export = _dereq_(22)
+ , $at = _dereq_(70)(false);
+$export($export.P, 'String', {
+ // 21.1.3.3 String.prototype.codePointAt(pos)
+ codePointAt: function codePointAt(pos){
+ return $at(this, pos);
+ }
+});
+},{"22":22,"70":70}],161:[function(_dereq_,module,exports){
+// 21.1.3.6 String.prototype.endsWith(searchString [, endPosition])
+'use strict';
+var $export = _dereq_(22)
+ , toLength = _dereq_(79)
+ , context = _dereq_(71)
+ , ENDS_WITH = 'endsWith'
+ , $endsWith = ''[ENDS_WITH];
+
+$export($export.P + $export.F * _dereq_(23)(ENDS_WITH), 'String', {
+ endsWith: function endsWith(searchString /*, endPosition = @length */){
+ var that = context(this, searchString, ENDS_WITH)
+ , $$ = arguments
+ , endPosition = $$.length > 1 ? $$[1] : undefined
+ , len = toLength(that.length)
+ , end = endPosition === undefined ? len : Math.min(toLength(endPosition), len)
+ , search = String(searchString);
+ return $endsWith
+ ? $endsWith.call(that, search, end)
+ : that.slice(end - search.length, end) === search;
+ }
+});
+},{"22":22,"23":23,"71":71,"79":79}],162:[function(_dereq_,module,exports){
+var $export = _dereq_(22)
+ , toIndex = _dereq_(76)
+ , fromCharCode = String.fromCharCode
+ , $fromCodePoint = String.fromCodePoint;
+
+// length should be 1, old FF problem
+$export($export.S + $export.F * (!!$fromCodePoint && $fromCodePoint.length != 1), 'String', {
+ // 21.1.2.2 String.fromCodePoint(...codePoints)
+ fromCodePoint: function fromCodePoint(x){ // eslint-disable-line no-unused-vars
+ var res = []
+ , $$ = arguments
+ , $$len = $$.length
+ , i = 0
+ , code;
+ while($$len > i){
+ code = +$$[i++];
+ if(toIndex(code, 0x10ffff) !== code)throw RangeError(code + ' is not a valid code point');
+ res.push(code < 0x10000
+ ? fromCharCode(code)
+ : fromCharCode(((code -= 0x10000) >> 10) + 0xd800, code % 0x400 + 0xdc00)
+ );
+ } return res.join('');
+ }
+});
+},{"22":22,"76":76}],163:[function(_dereq_,module,exports){
+// 21.1.3.7 String.prototype.includes(searchString, position = 0)
+'use strict';
+var $export = _dereq_(22)
+ , context = _dereq_(71)
+ , INCLUDES = 'includes';
+
+$export($export.P + $export.F * _dereq_(23)(INCLUDES), 'String', {
+ includes: function includes(searchString /*, position = 0 */){
+ return !!~context(this, searchString, INCLUDES)
+ .indexOf(searchString, arguments.length > 1 ? arguments[1] : undefined);
+ }
+});
+},{"22":22,"23":23,"71":71}],164:[function(_dereq_,module,exports){
+'use strict';
+var $at = _dereq_(70)(true);
+
+// 21.1.3.27 String.prototype[@@iterator]()
+_dereq_(42)(String, 'String', function(iterated){
+ this._t = String(iterated); // target
+ this._i = 0; // next index
+// 21.1.5.2.1 %StringIteratorPrototype%.next()
+}, function(){
+ var O = this._t
+ , index = this._i
+ , point;
+ if(index >= O.length)return {value: undefined, done: true};
+ point = $at(O, index);
+ this._i += point.length;
+ return {value: point, done: false};
+});
+},{"42":42,"70":70}],165:[function(_dereq_,module,exports){
+var $export = _dereq_(22)
+ , toIObject = _dereq_(78)
+ , toLength = _dereq_(79);
+
+$export($export.S, 'String', {
+ // 21.1.2.4 String.raw(callSite, ...substitutions)
+ raw: function raw(callSite){
+ var tpl = toIObject(callSite.raw)
+ , len = toLength(tpl.length)
+ , $$ = arguments
+ , $$len = $$.length
+ , res = []
+ , i = 0;
+ while(len > i){
+ res.push(String(tpl[i++]));
+ if(i < $$len)res.push(String($$[i]));
+ } return res.join('');
+ }
+});
+},{"22":22,"78":78,"79":79}],166:[function(_dereq_,module,exports){
+var $export = _dereq_(22);
+
+$export($export.P, 'String', {
+ // 21.1.3.13 String.prototype.repeat(count)
+ repeat: _dereq_(73)
+});
+},{"22":22,"73":73}],167:[function(_dereq_,module,exports){
+// 21.1.3.18 String.prototype.startsWith(searchString [, position ])
+'use strict';
+var $export = _dereq_(22)
+ , toLength = _dereq_(79)
+ , context = _dereq_(71)
+ , STARTS_WITH = 'startsWith'
+ , $startsWith = ''[STARTS_WITH];
+
+$export($export.P + $export.F * _dereq_(23)(STARTS_WITH), 'String', {
+ startsWith: function startsWith(searchString /*, position = 0 */){
+ var that = context(this, searchString, STARTS_WITH)
+ , $$ = arguments
+ , index = toLength(Math.min($$.length > 1 ? $$[1] : undefined, that.length))
+ , search = String(searchString);
+ return $startsWith
+ ? $startsWith.call(that, search, index)
+ : that.slice(index, index + search.length) === search;
+ }
+});
+},{"22":22,"23":23,"71":71,"79":79}],168:[function(_dereq_,module,exports){
+'use strict';
+// 21.1.3.25 String.prototype.trim()
+_dereq_(74)('trim', function($trim){
+ return function trim(){
+ return $trim(this, 3);
+ };
+});
+},{"74":74}],169:[function(_dereq_,module,exports){
+'use strict';
+// ECMAScript 6 symbols shim
+var $ = _dereq_(46)
+ , global = _dereq_(29)
+ , has = _dereq_(30)
+ , DESCRIPTORS = _dereq_(19)
+ , $export = _dereq_(22)
+ , redefine = _dereq_(61)
+ , $fails = _dereq_(24)
+ , shared = _dereq_(67)
+ , setToStringTag = _dereq_(66)
+ , uid = _dereq_(82)
+ , wks = _dereq_(83)
+ , keyOf = _dereq_(47)
+ , $names = _dereq_(28)
+ , enumKeys = _dereq_(21)
+ , isArray = _dereq_(36)
+ , anObject = _dereq_(4)
+ , toIObject = _dereq_(78)
+ , createDesc = _dereq_(59)
+ , getDesc = $.getDesc
+ , setDesc = $.setDesc
+ , _create = $.create
+ , getNames = $names.get
+ , $Symbol = global.Symbol
+ , $JSON = global.JSON
+ , _stringify = $JSON && $JSON.stringify
+ , setter = false
+ , HIDDEN = wks('_hidden')
+ , isEnum = $.isEnum
+ , SymbolRegistry = shared('symbol-registry')
+ , AllSymbols = shared('symbols')
+ , useNative = typeof $Symbol == 'function'
+ , ObjectProto = Object.prototype;
+
+// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687
+var setSymbolDesc = DESCRIPTORS && $fails(function(){
+ return _create(setDesc({}, 'a', {
+ get: function(){ return setDesc(this, 'a', {value: 7}).a; }
+ })).a != 7;
+}) ? function(it, key, D){
+ var protoDesc = getDesc(ObjectProto, key);
+ if(protoDesc)delete ObjectProto[key];
+ setDesc(it, key, D);
+ if(protoDesc && it !== ObjectProto)setDesc(ObjectProto, key, protoDesc);
+} : setDesc;
+
+var wrap = function(tag){
+ var sym = AllSymbols[tag] = _create($Symbol.prototype);
+ sym._k = tag;
+ DESCRIPTORS && setter && setSymbolDesc(ObjectProto, tag, {
+ configurable: true,
+ set: function(value){
+ if(has(this, HIDDEN) && has(this[HIDDEN], tag))this[HIDDEN][tag] = false;
+ setSymbolDesc(this, tag, createDesc(1, value));
+ }
+ });
+ return sym;
+};
+
+var isSymbol = function(it){
+ return typeof it == 'symbol';
+};
+
+var $defineProperty = function defineProperty(it, key, D){
+ if(D && has(AllSymbols, key)){
+ if(!D.enumerable){
+ if(!has(it, HIDDEN))setDesc(it, HIDDEN, createDesc(1, {}));
+ it[HIDDEN][key] = true;
+ } else {
+ if(has(it, HIDDEN) && it[HIDDEN][key])it[HIDDEN][key] = false;
+ D = _create(D, {enumerable: createDesc(0, false)});
+ } return setSymbolDesc(it, key, D);
+ } return setDesc(it, key, D);
+};
+var $defineProperties = function defineProperties(it, P){
+ anObject(it);
+ var keys = enumKeys(P = toIObject(P))
+ , i = 0
+ , l = keys.length
+ , key;
+ while(l > i)$defineProperty(it, key = keys[i++], P[key]);
+ return it;
+};
+var $create = function create(it, P){
+ return P === undefined ? _create(it) : $defineProperties(_create(it), P);
+};
+var $propertyIsEnumerable = function propertyIsEnumerable(key){
+ var E = isEnum.call(this, key);
+ return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key]
+ ? E : true;
+};
+var $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key){
+ var D = getDesc(it = toIObject(it), key);
+ if(D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key]))D.enumerable = true;
+ return D;
+};
+var $getOwnPropertyNames = function getOwnPropertyNames(it){
+ var names = getNames(toIObject(it))
+ , result = []
+ , i = 0
+ , key;
+ while(names.length > i)if(!has(AllSymbols, key = names[i++]) && key != HIDDEN)result.push(key);
+ return result;
+};
+var $getOwnPropertySymbols = function getOwnPropertySymbols(it){
+ var names = getNames(toIObject(it))
+ , result = []
+ , i = 0
+ , key;
+ while(names.length > i)if(has(AllSymbols, key = names[i++]))result.push(AllSymbols[key]);
+ return result;
+};
+var $stringify = function stringify(it){
+ if(it === undefined || isSymbol(it))return; // IE8 returns string on undefined
+ var args = [it]
+ , i = 1
+ , $$ = arguments
+ , replacer, $replacer;
+ while($$.length > i)args.push($$[i++]);
+ replacer = args[1];
+ if(typeof replacer == 'function')$replacer = replacer;
+ if($replacer || !isArray(replacer))replacer = function(key, value){
+ if($replacer)value = $replacer.call(this, key, value);
+ if(!isSymbol(value))return value;
+ };
+ args[1] = replacer;
+ return _stringify.apply($JSON, args);
+};
+var buggyJSON = $fails(function(){
+ var S = $Symbol();
+ // MS Edge converts symbol values to JSON as {}
+ // WebKit converts symbol values to JSON as null
+ // V8 throws on boxed symbols
+ return _stringify([S]) != '[null]' || _stringify({a: S}) != '{}' || _stringify(Object(S)) != '{}';
+});
+
+// 19.4.1.1 Symbol([description])
+if(!useNative){
+ $Symbol = function Symbol(){
+ if(isSymbol(this))throw TypeError('Symbol is not a constructor');
+ return wrap(uid(arguments.length > 0 ? arguments[0] : undefined));
+ };
+ redefine($Symbol.prototype, 'toString', function toString(){
+ return this._k;
+ });
+
+ isSymbol = function(it){
+ return it instanceof $Symbol;
+ };
+
+ $.create = $create;
+ $.isEnum = $propertyIsEnumerable;
+ $.getDesc = $getOwnPropertyDescriptor;
+ $.setDesc = $defineProperty;
+ $.setDescs = $defineProperties;
+ $.getNames = $names.get = $getOwnPropertyNames;
+ $.getSymbols = $getOwnPropertySymbols;
+
+ if(DESCRIPTORS && !_dereq_(48)){
+ redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true);
+ }
+}
+
+var symbolStatics = {
+ // 19.4.2.1 Symbol.for(key)
+ 'for': function(key){
+ return has(SymbolRegistry, key += '')
+ ? SymbolRegistry[key]
+ : SymbolRegistry[key] = $Symbol(key);
+ },
+ // 19.4.2.5 Symbol.keyFor(sym)
+ keyFor: function keyFor(key){
+ return keyOf(SymbolRegistry, key);
+ },
+ useSetter: function(){ setter = true; },
+ useSimple: function(){ setter = false; }
+};
+// 19.4.2.2 Symbol.hasInstance
+// 19.4.2.3 Symbol.isConcatSpreadable
+// 19.4.2.4 Symbol.iterator
+// 19.4.2.6 Symbol.match
+// 19.4.2.8 Symbol.replace
+// 19.4.2.9 Symbol.search
+// 19.4.2.10 Symbol.species
+// 19.4.2.11 Symbol.split
+// 19.4.2.12 Symbol.toPrimitive
+// 19.4.2.13 Symbol.toStringTag
+// 19.4.2.14 Symbol.unscopables
+$.each.call((
+ 'hasInstance,isConcatSpreadable,iterator,match,replace,search,' +
+ 'species,split,toPrimitive,toStringTag,unscopables'
+).split(','), function(it){
+ var sym = wks(it);
+ symbolStatics[it] = useNative ? sym : wrap(sym);
+});
+
+setter = true;
+
+$export($export.G + $export.W, {Symbol: $Symbol});
+
+$export($export.S, 'Symbol', symbolStatics);
+
+$export($export.S + $export.F * !useNative, 'Object', {
+ // 19.1.2.2 Object.create(O [, Properties])
+ create: $create,
+ // 19.1.2.4 Object.defineProperty(O, P, Attributes)
+ defineProperty: $defineProperty,
+ // 19.1.2.3 Object.defineProperties(O, Properties)
+ defineProperties: $defineProperties,
+ // 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)
+ getOwnPropertyDescriptor: $getOwnPropertyDescriptor,
+ // 19.1.2.7 Object.getOwnPropertyNames(O)
+ getOwnPropertyNames: $getOwnPropertyNames,
+ // 19.1.2.8 Object.getOwnPropertySymbols(O)
+ getOwnPropertySymbols: $getOwnPropertySymbols
+});
+
+// 24.3.2 JSON.stringify(value [, replacer [, space]])
+$JSON && $export($export.S + $export.F * (!useNative || buggyJSON), 'JSON', {stringify: $stringify});
+
+// 19.4.3.5 Symbol.prototype[@@toStringTag]
+setToStringTag($Symbol, 'Symbol');
+// 20.2.1.9 Math[@@toStringTag]
+setToStringTag(Math, 'Math', true);
+// 24.3.3 JSON[@@toStringTag]
+setToStringTag(global.JSON, 'JSON', true);
+},{"19":19,"21":21,"22":22,"24":24,"28":28,"29":29,"30":30,"36":36,"4":4,"46":46,"47":47,"48":48,"59":59,"61":61,"66":66,"67":67,"78":78,"82":82,"83":83}],170:[function(_dereq_,module,exports){
+'use strict';
+var $ = _dereq_(46)
+ , redefine = _dereq_(61)
+ , weak = _dereq_(14)
+ , isObject = _dereq_(38)
+ , has = _dereq_(30)
+ , frozenStore = weak.frozenStore
+ , WEAK = weak.WEAK
+ , isExtensible = Object.isExtensible || isObject
+ , tmp = {};
+
+// 23.3 WeakMap Objects
+var $WeakMap = _dereq_(15)('WeakMap', function(get){
+ return function WeakMap(){ return get(this, arguments.length > 0 ? arguments[0] : undefined); };
+}, {
+ // 23.3.3.3 WeakMap.prototype.get(key)
+ get: function get(key){
+ if(isObject(key)){
+ if(!isExtensible(key))return frozenStore(this).get(key);
+ if(has(key, WEAK))return key[WEAK][this._i];
+ }
+ },
+ // 23.3.3.5 WeakMap.prototype.set(key, value)
+ set: function set(key, value){
+ return weak.def(this, key, value);
+ }
+}, weak, true, true);
+
+// IE11 WeakMap frozen keys fix
+if(new $WeakMap().set((Object.freeze || Object)(tmp), 7).get(tmp) != 7){
+ $.each.call(['delete', 'has', 'get', 'set'], function(key){
+ var proto = $WeakMap.prototype
+ , method = proto[key];
+ redefine(proto, key, function(a, b){
+ // store frozen objects on leaky map
+ if(isObject(a) && !isExtensible(a)){
+ var result = frozenStore(this)[key](a, b);
+ return key == 'set' ? this : result;
+ // store all the rest on native weakmap
+ } return method.call(this, a, b);
+ });
+ });
+}
+},{"14":14,"15":15,"30":30,"38":38,"46":46,"61":61}],171:[function(_dereq_,module,exports){
+'use strict';
+var weak = _dereq_(14);
+
+// 23.4 WeakSet Objects
+_dereq_(15)('WeakSet', function(get){
+ return function WeakSet(){ return get(this, arguments.length > 0 ? arguments[0] : undefined); };
+}, {
+ // 23.4.3.1 WeakSet.prototype.add(value)
+ add: function add(value){
+ return weak.def(this, value, true);
+ }
+}, weak, false, true);
+},{"14":14,"15":15}],172:[function(_dereq_,module,exports){
+'use strict';
+var $export = _dereq_(22)
+ , $includes = _dereq_(7)(true);
+
+$export($export.P, 'Array', {
+ // https://github.com/domenic/Array.prototype.includes
+ includes: function includes(el /*, fromIndex = 0 */){
+ return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);
+ }
+});
+
+_dereq_(3)('includes');
+},{"22":22,"3":3,"7":7}],173:[function(_dereq_,module,exports){
+// https://github.com/DavidBruant/Map-Set.prototype.toJSON
+var $export = _dereq_(22);
+
+$export($export.P, 'Map', {toJSON: _dereq_(13)('Map')});
+},{"13":13,"22":22}],174:[function(_dereq_,module,exports){
+// http://goo.gl/XkBrjD
+var $export = _dereq_(22)
+ , $entries = _dereq_(55)(true);
+
+$export($export.S, 'Object', {
+ entries: function entries(it){
+ return $entries(it);
+ }
+});
+},{"22":22,"55":55}],175:[function(_dereq_,module,exports){
+// https://gist.github.com/WebReflection/9353781
+var $ = _dereq_(46)
+ , $export = _dereq_(22)
+ , ownKeys = _dereq_(56)
+ , toIObject = _dereq_(78)
+ , createDesc = _dereq_(59);
+
+$export($export.S, 'Object', {
+ getOwnPropertyDescriptors: function getOwnPropertyDescriptors(object){
+ var O = toIObject(object)
+ , setDesc = $.setDesc
+ , getDesc = $.getDesc
+ , keys = ownKeys(O)
+ , result = {}
+ , i = 0
+ , key, D;
+ while(keys.length > i){
+ D = getDesc(O, key = keys[i++]);
+ if(key in result)setDesc(result, key, createDesc(0, D));
+ else result[key] = D;
+ } return result;
+ }
+});
+},{"22":22,"46":46,"56":56,"59":59,"78":78}],176:[function(_dereq_,module,exports){
+// http://goo.gl/XkBrjD
+var $export = _dereq_(22)
+ , $values = _dereq_(55)(false);
+
+$export($export.S, 'Object', {
+ values: function values(it){
+ return $values(it);
+ }
+});
+},{"22":22,"55":55}],177:[function(_dereq_,module,exports){
+// https://github.com/benjamingr/RexExp.escape
+var $export = _dereq_(22)
+ , $re = _dereq_(62)(/[\\^$*+?.()|[\]{}]/g, '\\$&');
+
+$export($export.S, 'RegExp', {escape: function escape(it){ return $re(it); }});
+
+},{"22":22,"62":62}],178:[function(_dereq_,module,exports){
+// https://github.com/DavidBruant/Map-Set.prototype.toJSON
+var $export = _dereq_(22);
+
+$export($export.P, 'Set', {toJSON: _dereq_(13)('Set')});
+},{"13":13,"22":22}],179:[function(_dereq_,module,exports){
+'use strict';
+// https://github.com/mathiasbynens/String.prototype.at
+var $export = _dereq_(22)
+ , $at = _dereq_(70)(true);
+
+$export($export.P, 'String', {
+ at: function at(pos){
+ return $at(this, pos);
+ }
+});
+},{"22":22,"70":70}],180:[function(_dereq_,module,exports){
+'use strict';
+var $export = _dereq_(22)
+ , $pad = _dereq_(72);
+
+$export($export.P, 'String', {
+ padLeft: function padLeft(maxLength /*, fillString = ' ' */){
+ return $pad(this, maxLength, arguments.length > 1 ? arguments[1] : undefined, true);
+ }
+});
+},{"22":22,"72":72}],181:[function(_dereq_,module,exports){
+'use strict';
+var $export = _dereq_(22)
+ , $pad = _dereq_(72);
+
+$export($export.P, 'String', {
+ padRight: function padRight(maxLength /*, fillString = ' ' */){
+ return $pad(this, maxLength, arguments.length > 1 ? arguments[1] : undefined, false);
+ }
+});
+},{"22":22,"72":72}],182:[function(_dereq_,module,exports){
+'use strict';
+// https://github.com/sebmarkbage/ecmascript-string-left-right-trim
+_dereq_(74)('trimLeft', function($trim){
+ return function trimLeft(){
+ return $trim(this, 1);
+ };
+});
+},{"74":74}],183:[function(_dereq_,module,exports){
+'use strict';
+// https://github.com/sebmarkbage/ecmascript-string-left-right-trim
+_dereq_(74)('trimRight', function($trim){
+ return function trimRight(){
+ return $trim(this, 2);
+ };
+});
+},{"74":74}],184:[function(_dereq_,module,exports){
+// JavaScript 1.6 / Strawman array statics shim
+var $ = _dereq_(46)
+ , $export = _dereq_(22)
+ , $ctx = _dereq_(17)
+ , $Array = _dereq_(16).Array || Array
+ , statics = {};
+var setStatics = function(keys, length){
+ $.each.call(keys.split(','), function(key){
+ if(length == undefined && key in $Array)statics[key] = $Array[key];
+ else if(key in [])statics[key] = $ctx(Function.call, [][key], length);
+ });
+};
+setStatics('pop,reverse,shift,keys,values,entries', 1);
+setStatics('indexOf,every,some,forEach,map,filter,find,findIndex,includes', 3);
+setStatics('join,slice,concat,push,splice,unshift,sort,lastIndexOf,' +
+ 'reduce,reduceRight,copyWithin,fill');
+$export($export.S, 'Array', statics);
+},{"16":16,"17":17,"22":22,"46":46}],185:[function(_dereq_,module,exports){
+_dereq_(91);
+var global = _dereq_(29)
+ , hide = _dereq_(31)
+ , Iterators = _dereq_(45)
+ , ITERATOR = _dereq_(83)('iterator')
+ , NL = global.NodeList
+ , HTC = global.HTMLCollection
+ , NLProto = NL && NL.prototype
+ , HTCProto = HTC && HTC.prototype
+ , ArrayValues = Iterators.NodeList = Iterators.HTMLCollection = Iterators.Array;
+if(NLProto && !NLProto[ITERATOR])hide(NLProto, ITERATOR, ArrayValues);
+if(HTCProto && !HTCProto[ITERATOR])hide(HTCProto, ITERATOR, ArrayValues);
+},{"29":29,"31":31,"45":45,"83":83,"91":91}],186:[function(_dereq_,module,exports){
+var $export = _dereq_(22)
+ , $task = _dereq_(75);
+$export($export.G + $export.B, {
+ setImmediate: $task.set,
+ clearImmediate: $task.clear
+});
+},{"22":22,"75":75}],187:[function(_dereq_,module,exports){
+// ie9- setTimeout & setInterval additional parameters fix
+var global = _dereq_(29)
+ , $export = _dereq_(22)
+ , invoke = _dereq_(33)
+ , partial = _dereq_(57)
+ , navigator = global.navigator
+ , MSIE = !!navigator && /MSIE .\./.test(navigator.userAgent); // <- dirty ie9- check
+var wrap = function(set){
+ return MSIE ? function(fn, time /*, ...args */){
+ return set(invoke(
+ partial,
+ [].slice.call(arguments, 2),
+ typeof fn == 'function' ? fn : Function(fn)
+ ), time);
+ } : set;
+};
+$export($export.G + $export.B + $export.F * MSIE, {
+ setTimeout: wrap(global.setTimeout),
+ setInterval: wrap(global.setInterval)
+});
+},{"22":22,"29":29,"33":33,"57":57}],188:[function(_dereq_,module,exports){
+_dereq_(85);
+_dereq_(169);
+_dereq_(124);
+_dereq_(132);
+_dereq_(136);
+_dereq_(137);
+_dereq_(125);
+_dereq_(135);
+_dereq_(134);
+_dereq_(130);
+_dereq_(131);
+_dereq_(129);
+_dereq_(126);
+_dereq_(128);
+_dereq_(133);
+_dereq_(127);
+_dereq_(95);
+_dereq_(94);
+_dereq_(114);
+_dereq_(115);
+_dereq_(116);
+_dereq_(117);
+_dereq_(118);
+_dereq_(119);
+_dereq_(120);
+_dereq_(121);
+_dereq_(122);
+_dereq_(123);
+_dereq_(97);
+_dereq_(98);
+_dereq_(99);
+_dereq_(100);
+_dereq_(101);
+_dereq_(102);
+_dereq_(103);
+_dereq_(104);
+_dereq_(105);
+_dereq_(106);
+_dereq_(107);
+_dereq_(108);
+_dereq_(109);
+_dereq_(110);
+_dereq_(111);
+_dereq_(112);
+_dereq_(113);
+_dereq_(162);
+_dereq_(165);
+_dereq_(168);
+_dereq_(164);
+_dereq_(160);
+_dereq_(161);
+_dereq_(163);
+_dereq_(166);
+_dereq_(167);
+_dereq_(90);
+_dereq_(92);
+_dereq_(91);
+_dereq_(93);
+_dereq_(86);
+_dereq_(87);
+_dereq_(89);
+_dereq_(88);
+_dereq_(153);
+_dereq_(154);
+_dereq_(155);
+_dereq_(156);
+_dereq_(157);
+_dereq_(158);
+_dereq_(138);
+_dereq_(96);
+_dereq_(159);
+_dereq_(170);
+_dereq_(171);
+_dereq_(139);
+_dereq_(140);
+_dereq_(141);
+_dereq_(142);
+_dereq_(143);
+_dereq_(146);
+_dereq_(144);
+_dereq_(145);
+_dereq_(147);
+_dereq_(148);
+_dereq_(149);
+_dereq_(150);
+_dereq_(152);
+_dereq_(151);
+_dereq_(172);
+_dereq_(179);
+_dereq_(180);
+_dereq_(181);
+_dereq_(182);
+_dereq_(183);
+_dereq_(177);
+_dereq_(175);
+_dereq_(176);
+_dereq_(174);
+_dereq_(173);
+_dereq_(178);
+_dereq_(184);
+_dereq_(187);
+_dereq_(186);
+_dereq_(185);
+module.exports = _dereq_(16);
+},{"100":100,"101":101,"102":102,"103":103,"104":104,"105":105,"106":106,"107":107,"108":108,"109":109,"110":110,"111":111,"112":112,"113":113,"114":114,"115":115,"116":116,"117":117,"118":118,"119":119,"120":120,"121":121,"122":122,"123":123,"124":124,"125":125,"126":126,"127":127,"128":128,"129":129,"130":130,"131":131,"132":132,"133":133,"134":134,"135":135,"136":136,"137":137,"138":138,"139":139,"140":140,"141":141,"142":142,"143":143,"144":144,"145":145,"146":146,"147":147,"148":148,"149":149,"150":150,"151":151,"152":152,"153":153,"154":154,"155":155,"156":156,"157":157,"158":158,"159":159,"16":16,"160":160,"161":161,"162":162,"163":163,"164":164,"165":165,"166":166,"167":167,"168":168,"169":169,"170":170,"171":171,"172":172,"173":173,"174":174,"175":175,"176":176,"177":177,"178":178,"179":179,"180":180,"181":181,"182":182,"183":183,"184":184,"185":185,"186":186,"187":187,"85":85,"86":86,"87":87,"88":88,"89":89,"90":90,"91":91,"92":92,"93":93,"94":94,"95":95,"96":96,"97":97,"98":98,"99":99}],189:[function(_dereq_,module,exports){
+(function (global){
+/**
+ * Copyright (c) 2014, Facebook, Inc.
+ * All rights reserved.
+ *
+ * This source code is licensed under the BSD-style license found in the
+ * https://raw.github.com/facebook/regenerator/master/LICENSE file. An
+ * additional grant of patent rights can be found in the PATENTS file in
+ * the same directory.
+ */
+
+!(function(global) {
+ "use strict";
+
+ var hasOwn = Object.prototype.hasOwnProperty;
+ var undefined; // More compressible than void 0.
+ var iteratorSymbol =
+ typeof Symbol === "function" && Symbol.iterator || "@@iterator";
+
+ var inModule = typeof module === "object";
+ var runtime = global.regeneratorRuntime;
+ if (runtime) {
+ if (inModule) {
+ // If regeneratorRuntime is defined globally and we're in a module,
+ // make the exports object identical to regeneratorRuntime.
+ module.exports = runtime;
+ }
+ // Don't bother evaluating the rest of this file if the runtime was
+ // already defined globally.
+ return;
+ }
+
+ // Define the runtime globally (as expected by generated code) as either
+ // module.exports (if we're in a module) or a new, empty object.
+ runtime = global.regeneratorRuntime = inModule ? module.exports : {};
+
+ function wrap(innerFn, outerFn, self, tryLocsList) {
+ // If outerFn provided, then outerFn.prototype instanceof Generator.
+ var generator = Object.create((outerFn || Generator).prototype);
+ var context = new Context(tryLocsList || []);
+
+ // The ._invoke method unifies the implementations of the .next,
+ // .throw, and .return methods.
+ generator._invoke = makeInvokeMethod(innerFn, self, context);
+
+ return generator;
+ }
+ runtime.wrap = wrap;
+
+ // Try/catch helper to minimize deoptimizations. Returns a completion
+ // record like context.tryEntries[i].completion. This interface could
+ // have been (and was previously) designed to take a closure to be
+ // invoked without arguments, but in all the cases we care about we
+ // already have an existing method we want to call, so there's no need
+ // to create a new function object. We can even get away with assuming
+ // the method takes exactly one argument, since that happens to be true
+ // in every case, so we don't have to touch the arguments object. The
+ // only additional allocation required is the completion record, which
+ // has a stable shape and so hopefully should be cheap to allocate.
+ function tryCatch(fn, obj, arg) {
+ try {
+ return { type: "normal", arg: fn.call(obj, arg) };
+ } catch (err) {
+ return { type: "throw", arg: err };
+ }
+ }
+
+ var GenStateSuspendedStart = "suspendedStart";
+ var GenStateSuspendedYield = "suspendedYield";
+ var GenStateExecuting = "executing";
+ var GenStateCompleted = "completed";
+
+ // Returning this object from the innerFn has the same effect as
+ // breaking out of the dispatch switch statement.
+ var ContinueSentinel = {};
+
+ // Dummy constructor functions that we use as the .constructor and
+ // .constructor.prototype properties for functions that return Generator
+ // objects. For full spec compliance, you may wish to configure your
+ // minifier not to mangle the names of these two functions.
+ function Generator() {}
+ function GeneratorFunction() {}
+ function GeneratorFunctionPrototype() {}
+
+ var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype;
+ GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;
+ GeneratorFunctionPrototype.constructor = GeneratorFunction;
+ GeneratorFunction.displayName = "GeneratorFunction";
+
+ // Helper for defining the .next, .throw, and .return methods of the
+ // Iterator interface in terms of a single ._invoke method.
+ function defineIteratorMethods(prototype) {
+ ["next", "throw", "return"].forEach(function(method) {
+ prototype[method] = function(arg) {
+ return this._invoke(method, arg);
+ };
+ });
+ }
+
+ runtime.isGeneratorFunction = function(genFun) {
+ var ctor = typeof genFun === "function" && genFun.constructor;
+ return ctor
+ ? ctor === GeneratorFunction ||
+ // For the native GeneratorFunction constructor, the best we can
+ // do is to check its .name property.
+ (ctor.displayName || ctor.name) === "GeneratorFunction"
+ : false;
+ };
+
+ runtime.mark = function(genFun) {
+ if (Object.setPrototypeOf) {
+ Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);
+ } else {
+ genFun.__proto__ = GeneratorFunctionPrototype;
+ }
+ genFun.prototype = Object.create(Gp);
+ return genFun;
+ };
+
+ // Within the body of any async function, `await x` is transformed to
+ // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test
+ // `value instanceof AwaitArgument` to determine if the yielded value is
+ // meant to be awaited. Some may consider the name of this method too
+ // cutesy, but they are curmudgeons.
+ runtime.awrap = function(arg) {
+ return new AwaitArgument(arg);
+ };
+
+ function AwaitArgument(arg) {
+ this.arg = arg;
+ }
+
+ function AsyncIterator(generator) {
+ // This invoke function is written in a style that assumes some
+ // calling function (or Promise) will handle exceptions.
+ function invoke(method, arg) {
+ var result = generator[method](arg);
+ var value = result.value;
+ return value instanceof AwaitArgument
+ ? Promise.resolve(value.arg).then(invokeNext, invokeThrow)
+ : Promise.resolve(value).then(function(unwrapped) {
+ // When a yielded Promise is resolved, its final value becomes
+ // the .value of the Promise<{value,done}> result for the
+ // current iteration. If the Promise is rejected, however, the
+ // result for this iteration will be rejected with the same
+ // reason. Note that rejections of yielded Promises are not
+ // thrown back into the generator function, as is the case
+ // when an awaited Promise is rejected. This difference in
+ // behavior between yield and await is important, because it
+ // allows the consumer to decide what to do with the yielded
+ // rejection (swallow it and continue, manually .throw it back
+ // into the generator, abandon iteration, whatever). With
+ // await, by contrast, there is no opportunity to examine the
+ // rejection reason outside the generator function, so the
+ // only option is to throw it from the await expression, and
+ // let the generator function handle the exception.
+ result.value = unwrapped;
+ return result;
+ });
+ }
+
+ if (typeof process === "object" && process.domain) {
+ invoke = process.domain.bind(invoke);
+ }
+
+ var invokeNext = invoke.bind(generator, "next");
+ var invokeThrow = invoke.bind(generator, "throw");
+ var invokeReturn = invoke.bind(generator, "return");
+ var previousPromise;
+
+ function enqueue(method, arg) {
+ function callInvokeWithMethodAndArg() {
+ return invoke(method, arg);
+ }
+
+ return previousPromise =
+ // If enqueue has been called before, then we want to wait until
+ // all previous Promises have been resolved before calling invoke,
+ // so that results are always delivered in the correct order. If
+ // enqueue has not been called before, then it is important to
+ // call invoke immediately, without waiting on a callback to fire,
+ // so that the async generator function has the opportunity to do
+ // any necessary setup in a predictable way. This predictability
+ // is why the Promise constructor synchronously invokes its
+ // executor callback, and why async functions synchronously
+ // execute code before the first await. Since we implement simple
+ // async functions in terms of async generators, it is especially
+ // important to get this right, even though it requires care.
+ previousPromise ? previousPromise.then(
+ callInvokeWithMethodAndArg,
+ // Avoid propagating failures to Promises returned by later
+ // invocations of the iterator.
+ callInvokeWithMethodAndArg
+ ) : new Promise(function (resolve) {
+ resolve(callInvokeWithMethodAndArg());
+ });
+ }
+
+ // Define the unified helper method that is used to implement .next,
+ // .throw, and .return (see defineIteratorMethods).
+ this._invoke = enqueue;
+ }
+
+ defineIteratorMethods(AsyncIterator.prototype);
+
+ // Note that simple async functions are implemented on top of
+ // AsyncIterator objects; they just return a Promise for the value of
+ // the final result produced by the iterator.
+ runtime.async = function(innerFn, outerFn, self, tryLocsList) {
+ var iter = new AsyncIterator(
+ wrap(innerFn, outerFn, self, tryLocsList)
+ );
+
+ return runtime.isGeneratorFunction(outerFn)
+ ? iter // If outerFn is a generator, return the full iterator.
+ : iter.next().then(function(result) {
+ return result.done ? result.value : iter.next();
+ });
+ };
+
+ function makeInvokeMethod(innerFn, self, context) {
+ var state = GenStateSuspendedStart;
+
+ return function invoke(method, arg) {
+ if (state === GenStateExecuting) {
+ throw new Error("Generator is already running");
+ }
+
+ if (state === GenStateCompleted) {
+ if (method === "throw") {
+ throw arg;
+ }
+
+ // Be forgiving, per 25.3.3.3.3 of the spec:
+ // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume
+ return doneResult();
+ }
+
+ while (true) {
+ var delegate = context.delegate;
+ if (delegate) {
+ if (method === "return" ||
+ (method === "throw" && delegate.iterator[method] === undefined)) {
+ // A return or throw (when the delegate iterator has no throw
+ // method) always terminates the yield* loop.
+ context.delegate = null;
+
+ // If the delegate iterator has a return method, give it a
+ // chance to clean up.
+ var returnMethod = delegate.iterator["return"];
+ if (returnMethod) {
+ var record = tryCatch(returnMethod, delegate.iterator, arg);
+ if (record.type === "throw") {
+ // If the return method threw an exception, let that
+ // exception prevail over the original return or throw.
+ method = "throw";
+ arg = record.arg;
+ continue;
+ }
+ }
+
+ if (method === "return") {
+ // Continue with the outer return, now that the delegate
+ // iterator has been terminated.
+ continue;
+ }
+ }
+
+ var record = tryCatch(
+ delegate.iterator[method],
+ delegate.iterator,
+ arg
+ );
+
+ if (record.type === "throw") {
+ context.delegate = null;
+
+ // Like returning generator.throw(uncaught), but without the
+ // overhead of an extra function call.
+ method = "throw";
+ arg = record.arg;
+ continue;
+ }
+
+ // Delegate generator ran and handled its own exceptions so
+ // regardless of what the method was, we continue as if it is
+ // "next" with an undefined arg.
+ method = "next";
+ arg = undefined;
+
+ var info = record.arg;
+ if (info.done) {
+ context[delegate.resultName] = info.value;
+ context.next = delegate.nextLoc;
+ } else {
+ state = GenStateSuspendedYield;
+ return info;
+ }
+
+ context.delegate = null;
+ }
+
+ if (method === "next") {
+ if (state === GenStateSuspendedYield) {
+ context.sent = arg;
+ } else {
+ context.sent = undefined;
+ }
+
+ } else if (method === "throw") {
+ if (state === GenStateSuspendedStart) {
+ state = GenStateCompleted;
+ throw arg;
+ }
+
+ if (context.dispatchException(arg)) {
+ // If the dispatched exception was caught by a catch block,
+ // then let that catch block handle the exception normally.
+ method = "next";
+ arg = undefined;
+ }
+
+ } else if (method === "return") {
+ context.abrupt("return", arg);
+ }
+
+ state = GenStateExecuting;
+
+ var record = tryCatch(innerFn, self, context);
+ if (record.type === "normal") {
+ // If an exception is thrown from innerFn, we leave state ===
+ // GenStateExecuting and loop back for another invocation.
+ state = context.done
+ ? GenStateCompleted
+ : GenStateSuspendedYield;
+
+ var info = {
+ value: record.arg,
+ done: context.done
+ };
+
+ if (record.arg === ContinueSentinel) {
+ if (context.delegate && method === "next") {
+ // Deliberately forget the last sent value so that we don't
+ // accidentally pass it on to the delegate.
+ arg = undefined;
+ }
+ } else {
+ return info;
+ }
+
+ } else if (record.type === "throw") {
+ state = GenStateCompleted;
+ // Dispatch the exception by looping back around to the
+ // context.dispatchException(arg) call above.
+ method = "throw";
+ arg = record.arg;
+ }
+ }
+ };
+ }
+
+ // Define Generator.prototype.{next,throw,return} in terms of the
+ // unified ._invoke helper method.
+ defineIteratorMethods(Gp);
+
+ Gp[iteratorSymbol] = function() {
+ return this;
+ };
+
+ Gp.toString = function() {
+ return "[object Generator]";
+ };
+
+ function pushTryEntry(locs) {
+ var entry = { tryLoc: locs[0] };
+
+ if (1 in locs) {
+ entry.catchLoc = locs[1];
+ }
+
+ if (2 in locs) {
+ entry.finallyLoc = locs[2];
+ entry.afterLoc = locs[3];
+ }
+
+ this.tryEntries.push(entry);
+ }
+
+ function resetTryEntry(entry) {
+ var record = entry.completion || {};
+ record.type = "normal";
+ delete record.arg;
+ entry.completion = record;
+ }
+
+ function Context(tryLocsList) {
+ // The root entry object (effectively a try statement without a catch
+ // or a finally block) gives us a place to store values thrown from
+ // locations where there is no enclosing try statement.
+ this.tryEntries = [{ tryLoc: "root" }];
+ tryLocsList.forEach(pushTryEntry, this);
+ this.reset(true);
+ }
+
+ runtime.keys = function(object) {
+ var keys = [];
+ for (var key in object) {
+ keys.push(key);
+ }
+ keys.reverse();
+
+ // Rather than returning an object with a next method, we keep
+ // things simple and return the next function itself.
+ return function next() {
+ while (keys.length) {
+ var key = keys.pop();
+ if (key in object) {
+ next.value = key;
+ next.done = false;
+ return next;
+ }
+ }
+
+ // To avoid creating an additional object, we just hang the .value
+ // and .done properties off the next function object itself. This
+ // also ensures that the minifier will not anonymize the function.
+ next.done = true;
+ return next;
+ };
+ };
+
+ function values(iterable) {
+ if (iterable) {
+ var iteratorMethod = iterable[iteratorSymbol];
+ if (iteratorMethod) {
+ return iteratorMethod.call(iterable);
+ }
+
+ if (typeof iterable.next === "function") {
+ return iterable;
+ }
+
+ if (!isNaN(iterable.length)) {
+ var i = -1, next = function next() {
+ while (++i < iterable.length) {
+ if (hasOwn.call(iterable, i)) {
+ next.value = iterable[i];
+ next.done = false;
+ return next;
+ }
+ }
+
+ next.value = undefined;
+ next.done = true;
+
+ return next;
+ };
+
+ return next.next = next;
+ }
+ }
+
+ // Return an iterator with no values.
+ return { next: doneResult };
+ }
+ runtime.values = values;
+
+ function doneResult() {
+ return { value: undefined, done: true };
+ }
+
+ Context.prototype = {
+ constructor: Context,
+
+ reset: function(skipTempReset) {
+ this.prev = 0;
+ this.next = 0;
+ this.sent = undefined;
+ this.done = false;
+ this.delegate = null;
+
+ this.tryEntries.forEach(resetTryEntry);
+
+ if (!skipTempReset) {
+ for (var name in this) {
+ // Not sure about the optimal order of these conditions:
+ if (name.charAt(0) === "t" &&
+ hasOwn.call(this, name) &&
+ !isNaN(+name.slice(1))) {
+ this[name] = undefined;
+ }
+ }
+ }
+ },
+
+ stop: function() {
+ this.done = true;
+
+ var rootEntry = this.tryEntries[0];
+ var rootRecord = rootEntry.completion;
+ if (rootRecord.type === "throw") {
+ throw rootRecord.arg;
+ }
+
+ return this.rval;
+ },
+
+ dispatchException: function(exception) {
+ if (this.done) {
+ throw exception;
+ }
+
+ var context = this;
+ function handle(loc, caught) {
+ record.type = "throw";
+ record.arg = exception;
+ context.next = loc;
+ return !!caught;
+ }
+
+ for (var i = this.tryEntries.length - 1; i >= 0; --i) {
+ var entry = this.tryEntries[i];
+ var record = entry.completion;
+
+ if (entry.tryLoc === "root") {
+ // Exception thrown outside of any try block that could handle
+ // it, so set the completion value of the entire function to
+ // throw the exception.
+ return handle("end");
+ }
+
+ if (entry.tryLoc <= this.prev) {
+ var hasCatch = hasOwn.call(entry, "catchLoc");
+ var hasFinally = hasOwn.call(entry, "finallyLoc");
+
+ if (hasCatch && hasFinally) {
+ if (this.prev < entry.catchLoc) {
+ return handle(entry.catchLoc, true);
+ } else if (this.prev < entry.finallyLoc) {
+ return handle(entry.finallyLoc);
+ }
+
+ } else if (hasCatch) {
+ if (this.prev < entry.catchLoc) {
+ return handle(entry.catchLoc, true);
+ }
+
+ } else if (hasFinally) {
+ if (this.prev < entry.finallyLoc) {
+ return handle(entry.finallyLoc);
+ }
+
+ } else {
+ throw new Error("try statement without catch or finally");
+ }
+ }
+ }
+ },
+
+ abrupt: function(type, arg) {
+ for (var i = this.tryEntries.length - 1; i >= 0; --i) {
+ var entry = this.tryEntries[i];
+ if (entry.tryLoc <= this.prev &&
+ hasOwn.call(entry, "finallyLoc") &&
+ this.prev < entry.finallyLoc) {
+ var finallyEntry = entry;
+ break;
+ }
+ }
+
+ if (finallyEntry &&
+ (type === "break" ||
+ type === "continue") &&
+ finallyEntry.tryLoc <= arg &&
+ arg <= finallyEntry.finallyLoc) {
+ // Ignore the finally entry if control is not jumping to a
+ // location outside the try/catch block.
+ finallyEntry = null;
+ }
+
+ var record = finallyEntry ? finallyEntry.completion : {};
+ record.type = type;
+ record.arg = arg;
+
+ if (finallyEntry) {
+ this.next = finallyEntry.finallyLoc;
+ } else {
+ this.complete(record);
+ }
+
+ return ContinueSentinel;
+ },
+
+ complete: function(record, afterLoc) {
+ if (record.type === "throw") {
+ throw record.arg;
+ }
+
+ if (record.type === "break" ||
+ record.type === "continue") {
+ this.next = record.arg;
+ } else if (record.type === "return") {
+ this.rval = record.arg;
+ this.next = "end";
+ } else if (record.type === "normal" && afterLoc) {
+ this.next = afterLoc;
+ }
+ },
+
+ finish: function(finallyLoc) {
+ for (var i = this.tryEntries.length - 1; i >= 0; --i) {
+ var entry = this.tryEntries[i];
+ if (entry.finallyLoc === finallyLoc) {
+ this.complete(entry.completion, entry.afterLoc);
+ resetTryEntry(entry);
+ return ContinueSentinel;
+ }
+ }
+ },
+
+ "catch": function(tryLoc) {
+ for (var i = this.tryEntries.length - 1; i >= 0; --i) {
+ var entry = this.tryEntries[i];
+ if (entry.tryLoc === tryLoc) {
+ var record = entry.completion;
+ if (record.type === "throw") {
+ var thrown = record.arg;
+ resetTryEntry(entry);
+ }
+ return thrown;
+ }
+ }
+
+ // The context.catch method must only be called with a location
+ // argument that corresponds to a known catch block.
+ throw new Error("illegal catch attempt");
+ },
+
+ delegateYield: function(iterable, resultName, nextLoc) {
+ this.delegate = {
+ iterator: values(iterable),
+ resultName: resultName,
+ nextLoc: nextLoc
+ };
+
+ return ContinueSentinel;
+ }
+ };
+})(
+ // Among the various tricks for obtaining a reference to the global
+ // object, this seems to be the most reliable technique that does not
+ // use indirect eval (which violates Content Security Policy).
+ typeof global === "object" ? global :
+ typeof window === "object" ? window :
+ typeof self === "object" ? self : this
+);
+
+}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
+},{}]},{},[1]);
diff --git a/web/static/js/babel-polyfill-6.1.18.min.js b/web/static/js/babel-polyfill-6.1.18.min.js
new file mode 100644
index 000000000..bb9dbd1b0
--- /dev/null
+++ b/web/static/js/babel-polyfill-6.1.18.min.js
@@ -0,0 +1,2 @@
+!function t(n,r,e){function o(u,c){if(!r[u]){if(!n[u]){var a="function"==typeof require&&require;if(!c&&a)return a(u,!0);if(i)return i(u,!0);var s=new Error("Cannot find module '"+u+"'");throw s.code="MODULE_NOT_FOUND",s}var f=r[u]={exports:{}};n[u][0].call(f.exports,function(t){var r=n[u][1][t];return o(r?r:t)},f,f.exports,t,n,r,e)}return r[u].exports}for(var i="function"==typeof require&&require,u=0;u<e.length;u++)o(e[u]);return o}({1:[function(t,n,r){(function(n){"use strict";if(t(188),t(189),n._babelPolyfill)throw new Error("only one instance of babel/polyfill is allowed");n._babelPolyfill=!0}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{188:188,189:189}],2:[function(t,n,r){n.exports=function(t){if("function"!=typeof t)throw TypeError(t+" is not a function!");return t}},{}],3:[function(t,n,r){var e=t(83)("unscopables"),o=Array.prototype;void 0==o[e]&&t(31)(o,e,{}),n.exports=function(t){o[e][t]=!0}},{31:31,83:83}],4:[function(t,n,r){var e=t(38);n.exports=function(t){if(!e(t))throw TypeError(t+" is not an object!");return t}},{38:38}],5:[function(t,n,r){"use strict";var e=t(80),o=t(76),i=t(79);n.exports=[].copyWithin||function(t,n){var r=e(this),u=i(r.length),c=o(t,u),a=o(n,u),s=arguments,f=s.length>2?s[2]:void 0,l=Math.min((void 0===f?u:o(f,u))-a,u-c),h=1;for(c>a&&a+l>c&&(h=-1,a+=l-1,c+=l-1);l-->0;)a in r?r[c]=r[a]:delete r[c],c+=h,a+=h;return r}},{76:76,79:79,80:80}],6:[function(t,n,r){"use strict";var e=t(80),o=t(76),i=t(79);n.exports=[].fill||function(t){for(var n=e(this),r=i(n.length),u=arguments,c=u.length,a=o(c>1?u[1]:void 0,r),s=c>2?u[2]:void 0,f=void 0===s?r:o(s,r);f>a;)n[a++]=t;return n}},{76:76,79:79,80:80}],7:[function(t,n,r){var e=t(78),o=t(79),i=t(76);n.exports=function(t){return function(n,r,u){var c,a=e(n),s=o(a.length),f=i(u,s);if(t&&r!=r){for(;s>f;)if(c=a[f++],c!=c)return!0}else for(;s>f;f++)if((t||f in a)&&a[f]===r)return t||f;return!t&&-1}}},{76:76,78:78,79:79}],8:[function(t,n,r){var e=t(17),o=t(34),i=t(80),u=t(79),c=t(9);n.exports=function(t){var n=1==t,r=2==t,a=3==t,s=4==t,f=6==t,l=5==t||f;return function(h,p,v){for(var g,y,d=i(h),m=o(d),S=e(p,v,3),b=u(m.length),w=0,x=n?c(h,b):r?c(h,0):void 0;b>w;w++)if((l||w in m)&&(g=m[w],y=S(g,w,d),t))if(n)x[w]=y;else if(y)switch(t){case 3:return!0;case 5:return g;case 6:return w;case 2:x.push(g)}else if(s)return!1;return f?-1:a||s?s:x}}},{17:17,34:34,79:79,80:80,9:9}],9:[function(t,n,r){var e=t(38),o=t(36),i=t(83)("species");n.exports=function(t,n){var r;return o(t)&&(r=t.constructor,"function"!=typeof r||r!==Array&&!o(r.prototype)||(r=void 0),e(r)&&(r=r[i],null===r&&(r=void 0))),new(void 0===r?Array:r)(n)}},{36:36,38:38,83:83}],10:[function(t,n,r){var e=t(11),o=t(83)("toStringTag"),i="Arguments"==e(function(){return arguments}());n.exports=function(t){var n,r,u;return void 0===t?"Undefined":null===t?"Null":"string"==typeof(r=(n=Object(t))[o])?r:i?e(n):"Object"==(u=e(n))&&"function"==typeof n.callee?"Arguments":u}},{11:11,83:83}],11:[function(t,n,r){var e={}.toString;n.exports=function(t){return e.call(t).slice(8,-1)}},{}],12:[function(t,n,r){"use strict";var e=t(46),o=t(31),i=t(60),u=t(17),c=t(69),a=t(18),s=t(27),f=t(42),l=t(44),h=t(82)("id"),p=t(30),v=t(38),g=t(65),y=t(19),d=Object.isExtensible||v,m=y?"_s":"size",S=0,b=function(t,n){if(!v(t))return"symbol"==typeof t?t:("string"==typeof t?"S":"P")+t;if(!p(t,h)){if(!d(t))return"F";if(!n)return"E";o(t,h,++S)}return"O"+t[h]},w=function(t,n){var r,e=b(n);if("F"!==e)return t._i[e];for(r=t._f;r;r=r.n)if(r.k==n)return r};n.exports={getConstructor:function(t,n,r,o){var f=t(function(t,i){c(t,f,n),t._i=e.create(null),t._f=void 0,t._l=void 0,t[m]=0,void 0!=i&&s(i,r,t[o],t)});return i(f.prototype,{clear:function(){for(var t=this,n=t._i,r=t._f;r;r=r.n)r.r=!0,r.p&&(r.p=r.p.n=void 0),delete n[r.i];t._f=t._l=void 0,t[m]=0},"delete":function(t){var n=this,r=w(n,t);if(r){var e=r.n,o=r.p;delete n._i[r.i],r.r=!0,o&&(o.n=e),e&&(e.p=o),n._f==r&&(n._f=e),n._l==r&&(n._l=o),n[m]--}return!!r},forEach:function(t){for(var n,r=u(t,arguments.length>1?arguments[1]:void 0,3);n=n?n.n:this._f;)for(r(n.v,n.k,this);n&&n.r;)n=n.p},has:function(t){return!!w(this,t)}}),y&&e.setDesc(f.prototype,"size",{get:function(){return a(this[m])}}),f},def:function(t,n,r){var e,o,i=w(t,n);return i?i.v=r:(t._l=i={i:o=b(n,!0),k:n,v:r,p:e=t._l,n:void 0,r:!1},t._f||(t._f=i),e&&(e.n=i),t[m]++,"F"!==o&&(t._i[o]=i)),t},getEntry:w,setStrong:function(t,n,r){f(t,n,function(t,n){this._t=t,this._k=n,this._l=void 0},function(){for(var t=this,n=t._k,r=t._l;r&&r.r;)r=r.p;return t._t&&(t._l=r=r?r.n:t._t._f)?"keys"==n?l(0,r.k):"values"==n?l(0,r.v):l(0,[r.k,r.v]):(t._t=void 0,l(1))},r?"entries":"values",!r,!0),g(n)}}},{17:17,18:18,19:19,27:27,30:30,31:31,38:38,42:42,44:44,46:46,60:60,65:65,69:69,82:82}],13:[function(t,n,r){var e=t(27),o=t(10);n.exports=function(t){return function(){if(o(this)!=t)throw TypeError(t+"#toJSON isn't generic");var n=[];return e(this,!1,n.push,n),n}}},{10:10,27:27}],14:[function(t,n,r){"use strict";var e=t(31),o=t(60),i=t(4),u=t(38),c=t(69),a=t(27),s=t(8),f=t(30),l=t(82)("weak"),h=Object.isExtensible||u,p=s(5),v=s(6),g=0,y=function(t){return t._l||(t._l=new d)},d=function(){this.a=[]},m=function(t,n){return p(t.a,function(t){return t[0]===n})};d.prototype={get:function(t){var n=m(this,t);return n?n[1]:void 0},has:function(t){return!!m(this,t)},set:function(t,n){var r=m(this,t);r?r[1]=n:this.a.push([t,n])},"delete":function(t){var n=v(this.a,function(n){return n[0]===t});return~n&&this.a.splice(n,1),!!~n}},n.exports={getConstructor:function(t,n,r,e){var i=t(function(t,o){c(t,i,n),t._i=g++,t._l=void 0,void 0!=o&&a(o,r,t[e],t)});return o(i.prototype,{"delete":function(t){return u(t)?h(t)?f(t,l)&&f(t[l],this._i)&&delete t[l][this._i]:y(this)["delete"](t):!1},has:function(t){return u(t)?h(t)?f(t,l)&&f(t[l],this._i):y(this).has(t):!1}}),i},def:function(t,n,r){return h(i(n))?(f(n,l)||e(n,l,{}),n[l][t._i]=r):y(t).set(n,r),t},frozenStore:y,WEAK:l}},{27:27,30:30,31:31,38:38,4:4,60:60,69:69,8:8,82:82}],15:[function(t,n,r){"use strict";var e=t(29),o=t(22),i=t(61),u=t(60),c=t(27),a=t(69),s=t(38),f=t(24),l=t(43),h=t(66);n.exports=function(t,n,r,p,v,g){var y=e[t],d=y,m=v?"set":"add",S=d&&d.prototype,b={},w=function(t){var n=S[t];i(S,t,"delete"==t?function(t){return g&&!s(t)?!1:n.call(this,0===t?0:t)}:"has"==t?function(t){return g&&!s(t)?!1:n.call(this,0===t?0:t)}:"get"==t?function(t){return g&&!s(t)?void 0:n.call(this,0===t?0:t)}:"add"==t?function(t){return n.call(this,0===t?0:t),this}:function(t,r){return n.call(this,0===t?0:t,r),this})};if("function"==typeof d&&(g||S.forEach&&!f(function(){(new d).entries().next()}))){var x,_=new d,E=_[m](g?{}:-0,1)!=_,O=f(function(){_.has(1)}),M=l(function(t){new d(t)});M||(d=n(function(n,r){a(n,d,t);var e=new y;return void 0!=r&&c(r,v,e[m],e),e}),d.prototype=S,S.constructor=d),g||_.forEach(function(t,n){x=1/n===-(1/0)}),(O||x)&&(w("delete"),w("has"),v&&w("get")),(x||E)&&w(m),g&&S.clear&&delete S.clear}else d=p.getConstructor(n,t,v,m),u(d.prototype,r);return h(d,t),b[t]=d,o(o.G+o.W+o.F*(d!=y),b),g||p.setStrong(d,t,v),d}},{22:22,24:24,27:27,29:29,38:38,43:43,60:60,61:61,66:66,69:69}],16:[function(t,n,r){var e=n.exports={version:"1.2.6"};"number"==typeof __e&&(__e=e)},{}],17:[function(t,n,r){var e=t(2);n.exports=function(t,n,r){if(e(t),void 0===n)return t;switch(r){case 1:return function(r){return t.call(n,r)};case 2:return function(r,e){return t.call(n,r,e)};case 3:return function(r,e,o){return t.call(n,r,e,o)}}return function(){return t.apply(n,arguments)}}},{2:2}],18:[function(t,n,r){n.exports=function(t){if(void 0==t)throw TypeError("Can't call method on "+t);return t}},{}],19:[function(t,n,r){n.exports=!t(24)(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})},{24:24}],20:[function(t,n,r){var e=t(38),o=t(29).document,i=e(o)&&e(o.createElement);n.exports=function(t){return i?o.createElement(t):{}}},{29:29,38:38}],21:[function(t,n,r){var e=t(46);n.exports=function(t){var n=e.getKeys(t),r=e.getSymbols;if(r)for(var o,i=r(t),u=e.isEnum,c=0;i.length>c;)u.call(t,o=i[c++])&&n.push(o);return n}},{46:46}],22:[function(t,n,r){var e=t(29),o=t(16),i=t(31),u=t(61),c=t(17),a="prototype",s=function(t,n,r){var f,l,h,p,v=t&s.F,g=t&s.G,y=t&s.S,d=t&s.P,m=t&s.B,S=g?e:y?e[n]||(e[n]={}):(e[n]||{})[a],b=g?o:o[n]||(o[n]={}),w=b[a]||(b[a]={});g&&(r=n);for(f in r)l=!v&&S&&f in S,h=(l?S:r)[f],p=m&&l?c(h,e):d&&"function"==typeof h?c(Function.call,h):h,S&&!l&&u(S,f,h),b[f]!=h&&i(b,f,p),d&&w[f]!=h&&(w[f]=h)};e.core=o,s.F=1,s.G=2,s.S=4,s.P=8,s.B=16,s.W=32,n.exports=s},{16:16,17:17,29:29,31:31,61:61}],23:[function(t,n,r){var e=t(83)("match");n.exports=function(t){var n=/./;try{"/./"[t](n)}catch(r){try{return n[e]=!1,!"/./"[t](n)}catch(o){}}return!0}},{83:83}],24:[function(t,n,r){n.exports=function(t){try{return!!t()}catch(n){return!0}}},{}],25:[function(t,n,r){"use strict";var e=t(31),o=t(61),i=t(24),u=t(18),c=t(83);n.exports=function(t,n,r){var a=c(t),s=""[t];i(function(){var n={};return n[a]=function(){return 7},7!=""[t](n)})&&(o(String.prototype,t,r(u,a,s)),e(RegExp.prototype,a,2==n?function(t,n){return s.call(t,this,n)}:function(t){return s.call(t,this)}))}},{18:18,24:24,31:31,61:61,83:83}],26:[function(t,n,r){"use strict";var e=t(4);n.exports=function(){var t=e(this),n="";return t.global&&(n+="g"),t.ignoreCase&&(n+="i"),t.multiline&&(n+="m"),t.unicode&&(n+="u"),t.sticky&&(n+="y"),n}},{4:4}],27:[function(t,n,r){var e=t(17),o=t(40),i=t(35),u=t(4),c=t(79),a=t(84);n.exports=function(t,n,r,s){var f,l,h,p=a(t),v=e(r,s,n?2:1),g=0;if("function"!=typeof p)throw TypeError(t+" is not iterable!");if(i(p))for(f=c(t.length);f>g;g++)n?v(u(l=t[g])[0],l[1]):v(t[g]);else for(h=p.call(t);!(l=h.next()).done;)o(h,v,l.value,n)}},{17:17,35:35,4:4,40:40,79:79,84:84}],28:[function(t,n,r){var e=t(78),o=t(46).getNames,i={}.toString,u="object"==typeof window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[],c=function(t){try{return o(t)}catch(n){return u.slice()}};n.exports.get=function(t){return u&&"[object Window]"==i.call(t)?c(t):o(e(t))}},{46:46,78:78}],29:[function(t,n,r){var e=n.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=e)},{}],30:[function(t,n,r){var e={}.hasOwnProperty;n.exports=function(t,n){return e.call(t,n)}},{}],31:[function(t,n,r){var e=t(46),o=t(59);n.exports=t(19)?function(t,n,r){return e.setDesc(t,n,o(1,r))}:function(t,n,r){return t[n]=r,t}},{19:19,46:46,59:59}],32:[function(t,n,r){n.exports=t(29).document&&document.documentElement},{29:29}],33:[function(t,n,r){n.exports=function(t,n,r){var e=void 0===r;switch(n.length){case 0:return e?t():t.call(r);case 1:return e?t(n[0]):t.call(r,n[0]);case 2:return e?t(n[0],n[1]):t.call(r,n[0],n[1]);case 3:return e?t(n[0],n[1],n[2]):t.call(r,n[0],n[1],n[2]);case 4:return e?t(n[0],n[1],n[2],n[3]):t.call(r,n[0],n[1],n[2],n[3])}return t.apply(r,n)}},{}],34:[function(t,n,r){var e=t(11);n.exports=Object("z").propertyIsEnumerable(0)?Object:function(t){return"String"==e(t)?t.split(""):Object(t)}},{11:11}],35:[function(t,n,r){var e=t(45),o=t(83)("iterator"),i=Array.prototype;n.exports=function(t){return void 0!==t&&(e.Array===t||i[o]===t)}},{45:45,83:83}],36:[function(t,n,r){var e=t(11);n.exports=Array.isArray||function(t){return"Array"==e(t)}},{11:11}],37:[function(t,n,r){var e=t(38),o=Math.floor;n.exports=function(t){return!e(t)&&isFinite(t)&&o(t)===t}},{38:38}],38:[function(t,n,r){n.exports=function(t){return"object"==typeof t?null!==t:"function"==typeof t}},{}],39:[function(t,n,r){var e=t(38),o=t(11),i=t(83)("match");n.exports=function(t){var n;return e(t)&&(void 0!==(n=t[i])?!!n:"RegExp"==o(t))}},{11:11,38:38,83:83}],40:[function(t,n,r){var e=t(4);n.exports=function(t,n,r,o){try{return o?n(e(r)[0],r[1]):n(r)}catch(i){var u=t["return"];throw void 0!==u&&e(u.call(t)),i}}},{4:4}],41:[function(t,n,r){"use strict";var e=t(46),o=t(59),i=t(66),u={};t(31)(u,t(83)("iterator"),function(){return this}),n.exports=function(t,n,r){t.prototype=e.create(u,{next:o(1,r)}),i(t,n+" Iterator")}},{31:31,46:46,59:59,66:66,83:83}],42:[function(t,n,r){"use strict";var e=t(48),o=t(22),i=t(61),u=t(31),c=t(30),a=t(45),s=t(41),f=t(66),l=t(46).getProto,h=t(83)("iterator"),p=!([].keys&&"next"in[].keys()),v="@@iterator",g="keys",y="values",d=function(){return this};n.exports=function(t,n,r,m,S,b,w){s(r,n,m);var x,_,E=function(t){if(!p&&t in j)return j[t];switch(t){case g:return function(){return new r(this,t)};case y:return function(){return new r(this,t)}}return function(){return new r(this,t)}},O=n+" Iterator",M=S==y,P=!1,j=t.prototype,N=j[h]||j[v]||S&&j[S],F=N||E(S);if(N){var A=l(F.call(new t));f(A,O,!0),!e&&c(j,v)&&u(A,h,d),M&&N.name!==y&&(P=!0,F=function(){return N.call(this)})}if(e&&!w||!p&&!P&&j[h]||u(j,h,F),a[n]=F,a[O]=d,S)if(x={values:M?F:E(y),keys:b?F:E(g),entries:M?E("entries"):F},w)for(_ in x)_ in j||i(j,_,x[_]);else o(o.P+o.F*(p||P),n,x);return x}},{22:22,30:30,31:31,41:41,45:45,46:46,48:48,61:61,66:66,83:83}],43:[function(t,n,r){var e=t(83)("iterator"),o=!1;try{var i=[7][e]();i["return"]=function(){o=!0},Array.from(i,function(){throw 2})}catch(u){}n.exports=function(t,n){if(!n&&!o)return!1;var r=!1;try{var i=[7],u=i[e]();u.next=function(){r=!0},i[e]=function(){return u},t(i)}catch(c){}return r}},{83:83}],44:[function(t,n,r){n.exports=function(t,n){return{value:n,done:!!t}}},{}],45:[function(t,n,r){n.exports={}},{}],46:[function(t,n,r){var e=Object;n.exports={create:e.create,getProto:e.getPrototypeOf,isEnum:{}.propertyIsEnumerable,getDesc:e.getOwnPropertyDescriptor,setDesc:e.defineProperty,setDescs:e.defineProperties,getKeys:e.keys,getNames:e.getOwnPropertyNames,getSymbols:e.getOwnPropertySymbols,each:[].forEach}},{}],47:[function(t,n,r){var e=t(46),o=t(78);n.exports=function(t,n){for(var r,i=o(t),u=e.getKeys(i),c=u.length,a=0;c>a;)if(i[r=u[a++]]===n)return r}},{46:46,78:78}],48:[function(t,n,r){n.exports=!1},{}],49:[function(t,n,r){n.exports=Math.expm1||function(t){return 0==(t=+t)?t:t>-1e-6&&1e-6>t?t+t*t/2:Math.exp(t)-1}},{}],50:[function(t,n,r){n.exports=Math.log1p||function(t){return(t=+t)>-1e-8&&1e-8>t?t-t*t/2:Math.log(1+t)}},{}],51:[function(t,n,r){n.exports=Math.sign||function(t){return 0==(t=+t)||t!=t?t:0>t?-1:1}},{}],52:[function(t,n,r){var e,o,i,u=t(29),c=t(75).set,a=u.MutationObserver||u.WebKitMutationObserver,s=u.process,f=u.Promise,l="process"==t(11)(s),h=function(){var t,n,r;for(l&&(t=s.domain)&&(s.domain=null,t.exit());e;)n=e.domain,r=e.fn,n&&n.enter(),r(),n&&n.exit(),e=e.next;o=void 0,t&&t.enter()};if(l)i=function(){s.nextTick(h)};else if(a){var p=1,v=document.createTextNode("");new a(h).observe(v,{characterData:!0}),i=function(){v.data=p=-p}}else i=f&&f.resolve?function(){f.resolve().then(h)}:function(){c.call(u,h)};n.exports=function(t){var n={fn:t,next:void 0,domain:l&&s.domain};o&&(o.next=n),e||(e=n,i()),o=n}},{11:11,29:29,75:75}],53:[function(t,n,r){var e=t(46),o=t(80),i=t(34);n.exports=t(24)(function(){var t=Object.assign,n={},r={},e=Symbol(),o="abcdefghijklmnopqrst";return n[e]=7,o.split("").forEach(function(t){r[t]=t}),7!=t({},n)[e]||Object.keys(t({},r)).join("")!=o})?function(t,n){for(var r=o(t),u=arguments,c=u.length,a=1,s=e.getKeys,f=e.getSymbols,l=e.isEnum;c>a;)for(var h,p=i(u[a++]),v=f?s(p).concat(f(p)):s(p),g=v.length,y=0;g>y;)l.call(p,h=v[y++])&&(r[h]=p[h]);return r}:Object.assign},{24:24,34:34,46:46,80:80}],54:[function(t,n,r){var e=t(22),o=t(16),i=t(24);n.exports=function(t,n){var r=(o.Object||{})[t]||Object[t],u={};u[t]=n(r),e(e.S+e.F*i(function(){r(1)}),"Object",u)}},{16:16,22:22,24:24}],55:[function(t,n,r){var e=t(46),o=t(78),i=e.isEnum;n.exports=function(t){return function(n){for(var r,u=o(n),c=e.getKeys(u),a=c.length,s=0,f=[];a>s;)i.call(u,r=c[s++])&&f.push(t?[r,u[r]]:u[r]);return f}}},{46:46,78:78}],56:[function(t,n,r){var e=t(46),o=t(4),i=t(29).Reflect;n.exports=i&&i.ownKeys||function(t){var n=e.getNames(o(t)),r=e.getSymbols;return r?n.concat(r(t)):n}},{29:29,4:4,46:46}],57:[function(t,n,r){"use strict";var e=t(58),o=t(33),i=t(2);n.exports=function(){for(var t=i(this),n=arguments.length,r=Array(n),u=0,c=e._,a=!1;n>u;)(r[u]=arguments[u++])===c&&(a=!0);return function(){var e,i=this,u=arguments,s=u.length,f=0,l=0;if(!a&&!s)return o(t,r,i);if(e=r.slice(),a)for(;n>f;f++)e[f]===c&&(e[f]=u[l++]);for(;s>l;)e.push(u[l++]);return o(t,e,i)}}},{2:2,33:33,58:58}],58:[function(t,n,r){n.exports=t(29)},{29:29}],59:[function(t,n,r){n.exports=function(t,n){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:n}}},{}],60:[function(t,n,r){var e=t(61);n.exports=function(t,n){for(var r in n)e(t,r,n[r]);return t}},{61:61}],61:[function(t,n,r){var e=t(29),o=t(31),i=t(82)("src"),u="toString",c=Function[u],a=(""+c).split(u);t(16).inspectSource=function(t){return c.call(t)},(n.exports=function(t,n,r,u){"function"==typeof r&&(r.hasOwnProperty(i)||o(r,i,t[n]?""+t[n]:a.join(String(n))),r.hasOwnProperty("name")||o(r,"name",n)),t===e?t[n]=r:(u||delete t[n],o(t,n,r))})(Function.prototype,u,function(){return"function"==typeof this&&this[i]||c.call(this)})},{16:16,29:29,31:31,82:82}],62:[function(t,n,r){n.exports=function(t,n){var r=n===Object(n)?function(t){return n[t]}:n;return function(n){return String(n).replace(t,r)}}},{}],63:[function(t,n,r){n.exports=Object.is||function(t,n){return t===n?0!==t||1/t===1/n:t!=t&&n!=n}},{}],64:[function(t,n,r){var e=t(46).getDesc,o=t(38),i=t(4),u=function(t,n){if(i(t),!o(n)&&null!==n)throw TypeError(n+": can't set as prototype!")};n.exports={set:Object.setPrototypeOf||("__proto__"in{}?function(n,r,o){try{o=t(17)(Function.call,e(Object.prototype,"__proto__").set,2),o(n,[]),r=!(n instanceof Array)}catch(i){r=!0}return function(t,n){return u(t,n),r?t.__proto__=n:o(t,n),t}}({},!1):void 0),check:u}},{17:17,38:38,4:4,46:46}],65:[function(t,n,r){"use strict";var e=t(29),o=t(46),i=t(19),u=t(83)("species");n.exports=function(t){var n=e[t];i&&n&&!n[u]&&o.setDesc(n,u,{configurable:!0,get:function(){return this}})}},{19:19,29:29,46:46,83:83}],66:[function(t,n,r){var e=t(46).setDesc,o=t(30),i=t(83)("toStringTag");n.exports=function(t,n,r){t&&!o(t=r?t:t.prototype,i)&&e(t,i,{configurable:!0,value:n})}},{30:30,46:46,83:83}],67:[function(t,n,r){var e=t(29),o="__core-js_shared__",i=e[o]||(e[o]={});n.exports=function(t){return i[t]||(i[t]={})}},{29:29}],68:[function(t,n,r){var e=t(4),o=t(2),i=t(83)("species");n.exports=function(t,n){var r,u=e(t).constructor;return void 0===u||void 0==(r=e(u)[i])?n:o(r)}},{2:2,4:4,83:83}],69:[function(t,n,r){n.exports=function(t,n,r){if(!(t instanceof n))throw TypeError(r+": use the 'new' operator!");return t}},{}],70:[function(t,n,r){var e=t(77),o=t(18);n.exports=function(t){return function(n,r){var i,u,c=String(o(n)),a=e(r),s=c.length;return 0>a||a>=s?t?"":void 0:(i=c.charCodeAt(a),55296>i||i>56319||a+1===s||(u=c.charCodeAt(a+1))<56320||u>57343?t?c.charAt(a):i:t?c.slice(a,a+2):(i-55296<<10)+(u-56320)+65536)}}},{18:18,77:77}],71:[function(t,n,r){var e=t(39),o=t(18);n.exports=function(t,n,r){if(e(n))throw TypeError("String#"+r+" doesn't accept regex!");return String(o(t))}},{18:18,39:39}],72:[function(t,n,r){var e=t(79),o=t(73),i=t(18);n.exports=function(t,n,r,u){var c=String(i(t)),a=c.length,s=void 0===r?" ":String(r),f=e(n);if(a>=f)return c;""==s&&(s=" ");var l=f-a,h=o.call(s,Math.ceil(l/s.length));return h.length>l&&(h=h.slice(0,l)),u?h+c:c+h}},{18:18,73:73,79:79}],73:[function(t,n,r){"use strict";var e=t(77),o=t(18);n.exports=function(t){var n=String(o(this)),r="",i=e(t);if(0>i||i==1/0)throw RangeError("Count can't be negative");for(;i>0;(i>>>=1)&&(n+=n))1&i&&(r+=n);return r}},{18:18,77:77}],74:[function(t,n,r){var e=t(22),o=t(18),i=t(24),u=" \n \f\r   ᠎              \u2028\u2029\ufeff",c="["+u+"]",a="​…",s=RegExp("^"+c+c+"*"),f=RegExp(c+c+"*$"),l=function(t,n){var r={};r[t]=n(h),e(e.P+e.F*i(function(){return!!u[t]()||a[t]()!=a}),"String",r)},h=l.trim=function(t,n){return t=String(o(t)),1&n&&(t=t.replace(s,"")),2&n&&(t=t.replace(f,"")),t};n.exports=l},{18:18,22:22,24:24}],75:[function(t,n,r){var e,o,i,u=t(17),c=t(33),a=t(32),s=t(20),f=t(29),l=f.process,h=f.setImmediate,p=f.clearImmediate,v=f.MessageChannel,g=0,y={},d="onreadystatechange",m=function(){var t=+this;if(y.hasOwnProperty(t)){var n=y[t];delete y[t],n()}},S=function(t){m.call(t.data)};h&&p||(h=function(t){for(var n=[],r=1;arguments.length>r;)n.push(arguments[r++]);return y[++g]=function(){c("function"==typeof t?t:Function(t),n)},e(g),g},p=function(t){delete y[t]},"process"==t(11)(l)?e=function(t){l.nextTick(u(m,t,1))}:v?(o=new v,i=o.port2,o.port1.onmessage=S,e=u(i.postMessage,i,1)):f.addEventListener&&"function"==typeof postMessage&&!f.importScripts?(e=function(t){f.postMessage(t+"","*")},f.addEventListener("message",S,!1)):e=d in s("script")?function(t){a.appendChild(s("script"))[d]=function(){a.removeChild(this),m.call(t)}}:function(t){setTimeout(u(m,t,1),0)}),n.exports={set:h,clear:p}},{11:11,17:17,20:20,29:29,32:32,33:33}],76:[function(t,n,r){var e=t(77),o=Math.max,i=Math.min;n.exports=function(t,n){return t=e(t),0>t?o(t+n,0):i(t,n)}},{77:77}],77:[function(t,n,r){var e=Math.ceil,o=Math.floor;n.exports=function(t){return isNaN(t=+t)?0:(t>0?o:e)(t)}},{}],78:[function(t,n,r){var e=t(34),o=t(18);n.exports=function(t){return e(o(t))}},{18:18,34:34}],79:[function(t,n,r){var e=t(77),o=Math.min;n.exports=function(t){return t>0?o(e(t),9007199254740991):0}},{77:77}],80:[function(t,n,r){var e=t(18);n.exports=function(t){return Object(e(t))}},{18:18}],81:[function(t,n,r){var e=t(38);n.exports=function(t,n){if(!e(t))return t;var r,o;if(n&&"function"==typeof(r=t.toString)&&!e(o=r.call(t)))return o;if("function"==typeof(r=t.valueOf)&&!e(o=r.call(t)))return o;if(!n&&"function"==typeof(r=t.toString)&&!e(o=r.call(t)))return o;throw TypeError("Can't convert object to primitive value")}},{38:38}],82:[function(t,n,r){var e=0,o=Math.random();n.exports=function(t){return"Symbol(".concat(void 0===t?"":t,")_",(++e+o).toString(36))}},{}],83:[function(t,n,r){var e=t(67)("wks"),o=t(82),i=t(29).Symbol;n.exports=function(t){return e[t]||(e[t]=i&&i[t]||(i||o)("Symbol."+t))}},{29:29,67:67,82:82}],84:[function(t,n,r){var e=t(10),o=t(83)("iterator"),i=t(45);n.exports=t(16).getIteratorMethod=function(t){return void 0!=t?t[o]||t["@@iterator"]||i[e(t)]:void 0}},{10:10,16:16,45:45,83:83}],85:[function(t,n,r){"use strict";var e,o=t(46),i=t(22),u=t(19),c=t(59),a=t(32),s=t(20),f=t(30),l=t(11),h=t(33),p=t(24),v=t(4),g=t(2),y=t(38),d=t(80),m=t(78),S=t(77),b=t(76),w=t(79),x=t(34),_=t(82)("__proto__"),E=t(8),O=t(7)(!1),M=Object.prototype,P=Array.prototype,j=P.slice,N=P.join,F=o.setDesc,A=o.getDesc,D=o.setDescs,I={};u||(e=!p(function(){return 7!=F(s("div"),"a",{get:function(){return 7}}).a}),o.setDesc=function(t,n,r){if(e)try{return F(t,n,r)}catch(o){}if("get"in r||"set"in r)throw TypeError("Accessors not supported!");return"value"in r&&(v(t)[n]=r.value),t},o.getDesc=function(t,n){if(e)try{return A(t,n)}catch(r){}return f(t,n)?c(!M.propertyIsEnumerable.call(t,n),t[n]):void 0},o.setDescs=D=function(t,n){v(t);for(var r,e=o.getKeys(n),i=e.length,u=0;i>u;)o.setDesc(t,r=e[u++],n[r]);return t}),i(i.S+i.F*!u,"Object",{getOwnPropertyDescriptor:o.getDesc,defineProperty:o.setDesc,defineProperties:D});var k="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(","),L=k.concat("length","prototype"),T=k.length,R=function(){var t,n=s("iframe"),r=T,e=">";for(n.style.display="none",a.appendChild(n),n.src="javascript:",t=n.contentWindow.document,t.open(),t.write("<script>document.F=Object</script"+e),t.close(),R=t.F;r--;)delete R.prototype[k[r]];return R()},C=function(t,n){return function(r){var e,o=m(r),i=0,u=[];for(e in o)e!=_&&f(o,e)&&u.push(e);for(;n>i;)f(o,e=t[i++])&&(~O(u,e)||u.push(e));return u}},G=function(){};i(i.S,"Object",{getPrototypeOf:o.getProto=o.getProto||function(t){return t=d(t),f(t,_)?t[_]:"function"==typeof t.constructor&&t instanceof t.constructor?t.constructor.prototype:t instanceof Object?M:null},getOwnPropertyNames:o.getNames=o.getNames||C(L,L.length,!0),create:o.create=o.create||function(t,n){var r;return null!==t?(G.prototype=v(t),r=new G,G.prototype=null,r[_]=t):r=R(),void 0===n?r:D(r,n)},keys:o.getKeys=o.getKeys||C(k,T,!1)});var W=function(t,n,r){if(!(n in I)){for(var e=[],o=0;n>o;o++)e[o]="a["+o+"]";I[n]=Function("F,a","return new F("+e.join(",")+")")}return I[n](t,r)};i(i.P,"Function",{bind:function(t){var n=g(this),r=j.call(arguments,1),e=function(){var o=r.concat(j.call(arguments));return this instanceof e?W(n,o.length,o):h(n,o,t)};return y(n.prototype)&&(e.prototype=n.prototype),e}}),i(i.P+i.F*p(function(){a&&j.call(a)}),"Array",{slice:function(t,n){var r=w(this.length),e=l(this);if(n=void 0===n?r:n,"Array"==e)return j.call(this,t,n);for(var o=b(t,r),i=b(n,r),u=w(i-o),c=Array(u),a=0;u>a;a++)c[a]="String"==e?this.charAt(o+a):this[o+a];return c}}),i(i.P+i.F*(x!=Object),"Array",{join:function(t){return N.call(x(this),void 0===t?",":t)}}),i(i.S,"Array",{isArray:t(36)});var U=function(t){return function(n,r){g(n);var e=x(this),o=w(e.length),i=t?o-1:0,u=t?-1:1;if(arguments.length<2)for(;;){if(i in e){r=e[i],i+=u;break}if(i+=u,t?0>i:i>=o)throw TypeError("Reduce of empty array with no initial value")}for(;t?i>=0:o>i;i+=u)i in e&&(r=n(r,e[i],i,this));return r}},K=function(t){return function(n){return t(this,n,arguments[1])}};i(i.P,"Array",{forEach:o.each=o.each||K(E(0)),map:K(E(1)),filter:K(E(2)),some:K(E(3)),every:K(E(4)),reduce:U(!1),reduceRight:U(!0),indexOf:K(O),lastIndexOf:function(t,n){var r=m(this),e=w(r.length),o=e-1;for(arguments.length>1&&(o=Math.min(o,S(n))),0>o&&(o=w(e+o));o>=0;o--)if(o in r&&r[o]===t)return o;return-1}}),i(i.S,"Date",{now:function(){return+new Date}});var z=function(t){return t>9?t:"0"+t};i(i.P+i.F*(p(function(){return"0385-07-25T07:06:39.999Z"!=new Date(-5e13-1).toISOString()})||!p(function(){new Date(NaN).toISOString()})),"Date",{toISOString:function(){if(!isFinite(this))throw RangeError("Invalid time value");var t=this,n=t.getUTCFullYear(),r=t.getUTCMilliseconds(),e=0>n?"-":n>9999?"+":"";return e+("00000"+Math.abs(n)).slice(e?-6:-4)+"-"+z(t.getUTCMonth()+1)+"-"+z(t.getUTCDate())+"T"+z(t.getUTCHours())+":"+z(t.getUTCMinutes())+":"+z(t.getUTCSeconds())+"."+(r>99?r:"0"+z(r))+"Z"}})},{11:11,19:19,2:2,20:20,22:22,24:24,30:30,32:32,33:33,34:34,36:36,38:38,4:4,46:46,59:59,7:7,76:76,77:77,78:78,79:79,8:8,80:80,82:82}],86:[function(t,n,r){var e=t(22);e(e.P,"Array",{copyWithin:t(5)}),t(3)("copyWithin")},{22:22,3:3,5:5}],87:[function(t,n,r){var e=t(22);e(e.P,"Array",{fill:t(6)}),t(3)("fill")},{22:22,3:3,6:6}],88:[function(t,n,r){"use strict";var e=t(22),o=t(8)(6),i="findIndex",u=!0;i in[]&&Array(1)[i](function(){u=!1}),e(e.P+e.F*u,"Array",{findIndex:function(t){return o(this,t,arguments.length>1?arguments[1]:void 0)}}),t(3)(i)},{22:22,3:3,8:8}],89:[function(t,n,r){"use strict";var e=t(22),o=t(8)(5),i="find",u=!0;i in[]&&Array(1)[i](function(){u=!1}),e(e.P+e.F*u,"Array",{find:function(t){return o(this,t,arguments.length>1?arguments[1]:void 0)}}),t(3)(i)},{22:22,3:3,8:8}],90:[function(t,n,r){"use strict";var e=t(17),o=t(22),i=t(80),u=t(40),c=t(35),a=t(79),s=t(84);o(o.S+o.F*!t(43)(function(t){Array.from(t)}),"Array",{from:function(t){var n,r,o,f,l=i(t),h="function"==typeof this?this:Array,p=arguments,v=p.length,g=v>1?p[1]:void 0,y=void 0!==g,d=0,m=s(l);if(y&&(g=e(g,v>2?p[2]:void 0,2)),void 0==m||h==Array&&c(m))for(n=a(l.length),r=new h(n);n>d;d++)r[d]=y?g(l[d],d):l[d];else for(f=m.call(l),r=new h;!(o=f.next()).done;d++)r[d]=y?u(f,g,[o.value,d],!0):o.value;return r.length=d,r}})},{17:17,22:22,35:35,40:40,43:43,79:79,80:80,84:84}],91:[function(t,n,r){"use strict";var e=t(3),o=t(44),i=t(45),u=t(78);n.exports=t(42)(Array,"Array",function(t,n){this._t=u(t),this._i=0,this._k=n},function(){var t=this._t,n=this._k,r=this._i++;return!t||r>=t.length?(this._t=void 0,o(1)):"keys"==n?o(0,r):"values"==n?o(0,t[r]):o(0,[r,t[r]])},"values"),i.Arguments=i.Array,e("keys"),e("values"),e("entries")},{3:3,42:42,44:44,45:45,78:78}],92:[function(t,n,r){"use strict";var e=t(22);e(e.S+e.F*t(24)(function(){function t(){}return!(Array.of.call(t)instanceof t)}),"Array",{of:function(){for(var t=0,n=arguments,r=n.length,e=new("function"==typeof this?this:Array)(r);r>t;)e[t]=n[t++];return e.length=r,e}})},{22:22,24:24}],93:[function(t,n,r){t(65)("Array")},{65:65}],94:[function(t,n,r){"use strict";var e=t(46),o=t(38),i=t(83)("hasInstance"),u=Function.prototype;i in u||e.setDesc(u,i,{value:function(t){if("function"!=typeof this||!o(t))return!1;if(!o(this.prototype))return t instanceof this;for(;t=e.getProto(t);)if(this.prototype===t)return!0;return!1}})},{38:38,46:46,83:83}],95:[function(t,n,r){var e=t(46).setDesc,o=t(59),i=t(30),u=Function.prototype,c=/^\s*function ([^ (]*)/,a="name";a in u||t(19)&&e(u,a,{configurable:!0,get:function(){var t=(""+this).match(c),n=t?t[1]:"";return i(this,a)||e(this,a,o(5,n)),n}})},{19:19,30:30,46:46,59:59}],96:[function(t,n,r){"use strict";var e=t(12);t(15)("Map",function(t){return function(){return t(this,arguments.length>0?arguments[0]:void 0)}},{get:function(t){var n=e.getEntry(this,t);return n&&n.v},set:function(t,n){return e.def(this,0===t?0:t,n)}},e,!0)},{12:12,15:15}],97:[function(t,n,r){var e=t(22),o=t(50),i=Math.sqrt,u=Math.acosh;e(e.S+e.F*!(u&&710==Math.floor(u(Number.MAX_VALUE))),"Math",{acosh:function(t){return(t=+t)<1?NaN:t>94906265.62425156?Math.log(t)+Math.LN2:o(t-1+i(t-1)*i(t+1))}})},{22:22,50:50}],98:[function(t,n,r){function e(t){return isFinite(t=+t)&&0!=t?0>t?-e(-t):Math.log(t+Math.sqrt(t*t+1)):t}var o=t(22);o(o.S,"Math",{asinh:e})},{22:22}],99:[function(t,n,r){var e=t(22);e(e.S,"Math",{atanh:function(t){return 0==(t=+t)?t:Math.log((1+t)/(1-t))/2}})},{22:22}],100:[function(t,n,r){var e=t(22),o=t(51);e(e.S,"Math",{cbrt:function(t){return o(t=+t)*Math.pow(Math.abs(t),1/3)}})},{22:22,51:51}],101:[function(t,n,r){var e=t(22);e(e.S,"Math",{clz32:function(t){return(t>>>=0)?31-Math.floor(Math.log(t+.5)*Math.LOG2E):32}})},{22:22}],102:[function(t,n,r){var e=t(22),o=Math.exp;e(e.S,"Math",{cosh:function(t){return(o(t=+t)+o(-t))/2}})},{22:22}],103:[function(t,n,r){var e=t(22);e(e.S,"Math",{expm1:t(49)})},{22:22,49:49}],104:[function(t,n,r){var e=t(22),o=t(51),i=Math.pow,u=i(2,-52),c=i(2,-23),a=i(2,127)*(2-c),s=i(2,-126),f=function(t){return t+1/u-1/u};e(e.S,"Math",{fround:function(t){var n,r,e=Math.abs(t),i=o(t);return s>e?i*f(e/s/c)*s*c:(n=(1+c/u)*e,r=n-(n-e),r>a||r!=r?i*(1/0):i*r)}})},{22:22,51:51}],105:[function(t,n,r){var e=t(22),o=Math.abs;e(e.S,"Math",{hypot:function(t,n){for(var r,e,i=0,u=0,c=arguments,a=c.length,s=0;a>u;)r=o(c[u++]),r>s?(e=s/r,i=i*e*e+1,s=r):r>0?(e=r/s,i+=e*e):i+=r;return s===1/0?1/0:s*Math.sqrt(i)}})},{22:22}],106:[function(t,n,r){var e=t(22),o=Math.imul;e(e.S+e.F*t(24)(function(){return-5!=o(4294967295,5)||2!=o.length}),"Math",{imul:function(t,n){var r=65535,e=+t,o=+n,i=r&e,u=r&o;return 0|i*u+((r&e>>>16)*u+i*(r&o>>>16)<<16>>>0)}})},{22:22,24:24}],107:[function(t,n,r){var e=t(22);e(e.S,"Math",{log10:function(t){return Math.log(t)/Math.LN10}})},{22:22}],108:[function(t,n,r){var e=t(22);e(e.S,"Math",{log1p:t(50)})},{22:22,50:50}],109:[function(t,n,r){var e=t(22);e(e.S,"Math",{log2:function(t){return Math.log(t)/Math.LN2}})},{22:22}],110:[function(t,n,r){var e=t(22);e(e.S,"Math",{sign:t(51)})},{22:22,51:51}],111:[function(t,n,r){var e=t(22),o=t(49),i=Math.exp;e(e.S+e.F*t(24)(function(){return-2e-17!=!Math.sinh(-2e-17)}),"Math",{sinh:function(t){return Math.abs(t=+t)<1?(o(t)-o(-t))/2:(i(t-1)-i(-t-1))*(Math.E/2)}})},{22:22,24:24,49:49}],112:[function(t,n,r){var e=t(22),o=t(49),i=Math.exp;e(e.S,"Math",{tanh:function(t){var n=o(t=+t),r=o(-t);return n==1/0?1:r==1/0?-1:(n-r)/(i(t)+i(-t))}})},{22:22,49:49}],113:[function(t,n,r){var e=t(22);e(e.S,"Math",{trunc:function(t){return(t>0?Math.floor:Math.ceil)(t)}})},{22:22}],114:[function(t,n,r){"use strict";var e=t(46),o=t(29),i=t(30),u=t(11),c=t(81),a=t(24),s=t(74).trim,f="Number",l=o[f],h=l,p=l.prototype,v=u(e.create(p))==f,g="trim"in String.prototype,y=function(t){
+var n=c(t,!1);if("string"==typeof n&&n.length>2){n=g?n.trim():s(n,3);var r,e,o,i=n.charCodeAt(0);if(43===i||45===i){if(r=n.charCodeAt(2),88===r||120===r)return NaN}else if(48===i){switch(n.charCodeAt(1)){case 66:case 98:e=2,o=49;break;case 79:case 111:e=8,o=55;break;default:return+n}for(var u,a=n.slice(2),f=0,l=a.length;l>f;f++)if(u=a.charCodeAt(f),48>u||u>o)return NaN;return parseInt(a,e)}}return+n};l(" 0o1")&&l("0b1")&&!l("+0x1")||(l=function(t){var n=arguments.length<1?0:t,r=this;return r instanceof l&&(v?a(function(){p.valueOf.call(r)}):u(r)!=f)?new h(y(n)):y(n)},e.each.call(t(19)?e.getNames(h):"MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger".split(","),function(t){i(h,t)&&!i(l,t)&&e.setDesc(l,t,e.getDesc(h,t))}),l.prototype=p,p.constructor=l,t(61)(o,f,l))},{11:11,19:19,24:24,29:29,30:30,46:46,61:61,74:74,81:81}],115:[function(t,n,r){var e=t(22);e(e.S,"Number",{EPSILON:Math.pow(2,-52)})},{22:22}],116:[function(t,n,r){var e=t(22),o=t(29).isFinite;e(e.S,"Number",{isFinite:function(t){return"number"==typeof t&&o(t)}})},{22:22,29:29}],117:[function(t,n,r){var e=t(22);e(e.S,"Number",{isInteger:t(37)})},{22:22,37:37}],118:[function(t,n,r){var e=t(22);e(e.S,"Number",{isNaN:function(t){return t!=t}})},{22:22}],119:[function(t,n,r){var e=t(22),o=t(37),i=Math.abs;e(e.S,"Number",{isSafeInteger:function(t){return o(t)&&i(t)<=9007199254740991}})},{22:22,37:37}],120:[function(t,n,r){var e=t(22);e(e.S,"Number",{MAX_SAFE_INTEGER:9007199254740991})},{22:22}],121:[function(t,n,r){var e=t(22);e(e.S,"Number",{MIN_SAFE_INTEGER:-9007199254740991})},{22:22}],122:[function(t,n,r){var e=t(22);e(e.S,"Number",{parseFloat:parseFloat})},{22:22}],123:[function(t,n,r){var e=t(22);e(e.S,"Number",{parseInt:parseInt})},{22:22}],124:[function(t,n,r){var e=t(22);e(e.S+e.F,"Object",{assign:t(53)})},{22:22,53:53}],125:[function(t,n,r){var e=t(38);t(54)("freeze",function(t){return function(n){return t&&e(n)?t(n):n}})},{38:38,54:54}],126:[function(t,n,r){var e=t(78);t(54)("getOwnPropertyDescriptor",function(t){return function(n,r){return t(e(n),r)}})},{54:54,78:78}],127:[function(t,n,r){t(54)("getOwnPropertyNames",function(){return t(28).get})},{28:28,54:54}],128:[function(t,n,r){var e=t(80);t(54)("getPrototypeOf",function(t){return function(n){return t(e(n))}})},{54:54,80:80}],129:[function(t,n,r){var e=t(38);t(54)("isExtensible",function(t){return function(n){return e(n)?t?t(n):!0:!1}})},{38:38,54:54}],130:[function(t,n,r){var e=t(38);t(54)("isFrozen",function(t){return function(n){return e(n)?t?t(n):!1:!0}})},{38:38,54:54}],131:[function(t,n,r){var e=t(38);t(54)("isSealed",function(t){return function(n){return e(n)?t?t(n):!1:!0}})},{38:38,54:54}],132:[function(t,n,r){var e=t(22);e(e.S,"Object",{is:t(63)})},{22:22,63:63}],133:[function(t,n,r){var e=t(80);t(54)("keys",function(t){return function(n){return t(e(n))}})},{54:54,80:80}],134:[function(t,n,r){var e=t(38);t(54)("preventExtensions",function(t){return function(n){return t&&e(n)?t(n):n}})},{38:38,54:54}],135:[function(t,n,r){var e=t(38);t(54)("seal",function(t){return function(n){return t&&e(n)?t(n):n}})},{38:38,54:54}],136:[function(t,n,r){var e=t(22);e(e.S,"Object",{setPrototypeOf:t(64).set})},{22:22,64:64}],137:[function(t,n,r){"use strict";var e=t(10),o={};o[t(83)("toStringTag")]="z",o+""!="[object z]"&&t(61)(Object.prototype,"toString",function(){return"[object "+e(this)+"]"},!0)},{10:10,61:61,83:83}],138:[function(t,n,r){"use strict";var e,o=t(46),i=t(48),u=t(29),c=t(17),a=t(10),s=t(22),f=t(38),l=t(4),h=t(2),p=t(69),v=t(27),g=t(64).set,y=t(63),d=t(83)("species"),m=t(68),S=t(52),b="Promise",w=u.process,x="process"==a(w),_=u[b],E=function(t){var n=new _(function(){});return t&&(n.constructor=Object),_.resolve(n)===n},O=function(){function n(t){var r=new _(t);return g(r,n.prototype),r}var r=!1;try{if(r=_&&_.resolve&&E(),g(n,_),n.prototype=o.create(_.prototype,{constructor:{value:n}}),n.resolve(5).then(function(){})instanceof n||(r=!1),r&&t(19)){var e=!1;_.resolve(o.setDesc({},"then",{get:function(){e=!0}})),r=e}}catch(i){r=!1}return r}(),M=function(t,n){return i&&t===_&&n===e?!0:y(t,n)},P=function(t){var n=l(t)[d];return void 0!=n?n:t},j=function(t){var n;return f(t)&&"function"==typeof(n=t.then)?n:!1},N=function(t){var n,r;this.promise=new t(function(t,e){if(void 0!==n||void 0!==r)throw TypeError("Bad Promise constructor");n=t,r=e}),this.resolve=h(n),this.reject=h(r)},F=function(t){try{t()}catch(n){return{error:n}}},A=function(t,n){if(!t.n){t.n=!0;var r=t.c;S(function(){for(var e=t.v,o=1==t.s,i=0,c=function(n){var r,i,u=o?n.ok:n.fail,c=n.resolve,a=n.reject;try{u?(o||(t.h=!0),r=u===!0?e:u(e),r===n.promise?a(TypeError("Promise-chain cycle")):(i=j(r))?i.call(r,c,a):c(r)):a(e)}catch(s){a(s)}};r.length>i;)c(r[i++]);r.length=0,t.n=!1,n&&setTimeout(function(){var n,r,o=t.p;D(o)&&(x?w.emit("unhandledRejection",e,o):(n=u.onunhandledrejection)?n({promise:o,reason:e}):(r=u.console)&&r.error&&r.error("Unhandled promise rejection",e)),t.a=void 0},1)})}},D=function(t){var n,r=t._d,e=r.a||r.c,o=0;if(r.h)return!1;for(;e.length>o;)if(n=e[o++],n.fail||!D(n.promise))return!1;return!0},I=function(t){var n=this;n.d||(n.d=!0,n=n.r||n,n.v=t,n.s=2,n.a=n.c.slice(),A(n,!0))},k=function(t){var n,r=this;if(!r.d){r.d=!0,r=r.r||r;try{if(r.p===t)throw TypeError("Promise can't be resolved itself");(n=j(t))?S(function(){var e={r:r,d:!1};try{n.call(t,c(k,e,1),c(I,e,1))}catch(o){I.call(e,o)}}):(r.v=t,r.s=1,A(r,!1))}catch(e){I.call({r:r,d:!1},e)}}};O||(_=function(t){h(t);var n=this._d={p:p(this,_,b),c:[],a:void 0,s:0,d:!1,v:void 0,h:!1,n:!1};try{t(c(k,n,1),c(I,n,1))}catch(r){I.call(n,r)}},t(60)(_.prototype,{then:function(t,n){var r=new N(m(this,_)),e=r.promise,o=this._d;return r.ok="function"==typeof t?t:!0,r.fail="function"==typeof n&&n,o.c.push(r),o.a&&o.a.push(r),o.s&&A(o,!1),e},"catch":function(t){return this.then(void 0,t)}})),s(s.G+s.W+s.F*!O,{Promise:_}),t(66)(_,b),t(65)(b),e=t(16)[b],s(s.S+s.F*!O,b,{reject:function(t){var n=new N(this),r=n.reject;return r(t),n.promise}}),s(s.S+s.F*(!O||E(!0)),b,{resolve:function(t){if(t instanceof _&&M(t.constructor,this))return t;var n=new N(this),r=n.resolve;return r(t),n.promise}}),s(s.S+s.F*!(O&&t(43)(function(t){_.all(t)["catch"](function(){})})),b,{all:function(t){var n=P(this),r=new N(n),e=r.resolve,i=r.reject,u=[],c=F(function(){v(t,!1,u.push,u);var r=u.length,c=Array(r);r?o.each.call(u,function(t,o){var u=!1;n.resolve(t).then(function(t){u||(u=!0,c[o]=t,--r||e(c))},i)}):e(c)});return c&&i(c.error),r.promise},race:function(t){var n=P(this),r=new N(n),e=r.reject,o=F(function(){v(t,!1,function(t){n.resolve(t).then(r.resolve,e)})});return o&&e(o.error),r.promise}})},{10:10,16:16,17:17,19:19,2:2,22:22,27:27,29:29,38:38,4:4,43:43,46:46,48:48,52:52,60:60,63:63,64:64,65:65,66:66,68:68,69:69,83:83}],139:[function(t,n,r){var e=t(22),o=Function.apply;e(e.S,"Reflect",{apply:function(t,n,r){return o.call(t,n,r)}})},{22:22}],140:[function(t,n,r){var e=t(46),o=t(22),i=t(2),u=t(4),c=t(38),a=Function.bind||t(16).Function.prototype.bind;o(o.S+o.F*t(24)(function(){function t(){}return!(Reflect.construct(function(){},[],t)instanceof t)}),"Reflect",{construct:function(t,n){i(t);var r=arguments.length<3?t:i(arguments[2]);if(t==r){if(void 0!=n)switch(u(n).length){case 0:return new t;case 1:return new t(n[0]);case 2:return new t(n[0],n[1]);case 3:return new t(n[0],n[1],n[2]);case 4:return new t(n[0],n[1],n[2],n[3])}var o=[null];return o.push.apply(o,n),new(a.apply(t,o))}var s=r.prototype,f=e.create(c(s)?s:Object.prototype),l=Function.apply.call(t,f,n);return c(l)?l:f}})},{16:16,2:2,22:22,24:24,38:38,4:4,46:46}],141:[function(t,n,r){var e=t(46),o=t(22),i=t(4);o(o.S+o.F*t(24)(function(){Reflect.defineProperty(e.setDesc({},1,{value:1}),1,{value:2})}),"Reflect",{defineProperty:function(t,n,r){i(t);try{return e.setDesc(t,n,r),!0}catch(o){return!1}}})},{22:22,24:24,4:4,46:46}],142:[function(t,n,r){var e=t(22),o=t(46).getDesc,i=t(4);e(e.S,"Reflect",{deleteProperty:function(t,n){var r=o(i(t),n);return r&&!r.configurable?!1:delete t[n]}})},{22:22,4:4,46:46}],143:[function(t,n,r){"use strict";var e=t(22),o=t(4),i=function(t){this._t=o(t),this._i=0;var n,r=this._k=[];for(n in t)r.push(n)};t(41)(i,"Object",function(){var t,n=this,r=n._k;do if(n._i>=r.length)return{value:void 0,done:!0};while(!((t=r[n._i++])in n._t));return{value:t,done:!1}}),e(e.S,"Reflect",{enumerate:function(t){return new i(t)}})},{22:22,4:4,41:41}],144:[function(t,n,r){var e=t(46),o=t(22),i=t(4);o(o.S,"Reflect",{getOwnPropertyDescriptor:function(t,n){return e.getDesc(i(t),n)}})},{22:22,4:4,46:46}],145:[function(t,n,r){var e=t(22),o=t(46).getProto,i=t(4);e(e.S,"Reflect",{getPrototypeOf:function(t){return o(i(t))}})},{22:22,4:4,46:46}],146:[function(t,n,r){function e(t,n){var r,u,s=arguments.length<3?t:arguments[2];return a(t)===s?t[n]:(r=o.getDesc(t,n))?i(r,"value")?r.value:void 0!==r.get?r.get.call(s):void 0:c(u=o.getProto(t))?e(u,n,s):void 0}var o=t(46),i=t(30),u=t(22),c=t(38),a=t(4);u(u.S,"Reflect",{get:e})},{22:22,30:30,38:38,4:4,46:46}],147:[function(t,n,r){var e=t(22);e(e.S,"Reflect",{has:function(t,n){return n in t}})},{22:22}],148:[function(t,n,r){var e=t(22),o=t(4),i=Object.isExtensible;e(e.S,"Reflect",{isExtensible:function(t){return o(t),i?i(t):!0}})},{22:22,4:4}],149:[function(t,n,r){var e=t(22);e(e.S,"Reflect",{ownKeys:t(56)})},{22:22,56:56}],150:[function(t,n,r){var e=t(22),o=t(4),i=Object.preventExtensions;e(e.S,"Reflect",{preventExtensions:function(t){o(t);try{return i&&i(t),!0}catch(n){return!1}}})},{22:22,4:4}],151:[function(t,n,r){var e=t(22),o=t(64);o&&e(e.S,"Reflect",{setPrototypeOf:function(t,n){o.check(t,n);try{return o.set(t,n),!0}catch(r){return!1}}})},{22:22,64:64}],152:[function(t,n,r){function e(t,n,r){var u,f,l=arguments.length<4?t:arguments[3],h=o.getDesc(a(t),n);if(!h){if(s(f=o.getProto(t)))return e(f,n,r,l);h=c(0)}return i(h,"value")?h.writable!==!1&&s(l)?(u=o.getDesc(l,n)||c(0),u.value=r,o.setDesc(l,n,u),!0):!1:void 0===h.set?!1:(h.set.call(l,r),!0)}var o=t(46),i=t(30),u=t(22),c=t(59),a=t(4),s=t(38);u(u.S,"Reflect",{set:e})},{22:22,30:30,38:38,4:4,46:46,59:59}],153:[function(t,n,r){var e=t(46),o=t(29),i=t(39),u=t(26),c=o.RegExp,a=c,s=c.prototype,f=/a/g,l=/a/g,h=new c(f)!==f;!t(19)||h&&!t(24)(function(){return l[t(83)("match")]=!1,c(f)!=f||c(l)==l||"/a/i"!=c(f,"i")})||(c=function(t,n){var r=i(t),e=void 0===n;return this instanceof c||!r||t.constructor!==c||!e?h?new a(r&&!e?t.source:t,n):a((r=t instanceof c)?t.source:t,r&&e?u.call(t):n):t},e.each.call(e.getNames(a),function(t){t in c||e.setDesc(c,t,{configurable:!0,get:function(){return a[t]},set:function(n){a[t]=n}})}),s.constructor=c,c.prototype=s,t(61)(o,"RegExp",c)),t(65)("RegExp")},{19:19,24:24,26:26,29:29,39:39,46:46,61:61,65:65,83:83}],154:[function(t,n,r){var e=t(46);t(19)&&"g"!=/./g.flags&&e.setDesc(RegExp.prototype,"flags",{configurable:!0,get:t(26)})},{19:19,26:26,46:46}],155:[function(t,n,r){t(25)("match",1,function(t,n){return function(r){"use strict";var e=t(this),o=void 0==r?void 0:r[n];return void 0!==o?o.call(r,e):new RegExp(r)[n](String(e))}})},{25:25}],156:[function(t,n,r){t(25)("replace",2,function(t,n,r){return function(e,o){"use strict";var i=t(this),u=void 0==e?void 0:e[n];return void 0!==u?u.call(e,i,o):r.call(String(i),e,o)}})},{25:25}],157:[function(t,n,r){t(25)("search",1,function(t,n){return function(r){"use strict";var e=t(this),o=void 0==r?void 0:r[n];return void 0!==o?o.call(r,e):new RegExp(r)[n](String(e))}})},{25:25}],158:[function(t,n,r){t(25)("split",2,function(t,n,r){return function(e,o){"use strict";var i=t(this),u=void 0==e?void 0:e[n];return void 0!==u?u.call(e,i,o):r.call(String(i),e,o)}})},{25:25}],159:[function(t,n,r){"use strict";var e=t(12);t(15)("Set",function(t){return function(){return t(this,arguments.length>0?arguments[0]:void 0)}},{add:function(t){return e.def(this,t=0===t?0:t,t)}},e)},{12:12,15:15}],160:[function(t,n,r){"use strict";var e=t(22),o=t(70)(!1);e(e.P,"String",{codePointAt:function(t){return o(this,t)}})},{22:22,70:70}],161:[function(t,n,r){"use strict";var e=t(22),o=t(79),i=t(71),u="endsWith",c=""[u];e(e.P+e.F*t(23)(u),"String",{endsWith:function(t){var n=i(this,t,u),r=arguments,e=r.length>1?r[1]:void 0,a=o(n.length),s=void 0===e?a:Math.min(o(e),a),f=String(t);return c?c.call(n,f,s):n.slice(s-f.length,s)===f}})},{22:22,23:23,71:71,79:79}],162:[function(t,n,r){var e=t(22),o=t(76),i=String.fromCharCode,u=String.fromCodePoint;e(e.S+e.F*(!!u&&1!=u.length),"String",{fromCodePoint:function(t){for(var n,r=[],e=arguments,u=e.length,c=0;u>c;){if(n=+e[c++],o(n,1114111)!==n)throw RangeError(n+" is not a valid code point");r.push(65536>n?i(n):i(((n-=65536)>>10)+55296,n%1024+56320))}return r.join("")}})},{22:22,76:76}],163:[function(t,n,r){"use strict";var e=t(22),o=t(71),i="includes";e(e.P+e.F*t(23)(i),"String",{includes:function(t){return!!~o(this,t,i).indexOf(t,arguments.length>1?arguments[1]:void 0)}})},{22:22,23:23,71:71}],164:[function(t,n,r){"use strict";var e=t(70)(!0);t(42)(String,"String",function(t){this._t=String(t),this._i=0},function(){var t,n=this._t,r=this._i;return r>=n.length?{value:void 0,done:!0}:(t=e(n,r),this._i+=t.length,{value:t,done:!1})})},{42:42,70:70}],165:[function(t,n,r){var e=t(22),o=t(78),i=t(79);e(e.S,"String",{raw:function(t){for(var n=o(t.raw),r=i(n.length),e=arguments,u=e.length,c=[],a=0;r>a;)c.push(String(n[a++])),u>a&&c.push(String(e[a]));return c.join("")}})},{22:22,78:78,79:79}],166:[function(t,n,r){var e=t(22);e(e.P,"String",{repeat:t(73)})},{22:22,73:73}],167:[function(t,n,r){"use strict";var e=t(22),o=t(79),i=t(71),u="startsWith",c=""[u];e(e.P+e.F*t(23)(u),"String",{startsWith:function(t){var n=i(this,t,u),r=arguments,e=o(Math.min(r.length>1?r[1]:void 0,n.length)),a=String(t);return c?c.call(n,a,e):n.slice(e,e+a.length)===a}})},{22:22,23:23,71:71,79:79}],168:[function(t,n,r){"use strict";t(74)("trim",function(t){return function(){return t(this,3)}})},{74:74}],169:[function(t,n,r){"use strict";var e=t(46),o=t(29),i=t(30),u=t(19),c=t(22),a=t(61),s=t(24),f=t(67),l=t(66),h=t(82),p=t(83),v=t(47),g=t(28),y=t(21),d=t(36),m=t(4),S=t(78),b=t(59),w=e.getDesc,x=e.setDesc,_=e.create,E=g.get,O=o.Symbol,M=o.JSON,P=M&&M.stringify,j=!1,N=p("_hidden"),F=e.isEnum,A=f("symbol-registry"),D=f("symbols"),I="function"==typeof O,k=Object.prototype,L=u&&s(function(){return 7!=_(x({},"a",{get:function(){return x(this,"a",{value:7}).a}})).a})?function(t,n,r){var e=w(k,n);e&&delete k[n],x(t,n,r),e&&t!==k&&x(k,n,e)}:x,T=function(t){var n=D[t]=_(O.prototype);return n._k=t,u&&j&&L(k,t,{configurable:!0,set:function(n){i(this,N)&&i(this[N],t)&&(this[N][t]=!1),L(this,t,b(1,n))}}),n},R=function(t){return"symbol"==typeof t},C=function(t,n,r){return r&&i(D,n)?(r.enumerable?(i(t,N)&&t[N][n]&&(t[N][n]=!1),r=_(r,{enumerable:b(0,!1)})):(i(t,N)||x(t,N,b(1,{})),t[N][n]=!0),L(t,n,r)):x(t,n,r)},G=function(t,n){m(t);for(var r,e=y(n=S(n)),o=0,i=e.length;i>o;)C(t,r=e[o++],n[r]);return t},W=function(t,n){return void 0===n?_(t):G(_(t),n)},U=function(t){var n=F.call(this,t);return n||!i(this,t)||!i(D,t)||i(this,N)&&this[N][t]?n:!0},K=function(t,n){var r=w(t=S(t),n);return!r||!i(D,n)||i(t,N)&&t[N][n]||(r.enumerable=!0),r},z=function(t){for(var n,r=E(S(t)),e=[],o=0;r.length>o;)i(D,n=r[o++])||n==N||e.push(n);return e},q=function(t){for(var n,r=E(S(t)),e=[],o=0;r.length>o;)i(D,n=r[o++])&&e.push(D[n]);return e},J=function(t){if(void 0!==t&&!R(t)){for(var n,r,e=[t],o=1,i=arguments;i.length>o;)e.push(i[o++]);return n=e[1],"function"==typeof n&&(r=n),(r||!d(n))&&(n=function(t,n){return r&&(n=r.call(this,t,n)),R(n)?void 0:n}),e[1]=n,P.apply(M,e)}},B=s(function(){var t=O();return"[null]"!=P([t])||"{}"!=P({a:t})||"{}"!=P(Object(t))});I||(O=function(){if(R(this))throw TypeError("Symbol is not a constructor");return T(h(arguments.length>0?arguments[0]:void 0))},a(O.prototype,"toString",function(){return this._k}),R=function(t){return t instanceof O},e.create=W,e.isEnum=U,e.getDesc=K,e.setDesc=C,e.setDescs=G,e.getNames=g.get=z,e.getSymbols=q,u&&!t(48)&&a(k,"propertyIsEnumerable",U,!0));var V={"for":function(t){return i(A,t+="")?A[t]:A[t]=O(t)},keyFor:function(t){return v(A,t)},useSetter:function(){j=!0},useSimple:function(){j=!1}};e.each.call("hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables".split(","),function(t){var n=p(t);V[t]=I?n:T(n)}),j=!0,c(c.G+c.W,{Symbol:O}),c(c.S,"Symbol",V),c(c.S+c.F*!I,"Object",{create:W,defineProperty:C,defineProperties:G,getOwnPropertyDescriptor:K,getOwnPropertyNames:z,getOwnPropertySymbols:q}),M&&c(c.S+c.F*(!I||B),"JSON",{stringify:J}),l(O,"Symbol"),l(Math,"Math",!0),l(o.JSON,"JSON",!0)},{19:19,21:21,22:22,24:24,28:28,29:29,30:30,36:36,4:4,46:46,47:47,48:48,59:59,61:61,66:66,67:67,78:78,82:82,83:83}],170:[function(t,n,r){"use strict";var e=t(46),o=t(61),i=t(14),u=t(38),c=t(30),a=i.frozenStore,s=i.WEAK,f=Object.isExtensible||u,l={},h=t(15)("WeakMap",function(t){return function(){return t(this,arguments.length>0?arguments[0]:void 0)}},{get:function(t){if(u(t)){if(!f(t))return a(this).get(t);if(c(t,s))return t[s][this._i]}},set:function(t,n){return i.def(this,t,n)}},i,!0,!0);7!=(new h).set((Object.freeze||Object)(l),7).get(l)&&e.each.call(["delete","has","get","set"],function(t){var n=h.prototype,r=n[t];o(n,t,function(n,e){if(u(n)&&!f(n)){var o=a(this)[t](n,e);return"set"==t?this:o}return r.call(this,n,e)})})},{14:14,15:15,30:30,38:38,46:46,61:61}],171:[function(t,n,r){"use strict";var e=t(14);t(15)("WeakSet",function(t){return function(){return t(this,arguments.length>0?arguments[0]:void 0)}},{add:function(t){return e.def(this,t,!0)}},e,!1,!0)},{14:14,15:15}],172:[function(t,n,r){"use strict";var e=t(22),o=t(7)(!0);e(e.P,"Array",{includes:function(t){return o(this,t,arguments.length>1?arguments[1]:void 0)}}),t(3)("includes")},{22:22,3:3,7:7}],173:[function(t,n,r){var e=t(22);e(e.P,"Map",{toJSON:t(13)("Map")})},{13:13,22:22}],174:[function(t,n,r){var e=t(22),o=t(55)(!0);e(e.S,"Object",{entries:function(t){return o(t)}})},{22:22,55:55}],175:[function(t,n,r){var e=t(46),o=t(22),i=t(56),u=t(78),c=t(59);o(o.S,"Object",{getOwnPropertyDescriptors:function(t){for(var n,r,o=u(t),a=e.setDesc,s=e.getDesc,f=i(o),l={},h=0;f.length>h;)r=s(o,n=f[h++]),n in l?a(l,n,c(0,r)):l[n]=r;return l}})},{22:22,46:46,56:56,59:59,78:78}],176:[function(t,n,r){var e=t(22),o=t(55)(!1);e(e.S,"Object",{values:function(t){return o(t)}})},{22:22,55:55}],177:[function(t,n,r){var e=t(22),o=t(62)(/[\\^$*+?.()|[\]{}]/g,"\\$&");e(e.S,"RegExp",{escape:function(t){return o(t)}})},{22:22,62:62}],178:[function(t,n,r){var e=t(22);e(e.P,"Set",{toJSON:t(13)("Set")})},{13:13,22:22}],179:[function(t,n,r){"use strict";var e=t(22),o=t(70)(!0);e(e.P,"String",{at:function(t){return o(this,t)}})},{22:22,70:70}],180:[function(t,n,r){"use strict";var e=t(22),o=t(72);e(e.P,"String",{padLeft:function(t){return o(this,t,arguments.length>1?arguments[1]:void 0,!0)}})},{22:22,72:72}],181:[function(t,n,r){"use strict";var e=t(22),o=t(72);e(e.P,"String",{padRight:function(t){return o(this,t,arguments.length>1?arguments[1]:void 0,!1)}})},{22:22,72:72}],182:[function(t,n,r){"use strict";t(74)("trimLeft",function(t){return function(){return t(this,1)}})},{74:74}],183:[function(t,n,r){"use strict";t(74)("trimRight",function(t){return function(){return t(this,2)}})},{74:74}],184:[function(t,n,r){var e=t(46),o=t(22),i=t(17),u=t(16).Array||Array,c={},a=function(t,n){e.each.call(t.split(","),function(t){void 0==n&&t in u?c[t]=u[t]:t in[]&&(c[t]=i(Function.call,[][t],n))})};a("pop,reverse,shift,keys,values,entries",1),a("indexOf,every,some,forEach,map,filter,find,findIndex,includes",3),a("join,slice,concat,push,splice,unshift,sort,lastIndexOf,reduce,reduceRight,copyWithin,fill"),o(o.S,"Array",c)},{16:16,17:17,22:22,46:46}],185:[function(t,n,r){t(91);var e=t(29),o=t(31),i=t(45),u=t(83)("iterator"),c=e.NodeList,a=e.HTMLCollection,s=c&&c.prototype,f=a&&a.prototype,l=i.NodeList=i.HTMLCollection=i.Array;s&&!s[u]&&o(s,u,l),f&&!f[u]&&o(f,u,l)},{29:29,31:31,45:45,83:83,91:91}],186:[function(t,n,r){var e=t(22),o=t(75);e(e.G+e.B,{setImmediate:o.set,clearImmediate:o.clear})},{22:22,75:75}],187:[function(t,n,r){var e=t(29),o=t(22),i=t(33),u=t(57),c=e.navigator,a=!!c&&/MSIE .\./.test(c.userAgent),s=function(t){return a?function(n,r){return t(i(u,[].slice.call(arguments,2),"function"==typeof n?n:Function(n)),r)}:t};o(o.G+o.B+o.F*a,{setTimeout:s(e.setTimeout),setInterval:s(e.setInterval)})},{22:22,29:29,33:33,57:57}],188:[function(t,n,r){t(85),t(169),t(124),t(132),t(136),t(137),t(125),t(135),t(134),t(130),t(131),t(129),t(126),t(128),t(133),t(127),t(95),t(94),t(114),t(115),t(116),t(117),t(118),t(119),t(120),t(121),t(122),t(123),t(97),t(98),t(99),t(100),t(101),t(102),t(103),t(104),t(105),t(106),t(107),t(108),t(109),t(110),t(111),t(112),t(113),t(162),t(165),t(168),t(164),t(160),t(161),t(163),t(166),t(167),t(90),t(92),t(91),t(93),t(86),t(87),t(89),t(88),t(153),t(154),t(155),t(156),t(157),t(158),t(138),t(96),t(159),t(170),t(171),t(139),t(140),t(141),t(142),t(143),t(146),t(144),t(145),t(147),t(148),t(149),t(150),t(152),t(151),t(172),t(179),t(180),t(181),t(182),t(183),t(177),t(175),t(176),t(174),t(173),t(178),t(184),t(187),t(186),t(185),n.exports=t(16)},{100:100,101:101,102:102,103:103,104:104,105:105,106:106,107:107,108:108,109:109,110:110,111:111,112:112,113:113,114:114,115:115,116:116,117:117,118:118,119:119,120:120,121:121,122:122,123:123,124:124,125:125,126:126,127:127,128:128,129:129,130:130,131:131,132:132,133:133,134:134,135:135,136:136,137:137,138:138,139:139,140:140,141:141,142:142,143:143,144:144,145:145,146:146,147:147,148:148,149:149,150:150,151:151,152:152,153:153,154:154,155:155,156:156,157:157,158:158,159:159,16:16,160:160,161:161,162:162,163:163,164:164,165:165,166:166,167:167,168:168,169:169,170:170,171:171,172:172,173:173,174:174,175:175,176:176,177:177,178:178,179:179,180:180,181:181,182:182,183:183,184:184,185:185,186:186,187:187,85:85,86:86,87:87,88:88,89:89,90:90,91:91,92:92,93:93,94:94,95:95,96:96,97:97,98:98,99:99}],189:[function(t,n,r){(function(t){!function(t){"use strict";function r(t,n,r,e){var i=Object.create((n||o).prototype),u=new p(e||[]);return i._invoke=f(t,r,u),i}function e(t,n,r){try{return{type:"normal",arg:t.call(n,r)}}catch(e){return{type:"throw",arg:e}}}function o(){}function i(){}function u(){}function c(t){["next","throw","return"].forEach(function(n){t[n]=function(t){return this._invoke(n,t)}})}function a(t){this.arg=t}function s(t){function n(n,r){var e=t[n](r),u=e.value;return u instanceof a?Promise.resolve(u.arg).then(o,i):Promise.resolve(u).then(function(t){return e.value=t,e})}function r(t,r){function o(){return n(t,r)}return e=e?e.then(o,o):new Promise(function(t){t(o())})}"object"==typeof process&&process.domain&&(n=process.domain.bind(n));var e,o=n.bind(t,"next"),i=n.bind(t,"throw");n.bind(t,"return");this._invoke=r}function f(t,n,r){var o=w;return function(i,u){if(o===_)throw new Error("Generator is already running");if(o===E){if("throw"===i)throw u;return g()}for(;;){var c=r.delegate;if(c){if("return"===i||"throw"===i&&c.iterator[i]===y){r.delegate=null;var a=c.iterator["return"];if(a){var s=e(a,c.iterator,u);if("throw"===s.type){i="throw",u=s.arg;continue}}if("return"===i)continue}var s=e(c.iterator[i],c.iterator,u);if("throw"===s.type){r.delegate=null,i="throw",u=s.arg;continue}i="next",u=y;var f=s.arg;if(!f.done)return o=x,f;r[c.resultName]=f.value,r.next=c.nextLoc,r.delegate=null}if("next"===i)o===x?r.sent=u:r.sent=y;else if("throw"===i){if(o===w)throw o=E,u;r.dispatchException(u)&&(i="next",u=y)}else"return"===i&&r.abrupt("return",u);o=_;var s=e(t,n,r);if("normal"===s.type){o=r.done?E:x;var f={value:s.arg,done:r.done};if(s.arg!==O)return f;r.delegate&&"next"===i&&(u=y)}else"throw"===s.type&&(o=E,i="throw",u=s.arg)}}}function l(t){var n={tryLoc:t[0]};1 in t&&(n.catchLoc=t[1]),2 in t&&(n.finallyLoc=t[2],n.afterLoc=t[3]),this.tryEntries.push(n)}function h(t){var n=t.completion||{};n.type="normal",delete n.arg,t.completion=n}function p(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(l,this),this.reset(!0)}function v(t){if(t){var n=t[m];if(n)return n.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var r=-1,e=function o(){for(;++r<t.length;)if(d.call(t,r))return o.value=t[r],o.done=!1,o;return o.value=y,o.done=!0,o};return e.next=e}}return{next:g}}function g(){return{value:y,done:!0}}var y,d=Object.prototype.hasOwnProperty,m="function"==typeof Symbol&&Symbol.iterator||"@@iterator",S="object"==typeof n,b=t.regeneratorRuntime;if(b)return void(S&&(n.exports=b));b=t.regeneratorRuntime=S?n.exports:{},b.wrap=r;var w="suspendedStart",x="suspendedYield",_="executing",E="completed",O={},M=u.prototype=o.prototype;i.prototype=M.constructor=u,u.constructor=i,i.displayName="GeneratorFunction",b.isGeneratorFunction=function(t){var n="function"==typeof t&&t.constructor;return n?n===i||"GeneratorFunction"===(n.displayName||n.name):!1},b.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,u):t.__proto__=u,t.prototype=Object.create(M),t},b.awrap=function(t){return new a(t)},c(s.prototype),b.async=function(t,n,e,o){var i=new s(r(t,n,e,o));return b.isGeneratorFunction(n)?i:i.next().then(function(t){return t.done?t.value:i.next()})},c(M),M[m]=function(){return this},M.toString=function(){return"[object Generator]"},b.keys=function(t){var n=[];for(var r in t)n.push(r);return n.reverse(),function e(){for(;n.length;){var r=n.pop();if(r in t)return e.value=r,e.done=!1,e}return e.done=!0,e}},b.values=v,p.prototype={constructor:p,reset:function(t){if(this.prev=0,this.next=0,this.sent=y,this.done=!1,this.delegate=null,this.tryEntries.forEach(h),!t)for(var n in this)"t"===n.charAt(0)&&d.call(this,n)&&!isNaN(+n.slice(1))&&(this[n]=y)},stop:function(){this.done=!0;var t=this.tryEntries[0],n=t.completion;if("throw"===n.type)throw n.arg;return this.rval},dispatchException:function(t){function n(n,e){return i.type="throw",i.arg=t,r.next=n,!!e}if(this.done)throw t;for(var r=this,e=this.tryEntries.length-1;e>=0;--e){var o=this.tryEntries[e],i=o.completion;if("root"===o.tryLoc)return n("end");if(o.tryLoc<=this.prev){var u=d.call(o,"catchLoc"),c=d.call(o,"finallyLoc");if(u&&c){if(this.prev<o.catchLoc)return n(o.catchLoc,!0);if(this.prev<o.finallyLoc)return n(o.finallyLoc)}else if(u){if(this.prev<o.catchLoc)return n(o.catchLoc,!0)}else{if(!c)throw new Error("try statement without catch or finally");if(this.prev<o.finallyLoc)return n(o.finallyLoc)}}}},abrupt:function(t,n){for(var r=this.tryEntries.length-1;r>=0;--r){var e=this.tryEntries[r];if(e.tryLoc<=this.prev&&d.call(e,"finallyLoc")&&this.prev<e.finallyLoc){var o=e;break}}o&&("break"===t||"continue"===t)&&o.tryLoc<=n&&n<=o.finallyLoc&&(o=null);var i=o?o.completion:{};return i.type=t,i.arg=n,o?this.next=o.finallyLoc:this.complete(i),O},complete:function(t,n){if("throw"===t.type)throw t.arg;"break"===t.type||"continue"===t.type?this.next=t.arg:"return"===t.type?(this.rval=t.arg,this.next="end"):"normal"===t.type&&n&&(this.next=n)},finish:function(t){for(var n=this.tryEntries.length-1;n>=0;--n){var r=this.tryEntries[n];if(r.finallyLoc===t)return this.complete(r.completion,r.afterLoc),h(r),O}},"catch":function(t){for(var n=this.tryEntries.length-1;n>=0;--n){var r=this.tryEntries[n];if(r.tryLoc===t){var e=r.completion;if("throw"===e.type){var o=e.arg;h(r)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(t,n,r){return this.delegate={iterator:v(t),resultName:n,nextLoc:r},O}}}("object"==typeof t?t:"object"==typeof window?window:"object"==typeof self?self:this)}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}]},{},[1]);
diff --git a/web/templates/channel.html b/web/templates/channel.html
index 7b8f6a243..8abbe36df 100644
--- a/web/templates/channel.html
+++ b/web/templates/channel.html
@@ -26,13 +26,13 @@
<script>
window.setup_channel_page({{ .Props }}, {{ .Team }}, {{ .Channel }}, {{ .User }});
$('body').tooltip( {selector: '[data-toggle=tooltip]'} );
+ var modals = $('.modal-body').not('.edit-modal-body');
if($(window).height() > 1200){
- $('.modal-body').css('max-height', 1000);
+ modals.css('max-height', 1000);
+ } else {
+ modals.css('max-height', $(window).height() - 200);
}
- else {
- $('.modal-body').css('max-height', $(window).height() - 200);
- }
- $('.modal-body').perfectScrollbar();
+ modals.perfectScrollbar();
</script>
</body>
</html>
diff --git a/web/templates/head.html b/web/templates/head.html
index c425ef0b0..709edbaec 100644
--- a/web/templates/head.html
+++ b/web/templates/head.html
@@ -38,6 +38,7 @@
<script src="/static/js/react-bootstrap-0.28.1.js"></script>
<script src="/static/js/perfect-scrollbar-0.6.7.jquery.min.js"></script>
<script src="/static/js/jquery-dragster/jquery.dragster.js"></script>
+ <script src="/static/js/babel-polyfill-6.1.18.min.js"></script>
<script src="/static/js/katex.min.js"></script>
<style id="antiClickjack">body{display:none !important;}</style>