From c36a234b7f776f6b2be95d16ef71f533c6deba5e Mon Sep 17 00:00:00 2001 From: Xavier ROOT Date: Tue, 15 Dec 2015 11:54:49 +0100 Subject: [PATCH] update to movim 0.9 git-2015-12-15 --- sources/INSTALL.md | 2 +- sources/README.md | 8 +- sources/app/assets/js/movim_websocket.js | 34 +- sources/app/controllers/NodeController.php | 11 + sources/app/controllers/TagController.php | 11 + sources/app/helpers/StringHelper.php | 25 +- sources/app/models/contact/Contact.php | 10 +- sources/app/models/contact/ContactDAO.php | 78 - sources/app/models/message/Message.php | 3 +- sources/app/models/message/MessageDAO.php | 69 +- sources/app/models/postn/Postn.php | 129 +- sources/app/models/postn/PostnDAO.php | 63 +- .../app/models/rosterlink/RosterLinkDAO.php | 36 - sources/app/models/tag/Tag.php | 20 + sources/app/models/tag/TagDAO.php | 56 + sources/app/views/node.tpl | 7 + sources/app/views/page.tpl | 27 +- sources/app/views/tag.tpl | 7 + sources/app/widgets/Account/Account.php | 4 +- .../app/widgets/AccountNext/AccountNext.php | 57 +- .../widgets/AccountNext/_accountnext_form.tpl | 3 +- .../AccountNext/_accountnext_movim.tpl | 20 + .../widgets/AccountNext/_accountnext_oob.tpl | 2 +- .../app/widgets/AccountNext/accountnext.css | 29 +- .../app/widgets/AccountNext/accountnext.tpl | 23 +- sources/app/widgets/AccountNext/locales.ini | 1 + sources/app/widgets/Avatar/_avatar_form.tpl | 32 +- sources/app/widgets/Avatar/avatar.css | 4 + sources/app/widgets/Avatar/avatar.js | 11 +- sources/app/widgets/Avatar/locales.ini | 1 + sources/app/widgets/Blog/Blog.php | 161 +- sources/app/widgets/Blog/blog.tpl | 157 +- sources/app/widgets/Bookmark/Bookmark.php | 90 +- sources/app/widgets/Chat/Chat.php | 34 +- sources/app/widgets/Chat/_chat.tpl | 2 +- sources/app/widgets/Chat/_chat_empty.tpl | 4 +- sources/app/widgets/Chat/_chat_smiley.tpl | 108 +- sources/app/widgets/Chat/chat.css | 13 +- sources/app/widgets/Chat/chat.js | 49 +- sources/app/widgets/Chat/locales.ini | 1 + sources/app/widgets/Chats/Chats.php | 9 +- sources/app/widgets/Chats/chats.js | 2 + sources/app/widgets/Chats/chats.tpl | 2 +- sources/app/widgets/Chats/locales.ini | 2 +- sources/app/widgets/Config/Config.php | 30 +- sources/app/widgets/Config/_config_form.tpl | 112 +- sources/app/widgets/Config/locales.ini | 6 +- sources/app/widgets/Contact/Contact.php | 6 +- sources/app/widgets/Contact/_contact.tpl | 4 +- sources/app/widgets/Group/Group.php | 9 +- sources/app/widgets/Group/_group_posts.tpl | 20 +- sources/app/widgets/Groups/Groups.php | 4 +- .../widgets/Groups/_groups_subscriptions.tpl | 2 +- sources/app/widgets/Hello/hello.tpl | 5 +- sources/app/widgets/Help/Help.php | 18 +- sources/app/widgets/Help/help.tpl | 21 +- sources/app/widgets/Help/locales.ini | 2 +- sources/app/widgets/Login/Login.php | 2 +- sources/app/widgets/Login/_login_sessions.tpl | 4 +- sources/app/widgets/Login/login.tpl | 4 +- .../widgets/LoginAnonymous/LoginAnonymous.php | 2 +- sources/app/widgets/Menu/_menu_list.tpl | 2 + .../app/widgets/Notification/notification.js | 6 +- sources/app/widgets/Post/Post.php | 37 +- sources/app/widgets/Post/_post.tpl | 318 +- sources/app/widgets/Post/_post_comments.tpl | 6 +- sources/app/widgets/Post/_post_empty.tpl | 3 +- sources/app/widgets/Publish/Publish.php | 54 +- .../app/widgets/Publish/_publish_create.tpl | 16 +- .../app/widgets/Publish/_publish_embed.tpl | 8 +- .../app/widgets/Publish/_publish_header.tpl | 2 +- sources/app/widgets/Rooms/Rooms.php | 12 +- sources/app/widgets/Vcard4/Vcard4.php | 6 +- sources/bootstrap.php | 1 + sources/composer.json | 4 +- sources/lib/XMPPtoForm.php | 5 +- sources/linker.php | 13 +- sources/locales/locales.ini | 1 + sources/src/Movim/Daemon/Core.php | 10 +- sources/src/Movim/Daemon/Session.php | 12 +- sources/src/Movim/i18n/Locale.php | 8 +- sources/system/Route.php | 6 +- sources/system/User.php | 29 +- sources/system/Utils.php | 6 +- sources/system/UtilsPicture.php | 27 +- sources/system/controllers/AjaxController.php | 4 +- .../system/controllers/FrontController.php | 2 +- sources/system/template/TplPageBuilder.php | 93 +- sources/system/widget/WidgetBase.php | 28 +- sources/system/widget/WidgetWrapper.php | 19 +- sources/themes/material/css/article.css | 15 + sources/themes/material/css/fonts.css | 17 + sources/themes/material/css/form.css | 13 + sources/themes/material/css/grid.css | 12 +- .../css/material-design-iconic-font.min.css | 2 +- sources/themes/material/css/style.css | 8 +- .../fonts/Material-Design-Iconic-Font.eot | Bin 104210 -> 42495 bytes .../fonts/Material-Design-Iconic-Font.svg | 2683 +++++------------ .../fonts/Material-Design-Iconic-Font.ttf | Bin 103964 -> 99212 bytes .../fonts/Material-Design-Iconic-Font.woff | Bin 52044 -> 50312 bytes .../fonts/Material-Design-Iconic-Font.woff2 | Bin 38812 -> 38384 bytes sources/themes/material/img/app/96.png | Bin 0 -> 6940 bytes sources/themes/material/img/app/vectorial.svg | 369 +++ .../themes/material/img/emojis/svg/1f004.svg | 1 + .../themes/material/img/emojis/svg/1f0cf.svg | 1 + .../themes/material/img/emojis/svg/1f170.svg | 1 + .../themes/material/img/emojis/svg/1f171.svg | 1 + .../themes/material/img/emojis/svg/1f17e.svg | 1 + .../themes/material/img/emojis/svg/1f17f.svg | 1 + .../themes/material/img/emojis/svg/1f18e.svg | 1 + .../themes/material/img/emojis/svg/1f191.svg | 1 + .../themes/material/img/emojis/svg/1f192.svg | 1 + .../themes/material/img/emojis/svg/1f193.svg | 1 + .../themes/material/img/emojis/svg/1f194.svg | 1 + .../themes/material/img/emojis/svg/1f195.svg | 1 + .../themes/material/img/emojis/svg/1f196.svg | 1 + .../themes/material/img/emojis/svg/1f197.svg | 1 + .../themes/material/img/emojis/svg/1f198.svg | 1 + .../themes/material/img/emojis/svg/1f199.svg | 1 + .../themes/material/img/emojis/svg/1f19a.svg | 1 + .../themes/material/img/emojis/svg/1f1e6.svg | 1 + .../themes/material/img/emojis/svg/1f1e7.svg | 1 + .../material/img/emojis/svg/1f1e8-1f1f3.svg | 1 + .../themes/material/img/emojis/svg/1f1e8.svg | 1 + .../material/img/emojis/svg/1f1e9-1f1ea.svg | 1 + .../themes/material/img/emojis/svg/1f1e9.svg | 1 + .../material/img/emojis/svg/1f1ea-1f1f8.svg | 1 + .../themes/material/img/emojis/svg/1f1ea.svg | 1 + .../material/img/emojis/svg/1f1eb-1f1f7.svg | 1 + .../themes/material/img/emojis/svg/1f1eb.svg | 1 + .../material/img/emojis/svg/1f1ec-1f1e7.svg | 1 + .../themes/material/img/emojis/svg/1f1ec.svg | 1 + .../themes/material/img/emojis/svg/1f1ed.svg | 1 + .../material/img/emojis/svg/1f1ee-1f1f9.svg | 1 + .../themes/material/img/emojis/svg/1f1ee.svg | 1 + .../material/img/emojis/svg/1f1ef-1f1f5.svg | 1 + .../themes/material/img/emojis/svg/1f1ef.svg | 1 + .../material/img/emojis/svg/1f1f0-1f1f7.svg | 1 + .../themes/material/img/emojis/svg/1f1f0.svg | 1 + .../themes/material/img/emojis/svg/1f1f1.svg | 1 + .../themes/material/img/emojis/svg/1f1f2.svg | 1 + .../themes/material/img/emojis/svg/1f1f3.svg | 1 + .../themes/material/img/emojis/svg/1f1f4.svg | 1 + .../themes/material/img/emojis/svg/1f1f5.svg | 1 + .../themes/material/img/emojis/svg/1f1f6.svg | 1 + .../material/img/emojis/svg/1f1f7-1f1fa.svg | 1 + .../themes/material/img/emojis/svg/1f1f7.svg | 1 + .../themes/material/img/emojis/svg/1f1f8.svg | 1 + .../themes/material/img/emojis/svg/1f1f9.svg | 1 + .../material/img/emojis/svg/1f1fa-1f1f8.svg | 1 + .../themes/material/img/emojis/svg/1f1fa.svg | 1 + .../themes/material/img/emojis/svg/1f1fb.svg | 1 + .../themes/material/img/emojis/svg/1f1fc.svg | 1 + .../themes/material/img/emojis/svg/1f1fd.svg | 1 + .../themes/material/img/emojis/svg/1f1fe.svg | 1 + .../themes/material/img/emojis/svg/1f1ff.svg | 1 + .../themes/material/img/emojis/svg/1f201.svg | 1 + .../themes/material/img/emojis/svg/1f202.svg | 1 + .../themes/material/img/emojis/svg/1f21a.svg | 1 + .../themes/material/img/emojis/svg/1f22f.svg | 1 + .../themes/material/img/emojis/svg/1f232.svg | 1 + .../themes/material/img/emojis/svg/1f233.svg | 1 + .../themes/material/img/emojis/svg/1f234.svg | 1 + .../themes/material/img/emojis/svg/1f235.svg | 1 + .../themes/material/img/emojis/svg/1f236.svg | 1 + .../themes/material/img/emojis/svg/1f237.svg | 1 + .../themes/material/img/emojis/svg/1f238.svg | 1 + .../themes/material/img/emojis/svg/1f239.svg | 1 + .../themes/material/img/emojis/svg/1f23a.svg | 1 + .../themes/material/img/emojis/svg/1f250.svg | 1 + .../themes/material/img/emojis/svg/1f251.svg | 1 + .../themes/material/img/emojis/svg/1f300.svg | 1 + .../themes/material/img/emojis/svg/1f301.svg | 1 + .../themes/material/img/emojis/svg/1f302.svg | 1 + .../themes/material/img/emojis/svg/1f303.svg | 1 + .../themes/material/img/emojis/svg/1f304.svg | 1 + .../themes/material/img/emojis/svg/1f305.svg | 1 + .../themes/material/img/emojis/svg/1f306.svg | 1 + .../themes/material/img/emojis/svg/1f307.svg | 1 + .../themes/material/img/emojis/svg/1f308.svg | 1 + .../themes/material/img/emojis/svg/1f309.svg | 1 + .../themes/material/img/emojis/svg/1f30a.svg | 1 + .../themes/material/img/emojis/svg/1f30b.svg | 1 + .../themes/material/img/emojis/svg/1f30c.svg | 1 + .../themes/material/img/emojis/svg/1f30d.svg | 1 + .../themes/material/img/emojis/svg/1f30e.svg | 1 + .../themes/material/img/emojis/svg/1f30f.svg | 1 + .../themes/material/img/emojis/svg/1f310.svg | 1 + .../themes/material/img/emojis/svg/1f311.svg | 1 + .../themes/material/img/emojis/svg/1f312.svg | 1 + .../themes/material/img/emojis/svg/1f313.svg | 1 + .../themes/material/img/emojis/svg/1f314.svg | 1 + .../themes/material/img/emojis/svg/1f315.svg | 1 + .../themes/material/img/emojis/svg/1f316.svg | 1 + .../themes/material/img/emojis/svg/1f317.svg | 1 + .../themes/material/img/emojis/svg/1f318.svg | 1 + .../themes/material/img/emojis/svg/1f319.svg | 1 + .../themes/material/img/emojis/svg/1f31a.svg | 1 + .../themes/material/img/emojis/svg/1f31b.svg | 1 + .../themes/material/img/emojis/svg/1f31c.svg | 1 + .../themes/material/img/emojis/svg/1f31d.svg | 1 + .../themes/material/img/emojis/svg/1f31e.svg | 1 + .../themes/material/img/emojis/svg/1f31f.svg | 1 + .../themes/material/img/emojis/svg/1f320.svg | 1 + .../themes/material/img/emojis/svg/1f330.svg | 1 + .../themes/material/img/emojis/svg/1f331.svg | 1 + .../themes/material/img/emojis/svg/1f332.svg | 1 + .../themes/material/img/emojis/svg/1f333.svg | 1 + .../themes/material/img/emojis/svg/1f334.svg | 1 + .../themes/material/img/emojis/svg/1f335.svg | 1 + .../themes/material/img/emojis/svg/1f337.svg | 1 + .../themes/material/img/emojis/svg/1f338.svg | 1 + .../themes/material/img/emojis/svg/1f339.svg | 1 + .../themes/material/img/emojis/svg/1f33a.svg | 1 + .../themes/material/img/emojis/svg/1f33b.svg | 1 + .../themes/material/img/emojis/svg/1f33c.svg | 1 + .../themes/material/img/emojis/svg/1f33d.svg | 1 + .../themes/material/img/emojis/svg/1f33e.svg | 1 + .../themes/material/img/emojis/svg/1f33f.svg | 1 + .../themes/material/img/emojis/svg/1f340.svg | 1 + .../themes/material/img/emojis/svg/1f341.svg | 1 + .../themes/material/img/emojis/svg/1f342.svg | 1 + .../themes/material/img/emojis/svg/1f343.svg | 1 + .../themes/material/img/emojis/svg/1f344.svg | 1 + .../themes/material/img/emojis/svg/1f345.svg | 1 + .../themes/material/img/emojis/svg/1f346.svg | 1 + .../themes/material/img/emojis/svg/1f347.svg | 1 + .../themes/material/img/emojis/svg/1f348.svg | 1 + .../themes/material/img/emojis/svg/1f349.svg | 1 + .../themes/material/img/emojis/svg/1f34a.svg | 1 + .../themes/material/img/emojis/svg/1f34b.svg | 1 + .../themes/material/img/emojis/svg/1f34c.svg | 1 + .../themes/material/img/emojis/svg/1f34d.svg | 1 + .../themes/material/img/emojis/svg/1f34e.svg | 1 + .../themes/material/img/emojis/svg/1f34f.svg | 1 + .../themes/material/img/emojis/svg/1f350.svg | 1 + .../themes/material/img/emojis/svg/1f351.svg | 1 + .../themes/material/img/emojis/svg/1f352.svg | 1 + .../themes/material/img/emojis/svg/1f353.svg | 1 + .../themes/material/img/emojis/svg/1f354.svg | 1 + .../themes/material/img/emojis/svg/1f355.svg | 1 + .../themes/material/img/emojis/svg/1f356.svg | 1 + .../themes/material/img/emojis/svg/1f357.svg | 1 + .../themes/material/img/emojis/svg/1f358.svg | 1 + .../themes/material/img/emojis/svg/1f359.svg | 1 + .../themes/material/img/emojis/svg/1f35a.svg | 1 + .../themes/material/img/emojis/svg/1f35b.svg | 1 + .../themes/material/img/emojis/svg/1f35c.svg | 1 + .../themes/material/img/emojis/svg/1f35d.svg | 1 + .../themes/material/img/emojis/svg/1f35e.svg | 1 + .../themes/material/img/emojis/svg/1f35f.svg | 1 + .../themes/material/img/emojis/svg/1f360.svg | 1 + .../themes/material/img/emojis/svg/1f361.svg | 1 + .../themes/material/img/emojis/svg/1f362.svg | 1 + .../themes/material/img/emojis/svg/1f363.svg | 1 + .../themes/material/img/emojis/svg/1f364.svg | 1 + .../themes/material/img/emojis/svg/1f365.svg | 1 + .../themes/material/img/emojis/svg/1f366.svg | 1 + .../themes/material/img/emojis/svg/1f367.svg | 1 + .../themes/material/img/emojis/svg/1f368.svg | 1 + .../themes/material/img/emojis/svg/1f369.svg | 1 + .../themes/material/img/emojis/svg/1f36a.svg | 1 + .../themes/material/img/emojis/svg/1f36b.svg | 1 + .../themes/material/img/emojis/svg/1f36c.svg | 1 + .../themes/material/img/emojis/svg/1f36d.svg | 1 + .../themes/material/img/emojis/svg/1f36e.svg | 1 + .../themes/material/img/emojis/svg/1f36f.svg | 1 + .../themes/material/img/emojis/svg/1f370.svg | 1 + .../themes/material/img/emojis/svg/1f371.svg | 1 + .../themes/material/img/emojis/svg/1f372.svg | 1 + .../themes/material/img/emojis/svg/1f373.svg | 1 + .../themes/material/img/emojis/svg/1f374.svg | 1 + .../themes/material/img/emojis/svg/1f375.svg | 1 + .../themes/material/img/emojis/svg/1f376.svg | 1 + .../themes/material/img/emojis/svg/1f377.svg | 1 + .../themes/material/img/emojis/svg/1f378.svg | 1 + .../themes/material/img/emojis/svg/1f379.svg | 1 + .../themes/material/img/emojis/svg/1f37a.svg | 1 + .../themes/material/img/emojis/svg/1f37b.svg | 1 + .../themes/material/img/emojis/svg/1f37c.svg | 1 + .../themes/material/img/emojis/svg/1f380.svg | 1 + .../themes/material/img/emojis/svg/1f381.svg | 1 + .../themes/material/img/emojis/svg/1f382.svg | 1 + .../themes/material/img/emojis/svg/1f383.svg | 1 + .../themes/material/img/emojis/svg/1f384.svg | 1 + .../themes/material/img/emojis/svg/1f385.svg | 1 + .../themes/material/img/emojis/svg/1f386.svg | 1 + .../themes/material/img/emojis/svg/1f387.svg | 1 + .../themes/material/img/emojis/svg/1f388.svg | 1 + .../themes/material/img/emojis/svg/1f389.svg | 1 + .../themes/material/img/emojis/svg/1f38a.svg | 1 + .../themes/material/img/emojis/svg/1f38b.svg | 1 + .../themes/material/img/emojis/svg/1f38c.svg | 1 + .../themes/material/img/emojis/svg/1f38d.svg | 1 + .../themes/material/img/emojis/svg/1f38e.svg | 1 + .../themes/material/img/emojis/svg/1f38f.svg | 1 + .../themes/material/img/emojis/svg/1f390.svg | 1 + .../themes/material/img/emojis/svg/1f391.svg | 1 + .../themes/material/img/emojis/svg/1f392.svg | 1 + .../themes/material/img/emojis/svg/1f393.svg | 1 + .../themes/material/img/emojis/svg/1f3a0.svg | 1 + .../themes/material/img/emojis/svg/1f3a1.svg | 1 + .../themes/material/img/emojis/svg/1f3a2.svg | 1 + .../themes/material/img/emojis/svg/1f3a3.svg | 1 + .../themes/material/img/emojis/svg/1f3a4.svg | 1 + .../themes/material/img/emojis/svg/1f3a5.svg | 1 + .../themes/material/img/emojis/svg/1f3a6.svg | 1 + .../themes/material/img/emojis/svg/1f3a7.svg | 1 + .../themes/material/img/emojis/svg/1f3a8.svg | 1 + .../themes/material/img/emojis/svg/1f3a9.svg | 1 + .../themes/material/img/emojis/svg/1f3aa.svg | 1 + .../themes/material/img/emojis/svg/1f3ab.svg | 1 + .../themes/material/img/emojis/svg/1f3ac.svg | 1 + .../themes/material/img/emojis/svg/1f3ad.svg | 1 + .../themes/material/img/emojis/svg/1f3ae.svg | 1 + .../themes/material/img/emojis/svg/1f3af.svg | 1 + .../themes/material/img/emojis/svg/1f3b0.svg | 1 + .../themes/material/img/emojis/svg/1f3b1.svg | 1 + .../themes/material/img/emojis/svg/1f3b2.svg | 1 + .../themes/material/img/emojis/svg/1f3b3.svg | 1 + .../themes/material/img/emojis/svg/1f3b4.svg | 1 + .../themes/material/img/emojis/svg/1f3b5.svg | 1 + .../themes/material/img/emojis/svg/1f3b6.svg | 1 + .../themes/material/img/emojis/svg/1f3b7.svg | 1 + .../themes/material/img/emojis/svg/1f3b8.svg | 1 + .../themes/material/img/emojis/svg/1f3b9.svg | 1 + .../themes/material/img/emojis/svg/1f3ba.svg | 1 + .../themes/material/img/emojis/svg/1f3bb.svg | 1 + .../themes/material/img/emojis/svg/1f3bc.svg | 1 + .../themes/material/img/emojis/svg/1f3bd.svg | 1 + .../themes/material/img/emojis/svg/1f3be.svg | 1 + .../themes/material/img/emojis/svg/1f3bf.svg | 1 + .../themes/material/img/emojis/svg/1f3c0.svg | 1 + .../themes/material/img/emojis/svg/1f3c1.svg | 1 + .../themes/material/img/emojis/svg/1f3c2.svg | 1 + .../themes/material/img/emojis/svg/1f3c3.svg | 1 + .../themes/material/img/emojis/svg/1f3c4.svg | 1 + .../themes/material/img/emojis/svg/1f3c6.svg | 1 + .../themes/material/img/emojis/svg/1f3c7.svg | 1 + .../themes/material/img/emojis/svg/1f3c8.svg | 1 + .../themes/material/img/emojis/svg/1f3c9.svg | 1 + .../themes/material/img/emojis/svg/1f3ca.svg | 1 + .../themes/material/img/emojis/svg/1f3e0.svg | 1 + .../themes/material/img/emojis/svg/1f3e1.svg | 1 + .../themes/material/img/emojis/svg/1f3e2.svg | 1 + .../themes/material/img/emojis/svg/1f3e3.svg | 1 + .../themes/material/img/emojis/svg/1f3e4.svg | 1 + .../themes/material/img/emojis/svg/1f3e5.svg | 1 + .../themes/material/img/emojis/svg/1f3e6.svg | 1 + .../themes/material/img/emojis/svg/1f3e7.svg | 1 + .../themes/material/img/emojis/svg/1f3e8.svg | 1 + .../themes/material/img/emojis/svg/1f3e9.svg | 1 + .../themes/material/img/emojis/svg/1f3ea.svg | 1 + .../themes/material/img/emojis/svg/1f3eb.svg | 1 + .../themes/material/img/emojis/svg/1f3ec.svg | 1 + .../themes/material/img/emojis/svg/1f3ed.svg | 1 + .../themes/material/img/emojis/svg/1f3ee.svg | 1 + .../themes/material/img/emojis/svg/1f3ef.svg | 1 + .../themes/material/img/emojis/svg/1f3f0.svg | 1 + .../themes/material/img/emojis/svg/1f400.svg | 1 + .../themes/material/img/emojis/svg/1f401.svg | 1 + .../themes/material/img/emojis/svg/1f402.svg | 1 + .../themes/material/img/emojis/svg/1f403.svg | 1 + .../themes/material/img/emojis/svg/1f404.svg | 1 + .../themes/material/img/emojis/svg/1f405.svg | 1 + .../themes/material/img/emojis/svg/1f406.svg | 1 + .../themes/material/img/emojis/svg/1f407.svg | 1 + .../themes/material/img/emojis/svg/1f408.svg | 1 + .../themes/material/img/emojis/svg/1f409.svg | 1 + .../themes/material/img/emojis/svg/1f40a.svg | 1 + .../themes/material/img/emojis/svg/1f40b.svg | 1 + .../themes/material/img/emojis/svg/1f40c.svg | 1 + .../themes/material/img/emojis/svg/1f40d.svg | 1 + .../themes/material/img/emojis/svg/1f40e.svg | 1 + .../themes/material/img/emojis/svg/1f40f.svg | 1 + .../themes/material/img/emojis/svg/1f410.svg | 1 + .../themes/material/img/emojis/svg/1f411.svg | 1 + .../themes/material/img/emojis/svg/1f412.svg | 1 + .../themes/material/img/emojis/svg/1f413.svg | 1 + .../themes/material/img/emojis/svg/1f414.svg | 1 + .../themes/material/img/emojis/svg/1f415.svg | 1 + .../themes/material/img/emojis/svg/1f416.svg | 1 + .../themes/material/img/emojis/svg/1f417.svg | 1 + .../themes/material/img/emojis/svg/1f418.svg | 1 + .../themes/material/img/emojis/svg/1f419.svg | 1 + .../themes/material/img/emojis/svg/1f41a.svg | 1 + .../themes/material/img/emojis/svg/1f41b.svg | 1 + .../themes/material/img/emojis/svg/1f41c.svg | 1 + .../themes/material/img/emojis/svg/1f41d.svg | 1 + .../themes/material/img/emojis/svg/1f41e.svg | 1 + .../themes/material/img/emojis/svg/1f41f.svg | 1 + .../themes/material/img/emojis/svg/1f420.svg | 1 + .../themes/material/img/emojis/svg/1f421.svg | 1 + .../themes/material/img/emojis/svg/1f422.svg | 1 + .../themes/material/img/emojis/svg/1f423.svg | 1 + .../themes/material/img/emojis/svg/1f424.svg | 1 + .../themes/material/img/emojis/svg/1f425.svg | 1 + .../themes/material/img/emojis/svg/1f426.svg | 1 + .../themes/material/img/emojis/svg/1f427.svg | 1 + .../themes/material/img/emojis/svg/1f428.svg | 1 + .../themes/material/img/emojis/svg/1f429.svg | 1 + .../themes/material/img/emojis/svg/1f42a.svg | 1 + .../themes/material/img/emojis/svg/1f42b.svg | 1 + .../themes/material/img/emojis/svg/1f42c.svg | 1 + .../themes/material/img/emojis/svg/1f42d.svg | 1 + .../themes/material/img/emojis/svg/1f42e.svg | 1 + .../themes/material/img/emojis/svg/1f42f.svg | 1 + .../themes/material/img/emojis/svg/1f430.svg | 1 + .../themes/material/img/emojis/svg/1f431.svg | 1 + .../themes/material/img/emojis/svg/1f432.svg | 1 + .../themes/material/img/emojis/svg/1f433.svg | 1 + .../themes/material/img/emojis/svg/1f434.svg | 1 + .../themes/material/img/emojis/svg/1f435.svg | 1 + .../themes/material/img/emojis/svg/1f436.svg | 1 + .../themes/material/img/emojis/svg/1f437.svg | 1 + .../themes/material/img/emojis/svg/1f438.svg | 1 + .../themes/material/img/emojis/svg/1f439.svg | 1 + .../themes/material/img/emojis/svg/1f43a.svg | 1 + .../themes/material/img/emojis/svg/1f43b.svg | 1 + .../themes/material/img/emojis/svg/1f43c.svg | 1 + .../themes/material/img/emojis/svg/1f43d.svg | 1 + .../themes/material/img/emojis/svg/1f43e.svg | 1 + .../themes/material/img/emojis/svg/1f440.svg | 1 + .../themes/material/img/emojis/svg/1f442.svg | 1 + .../themes/material/img/emojis/svg/1f443.svg | 1 + .../themes/material/img/emojis/svg/1f444.svg | 1 + .../themes/material/img/emojis/svg/1f445.svg | 1 + .../themes/material/img/emojis/svg/1f446.svg | 1 + .../themes/material/img/emojis/svg/1f447.svg | 1 + .../themes/material/img/emojis/svg/1f448.svg | 1 + .../themes/material/img/emojis/svg/1f449.svg | 1 + .../themes/material/img/emojis/svg/1f44a.svg | 1 + .../themes/material/img/emojis/svg/1f44b.svg | 1 + .../themes/material/img/emojis/svg/1f44c.svg | 1 + .../themes/material/img/emojis/svg/1f44d.svg | 1 + .../themes/material/img/emojis/svg/1f44e.svg | 1 + .../themes/material/img/emojis/svg/1f44f.svg | 1 + .../themes/material/img/emojis/svg/1f450.svg | 1 + .../themes/material/img/emojis/svg/1f451.svg | 1 + .../themes/material/img/emojis/svg/1f452.svg | 1 + .../themes/material/img/emojis/svg/1f453.svg | 1 + .../themes/material/img/emojis/svg/1f454.svg | 1 + .../themes/material/img/emojis/svg/1f455.svg | 1 + .../themes/material/img/emojis/svg/1f456.svg | 1 + .../themes/material/img/emojis/svg/1f457.svg | 1 + .../themes/material/img/emojis/svg/1f458.svg | 1 + .../themes/material/img/emojis/svg/1f459.svg | 1 + .../themes/material/img/emojis/svg/1f45a.svg | 1 + .../themes/material/img/emojis/svg/1f45b.svg | 1 + .../themes/material/img/emojis/svg/1f45c.svg | 1 + .../themes/material/img/emojis/svg/1f45d.svg | 1 + .../themes/material/img/emojis/svg/1f45e.svg | 1 + .../themes/material/img/emojis/svg/1f45f.svg | 1 + .../themes/material/img/emojis/svg/1f460.svg | 1 + .../themes/material/img/emojis/svg/1f461.svg | 1 + .../themes/material/img/emojis/svg/1f462.svg | 1 + .../themes/material/img/emojis/svg/1f463.svg | 1 + .../themes/material/img/emojis/svg/1f464.svg | 1 + .../themes/material/img/emojis/svg/1f465.svg | 1 + .../themes/material/img/emojis/svg/1f466.svg | 1 + .../themes/material/img/emojis/svg/1f467.svg | 1 + .../themes/material/img/emojis/svg/1f468.svg | 1 + .../themes/material/img/emojis/svg/1f469.svg | 1 + .../themes/material/img/emojis/svg/1f46a.svg | 1 + .../themes/material/img/emojis/svg/1f46b.svg | 1 + .../themes/material/img/emojis/svg/1f46c.svg | 1 + .../themes/material/img/emojis/svg/1f46d.svg | 1 + .../themes/material/img/emojis/svg/1f46e.svg | 1 + .../themes/material/img/emojis/svg/1f46f.svg | 1 + .../themes/material/img/emojis/svg/1f470.svg | 1 + .../themes/material/img/emojis/svg/1f471.svg | 1 + .../themes/material/img/emojis/svg/1f472.svg | 1 + .../themes/material/img/emojis/svg/1f473.svg | 1 + .../themes/material/img/emojis/svg/1f474.svg | 1 + .../themes/material/img/emojis/svg/1f475.svg | 1 + .../themes/material/img/emojis/svg/1f476.svg | 1 + .../themes/material/img/emojis/svg/1f477.svg | 1 + .../themes/material/img/emojis/svg/1f478.svg | 1 + .../themes/material/img/emojis/svg/1f479.svg | 1 + .../themes/material/img/emojis/svg/1f47a.svg | 1 + .../themes/material/img/emojis/svg/1f47b.svg | 1 + .../themes/material/img/emojis/svg/1f47c.svg | 1 + .../themes/material/img/emojis/svg/1f47d.svg | 1 + .../themes/material/img/emojis/svg/1f47e.svg | 1 + .../themes/material/img/emojis/svg/1f47f.svg | 1 + .../themes/material/img/emojis/svg/1f480.svg | 1 + .../themes/material/img/emojis/svg/1f481.svg | 1 + .../themes/material/img/emojis/svg/1f482.svg | 1 + .../themes/material/img/emojis/svg/1f483.svg | 1 + .../themes/material/img/emojis/svg/1f484.svg | 1 + .../themes/material/img/emojis/svg/1f485.svg | 1 + .../themes/material/img/emojis/svg/1f486.svg | 1 + .../themes/material/img/emojis/svg/1f487.svg | 1 + .../themes/material/img/emojis/svg/1f488.svg | 1 + .../themes/material/img/emojis/svg/1f489.svg | 1 + .../themes/material/img/emojis/svg/1f48a.svg | 1 + .../themes/material/img/emojis/svg/1f48b.svg | 1 + .../themes/material/img/emojis/svg/1f48c.svg | 1 + .../themes/material/img/emojis/svg/1f48d.svg | 1 + .../themes/material/img/emojis/svg/1f48e.svg | 1 + .../themes/material/img/emojis/svg/1f48f.svg | 1 + .../themes/material/img/emojis/svg/1f490.svg | 1 + .../themes/material/img/emojis/svg/1f491.svg | 1 + .../themes/material/img/emojis/svg/1f492.svg | 1 + .../themes/material/img/emojis/svg/1f493.svg | 1 + .../themes/material/img/emojis/svg/1f494.svg | 1 + .../themes/material/img/emojis/svg/1f495.svg | 1 + .../themes/material/img/emojis/svg/1f496.svg | 1 + .../themes/material/img/emojis/svg/1f497.svg | 1 + .../themes/material/img/emojis/svg/1f498.svg | 1 + .../themes/material/img/emojis/svg/1f499.svg | 1 + .../themes/material/img/emojis/svg/1f49a.svg | 1 + .../themes/material/img/emojis/svg/1f49b.svg | 1 + .../themes/material/img/emojis/svg/1f49c.svg | 1 + .../themes/material/img/emojis/svg/1f49d.svg | 1 + .../themes/material/img/emojis/svg/1f49e.svg | 1 + .../themes/material/img/emojis/svg/1f49f.svg | 1 + .../themes/material/img/emojis/svg/1f4a0.svg | 1 + .../themes/material/img/emojis/svg/1f4a1.svg | 1 + .../themes/material/img/emojis/svg/1f4a2.svg | 1 + .../themes/material/img/emojis/svg/1f4a3.svg | 1 + .../themes/material/img/emojis/svg/1f4a4.svg | 1 + .../themes/material/img/emojis/svg/1f4a5.svg | 1 + .../themes/material/img/emojis/svg/1f4a6.svg | 1 + .../themes/material/img/emojis/svg/1f4a7.svg | 1 + .../themes/material/img/emojis/svg/1f4a8.svg | 1 + .../themes/material/img/emojis/svg/1f4a9.svg | 1 + .../themes/material/img/emojis/svg/1f4aa.svg | 1 + .../themes/material/img/emojis/svg/1f4ab.svg | 1 + .../themes/material/img/emojis/svg/1f4ac.svg | 1 + .../themes/material/img/emojis/svg/1f4ad.svg | 1 + .../themes/material/img/emojis/svg/1f4ae.svg | 1 + .../themes/material/img/emojis/svg/1f4af.svg | 1 + .../themes/material/img/emojis/svg/1f4b0.svg | 1 + .../themes/material/img/emojis/svg/1f4b1.svg | 1 + .../themes/material/img/emojis/svg/1f4b2.svg | 1 + .../themes/material/img/emojis/svg/1f4b3.svg | 1 + .../themes/material/img/emojis/svg/1f4b4.svg | 1 + .../themes/material/img/emojis/svg/1f4b5.svg | 1 + .../themes/material/img/emojis/svg/1f4b6.svg | 1 + .../themes/material/img/emojis/svg/1f4b7.svg | 1 + .../themes/material/img/emojis/svg/1f4b8.svg | 1 + .../themes/material/img/emojis/svg/1f4b9.svg | 1 + .../themes/material/img/emojis/svg/1f4ba.svg | 1 + .../themes/material/img/emojis/svg/1f4bb.svg | 1 + .../themes/material/img/emojis/svg/1f4bc.svg | 1 + .../themes/material/img/emojis/svg/1f4bd.svg | 1 + .../themes/material/img/emojis/svg/1f4be.svg | 1 + .../themes/material/img/emojis/svg/1f4bf.svg | 1 + .../themes/material/img/emojis/svg/1f4c0.svg | 1 + .../themes/material/img/emojis/svg/1f4c1.svg | 1 + .../themes/material/img/emojis/svg/1f4c2.svg | 1 + .../themes/material/img/emojis/svg/1f4c3.svg | 1 + .../themes/material/img/emojis/svg/1f4c4.svg | 1 + .../themes/material/img/emojis/svg/1f4c5.svg | 1 + .../themes/material/img/emojis/svg/1f4c6.svg | 1 + .../themes/material/img/emojis/svg/1f4c7.svg | 1 + .../themes/material/img/emojis/svg/1f4c8.svg | 1 + .../themes/material/img/emojis/svg/1f4c9.svg | 1 + .../themes/material/img/emojis/svg/1f4ca.svg | 1 + .../themes/material/img/emojis/svg/1f4cb.svg | 1 + .../themes/material/img/emojis/svg/1f4cc.svg | 1 + .../themes/material/img/emojis/svg/1f4cd.svg | 1 + .../themes/material/img/emojis/svg/1f4ce.svg | 1 + .../themes/material/img/emojis/svg/1f4cf.svg | 1 + .../themes/material/img/emojis/svg/1f4d0.svg | 1 + .../themes/material/img/emojis/svg/1f4d1.svg | 1 + .../themes/material/img/emojis/svg/1f4d2.svg | 1 + .../themes/material/img/emojis/svg/1f4d3.svg | 1 + .../themes/material/img/emojis/svg/1f4d4.svg | 1 + .../themes/material/img/emojis/svg/1f4d5.svg | 1 + .../themes/material/img/emojis/svg/1f4d6.svg | 1 + .../themes/material/img/emojis/svg/1f4d7.svg | 1 + .../themes/material/img/emojis/svg/1f4d8.svg | 1 + .../themes/material/img/emojis/svg/1f4d9.svg | 1 + .../themes/material/img/emojis/svg/1f4da.svg | 1 + .../themes/material/img/emojis/svg/1f4db.svg | 1 + .../themes/material/img/emojis/svg/1f4dc.svg | 1 + .../themes/material/img/emojis/svg/1f4dd.svg | 1 + .../themes/material/img/emojis/svg/1f4de.svg | 1 + .../themes/material/img/emojis/svg/1f4df.svg | 1 + .../themes/material/img/emojis/svg/1f4e0.svg | 1 + .../themes/material/img/emojis/svg/1f4e1.svg | 1 + .../themes/material/img/emojis/svg/1f4e2.svg | 1 + .../themes/material/img/emojis/svg/1f4e3.svg | 1 + .../themes/material/img/emojis/svg/1f4e4.svg | 1 + .../themes/material/img/emojis/svg/1f4e5.svg | 1 + .../themes/material/img/emojis/svg/1f4e6.svg | 1 + .../themes/material/img/emojis/svg/1f4e7.svg | 1 + .../themes/material/img/emojis/svg/1f4e8.svg | 1 + .../themes/material/img/emojis/svg/1f4e9.svg | 1 + .../themes/material/img/emojis/svg/1f4ea.svg | 1 + .../themes/material/img/emojis/svg/1f4eb.svg | 1 + .../themes/material/img/emojis/svg/1f4ec.svg | 1 + .../themes/material/img/emojis/svg/1f4ed.svg | 1 + .../themes/material/img/emojis/svg/1f4ee.svg | 1 + .../themes/material/img/emojis/svg/1f4ef.svg | 1 + .../themes/material/img/emojis/svg/1f4f0.svg | 1 + .../themes/material/img/emojis/svg/1f4f1.svg | 1 + .../themes/material/img/emojis/svg/1f4f2.svg | 1 + .../themes/material/img/emojis/svg/1f4f3.svg | 1 + .../themes/material/img/emojis/svg/1f4f4.svg | 1 + .../themes/material/img/emojis/svg/1f4f5.svg | 1 + .../themes/material/img/emojis/svg/1f4f6.svg | 1 + .../themes/material/img/emojis/svg/1f4f7.svg | 1 + .../themes/material/img/emojis/svg/1f4f9.svg | 1 + .../themes/material/img/emojis/svg/1f4fa.svg | 1 + .../themes/material/img/emojis/svg/1f4fb.svg | 1 + .../themes/material/img/emojis/svg/1f4fc.svg | 1 + .../themes/material/img/emojis/svg/1f500.svg | 1 + .../themes/material/img/emojis/svg/1f501.svg | 1 + .../themes/material/img/emojis/svg/1f502.svg | 1 + .../themes/material/img/emojis/svg/1f503.svg | 1 + .../themes/material/img/emojis/svg/1f504.svg | 1 + .../themes/material/img/emojis/svg/1f505.svg | 1 + .../themes/material/img/emojis/svg/1f506.svg | 1 + .../themes/material/img/emojis/svg/1f507.svg | 1 + .../themes/material/img/emojis/svg/1f508.svg | 1 + .../themes/material/img/emojis/svg/1f509.svg | 1 + .../themes/material/img/emojis/svg/1f50a.svg | 1 + .../themes/material/img/emojis/svg/1f50b.svg | 1 + .../themes/material/img/emojis/svg/1f50c.svg | 1 + .../themes/material/img/emojis/svg/1f50d.svg | 1 + .../themes/material/img/emojis/svg/1f50e.svg | 1 + .../themes/material/img/emojis/svg/1f50f.svg | 1 + .../themes/material/img/emojis/svg/1f510.svg | 1 + .../themes/material/img/emojis/svg/1f511.svg | 1 + .../themes/material/img/emojis/svg/1f512.svg | 1 + .../themes/material/img/emojis/svg/1f513.svg | 1 + .../themes/material/img/emojis/svg/1f514.svg | 1 + .../themes/material/img/emojis/svg/1f515.svg | 1 + .../themes/material/img/emojis/svg/1f516.svg | 1 + .../themes/material/img/emojis/svg/1f517.svg | 1 + .../themes/material/img/emojis/svg/1f518.svg | 1 + .../themes/material/img/emojis/svg/1f519.svg | 1 + .../themes/material/img/emojis/svg/1f51a.svg | 1 + .../themes/material/img/emojis/svg/1f51b.svg | 1 + .../themes/material/img/emojis/svg/1f51c.svg | 1 + .../themes/material/img/emojis/svg/1f51d.svg | 1 + .../themes/material/img/emojis/svg/1f51e.svg | 1 + .../themes/material/img/emojis/svg/1f51f.svg | 1 + .../themes/material/img/emojis/svg/1f520.svg | 1 + .../themes/material/img/emojis/svg/1f521.svg | 1 + .../themes/material/img/emojis/svg/1f522.svg | 1 + .../themes/material/img/emojis/svg/1f523.svg | 1 + .../themes/material/img/emojis/svg/1f524.svg | 1 + .../themes/material/img/emojis/svg/1f525.svg | 1 + .../themes/material/img/emojis/svg/1f526.svg | 1 + .../themes/material/img/emojis/svg/1f527.svg | 1 + .../themes/material/img/emojis/svg/1f528.svg | 1 + .../themes/material/img/emojis/svg/1f529.svg | 1 + .../themes/material/img/emojis/svg/1f52a.svg | 1 + .../themes/material/img/emojis/svg/1f52b.svg | 1 + .../themes/material/img/emojis/svg/1f52c.svg | 1 + .../themes/material/img/emojis/svg/1f52d.svg | 1 + .../themes/material/img/emojis/svg/1f52e.svg | 1 + .../themes/material/img/emojis/svg/1f52f.svg | 1 + .../themes/material/img/emojis/svg/1f530.svg | 1 + .../themes/material/img/emojis/svg/1f531.svg | 1 + .../themes/material/img/emojis/svg/1f532.svg | 1 + .../themes/material/img/emojis/svg/1f533.svg | 1 + .../themes/material/img/emojis/svg/1f534.svg | 1 + .../themes/material/img/emojis/svg/1f535.svg | 1 + .../themes/material/img/emojis/svg/1f536.svg | 1 + .../themes/material/img/emojis/svg/1f537.svg | 1 + .../themes/material/img/emojis/svg/1f538.svg | 1 + .../themes/material/img/emojis/svg/1f539.svg | 1 + .../themes/material/img/emojis/svg/1f53a.svg | 1 + .../themes/material/img/emojis/svg/1f53b.svg | 1 + .../themes/material/img/emojis/svg/1f53c.svg | 1 + .../themes/material/img/emojis/svg/1f53d.svg | 1 + .../themes/material/img/emojis/svg/1f550.svg | 1 + .../themes/material/img/emojis/svg/1f551.svg | 1 + .../themes/material/img/emojis/svg/1f552.svg | 1 + .../themes/material/img/emojis/svg/1f553.svg | 1 + .../themes/material/img/emojis/svg/1f554.svg | 1 + .../themes/material/img/emojis/svg/1f555.svg | 1 + .../themes/material/img/emojis/svg/1f556.svg | 1 + .../themes/material/img/emojis/svg/1f557.svg | 1 + .../themes/material/img/emojis/svg/1f558.svg | 1 + .../themes/material/img/emojis/svg/1f559.svg | 1 + .../themes/material/img/emojis/svg/1f55a.svg | 1 + .../themes/material/img/emojis/svg/1f55b.svg | 1 + .../themes/material/img/emojis/svg/1f55c.svg | 1 + .../themes/material/img/emojis/svg/1f55d.svg | 1 + .../themes/material/img/emojis/svg/1f55e.svg | 1 + .../themes/material/img/emojis/svg/1f55f.svg | 1 + .../themes/material/img/emojis/svg/1f560.svg | 1 + .../themes/material/img/emojis/svg/1f561.svg | 1 + .../themes/material/img/emojis/svg/1f562.svg | 1 + .../themes/material/img/emojis/svg/1f563.svg | 1 + .../themes/material/img/emojis/svg/1f564.svg | 1 + .../themes/material/img/emojis/svg/1f565.svg | 1 + .../themes/material/img/emojis/svg/1f566.svg | 1 + .../themes/material/img/emojis/svg/1f567.svg | 1 + .../themes/material/img/emojis/svg/1f5fb.svg | 1 + .../themes/material/img/emojis/svg/1f5fc.svg | 1 + .../themes/material/img/emojis/svg/1f5fd.svg | 1 + .../themes/material/img/emojis/svg/1f5fe.svg | 1 + .../themes/material/img/emojis/svg/1f5ff.svg | 1 + .../themes/material/img/emojis/svg/1f600.svg | 1 + .../themes/material/img/emojis/svg/1f601.svg | 1 + .../themes/material/img/emojis/svg/1f602.svg | 1 + .../themes/material/img/emojis/svg/1f603.svg | 1 + .../themes/material/img/emojis/svg/1f604.svg | 1 + .../themes/material/img/emojis/svg/1f605.svg | 1 + .../themes/material/img/emojis/svg/1f606.svg | 1 + .../themes/material/img/emojis/svg/1f607.svg | 1 + .../themes/material/img/emojis/svg/1f608.svg | 1 + .../themes/material/img/emojis/svg/1f609.svg | 1 + .../themes/material/img/emojis/svg/1f60a.svg | 1 + .../themes/material/img/emojis/svg/1f60b.svg | 1 + .../themes/material/img/emojis/svg/1f60c.svg | 1 + .../themes/material/img/emojis/svg/1f60d.svg | 1 + .../themes/material/img/emojis/svg/1f60e.svg | 1 + .../themes/material/img/emojis/svg/1f60f.svg | 1 + .../themes/material/img/emojis/svg/1f610.svg | 1 + .../themes/material/img/emojis/svg/1f611.svg | 1 + .../themes/material/img/emojis/svg/1f612.svg | 1 + .../themes/material/img/emojis/svg/1f613.svg | 1 + .../themes/material/img/emojis/svg/1f614.svg | 1 + .../themes/material/img/emojis/svg/1f615.svg | 1 + .../themes/material/img/emojis/svg/1f616.svg | 1 + .../themes/material/img/emojis/svg/1f617.svg | 1 + .../themes/material/img/emojis/svg/1f618.svg | 1 + .../themes/material/img/emojis/svg/1f619.svg | 1 + .../themes/material/img/emojis/svg/1f61a.svg | 1 + .../themes/material/img/emojis/svg/1f61b.svg | 1 + .../themes/material/img/emojis/svg/1f61c.svg | 1 + .../themes/material/img/emojis/svg/1f61d.svg | 1 + .../themes/material/img/emojis/svg/1f61e.svg | 1 + .../themes/material/img/emojis/svg/1f61f.svg | 1 + .../themes/material/img/emojis/svg/1f620.svg | 1 + .../themes/material/img/emojis/svg/1f621.svg | 1 + .../themes/material/img/emojis/svg/1f622.svg | 1 + .../themes/material/img/emojis/svg/1f623.svg | 1 + .../themes/material/img/emojis/svg/1f624.svg | 1 + .../themes/material/img/emojis/svg/1f625.svg | 1 + .../themes/material/img/emojis/svg/1f626.svg | 1 + .../themes/material/img/emojis/svg/1f627.svg | 1 + .../themes/material/img/emojis/svg/1f628.svg | 1 + .../themes/material/img/emojis/svg/1f629.svg | 1 + .../themes/material/img/emojis/svg/1f62a.svg | 1 + .../themes/material/img/emojis/svg/1f62b.svg | 1 + .../themes/material/img/emojis/svg/1f62c.svg | 1 + .../themes/material/img/emojis/svg/1f62d.svg | 1 + .../themes/material/img/emojis/svg/1f62e.svg | 1 + .../themes/material/img/emojis/svg/1f62f.svg | 1 + .../themes/material/img/emojis/svg/1f630.svg | 1 + .../themes/material/img/emojis/svg/1f631.svg | 1 + .../themes/material/img/emojis/svg/1f632.svg | 1 + .../themes/material/img/emojis/svg/1f633.svg | 1 + .../themes/material/img/emojis/svg/1f634.svg | 1 + .../themes/material/img/emojis/svg/1f635.svg | 1 + .../themes/material/img/emojis/svg/1f636.svg | 1 + .../themes/material/img/emojis/svg/1f637.svg | 1 + .../themes/material/img/emojis/svg/1f638.svg | 1 + .../themes/material/img/emojis/svg/1f639.svg | 1 + .../themes/material/img/emojis/svg/1f63a.svg | 1 + .../themes/material/img/emojis/svg/1f63b.svg | 1 + .../themes/material/img/emojis/svg/1f63c.svg | 1 + .../themes/material/img/emojis/svg/1f63d.svg | 1 + .../themes/material/img/emojis/svg/1f63e.svg | 1 + .../themes/material/img/emojis/svg/1f63f.svg | 1 + .../themes/material/img/emojis/svg/1f640.svg | 1 + .../themes/material/img/emojis/svg/1f641.svg | 1 + .../themes/material/img/emojis/svg/1f642.svg | 1 + .../themes/material/img/emojis/svg/1f645.svg | 1 + .../themes/material/img/emojis/svg/1f646.svg | 1 + .../themes/material/img/emojis/svg/1f647.svg | 1 + .../themes/material/img/emojis/svg/1f648.svg | 1 + .../themes/material/img/emojis/svg/1f649.svg | 1 + .../themes/material/img/emojis/svg/1f64a.svg | 1 + .../themes/material/img/emojis/svg/1f64b.svg | 1 + .../themes/material/img/emojis/svg/1f64c.svg | 1 + .../themes/material/img/emojis/svg/1f64d.svg | 1 + .../themes/material/img/emojis/svg/1f64e.svg | 1 + .../themes/material/img/emojis/svg/1f64f.svg | 1 + .../themes/material/img/emojis/svg/1f680.svg | 1 + .../themes/material/img/emojis/svg/1f681.svg | 1 + .../themes/material/img/emojis/svg/1f682.svg | 1 + .../themes/material/img/emojis/svg/1f683.svg | 1 + .../themes/material/img/emojis/svg/1f684.svg | 1 + .../themes/material/img/emojis/svg/1f685.svg | 1 + .../themes/material/img/emojis/svg/1f686.svg | 1 + .../themes/material/img/emojis/svg/1f687.svg | 1 + .../themes/material/img/emojis/svg/1f688.svg | 1 + .../themes/material/img/emojis/svg/1f689.svg | 1 + .../themes/material/img/emojis/svg/1f68a.svg | 1 + .../themes/material/img/emojis/svg/1f68b.svg | 1 + .../themes/material/img/emojis/svg/1f68c.svg | 1 + .../themes/material/img/emojis/svg/1f68d.svg | 1 + .../themes/material/img/emojis/svg/1f68e.svg | 1 + .../themes/material/img/emojis/svg/1f68f.svg | 1 + .../themes/material/img/emojis/svg/1f690.svg | 1 + .../themes/material/img/emojis/svg/1f691.svg | 1 + .../themes/material/img/emojis/svg/1f692.svg | 1 + .../themes/material/img/emojis/svg/1f693.svg | 1 + .../themes/material/img/emojis/svg/1f694.svg | 1 + .../themes/material/img/emojis/svg/1f695.svg | 1 + .../themes/material/img/emojis/svg/1f696.svg | 1 + .../themes/material/img/emojis/svg/1f697.svg | 1 + .../themes/material/img/emojis/svg/1f698.svg | 1 + .../themes/material/img/emojis/svg/1f699.svg | 1 + .../themes/material/img/emojis/svg/1f69a.svg | 1 + .../themes/material/img/emojis/svg/1f69b.svg | 1 + .../themes/material/img/emojis/svg/1f69c.svg | 1 + .../themes/material/img/emojis/svg/1f69d.svg | 1 + .../themes/material/img/emojis/svg/1f69e.svg | 1 + .../themes/material/img/emojis/svg/1f69f.svg | 1 + .../themes/material/img/emojis/svg/1f6a0.svg | 1 + .../themes/material/img/emojis/svg/1f6a1.svg | 1 + .../themes/material/img/emojis/svg/1f6a2.svg | 1 + .../themes/material/img/emojis/svg/1f6a3.svg | 1 + .../themes/material/img/emojis/svg/1f6a4.svg | 1 + .../themes/material/img/emojis/svg/1f6a5.svg | 1 + .../themes/material/img/emojis/svg/1f6a6.svg | 1 + .../themes/material/img/emojis/svg/1f6a7.svg | 1 + .../themes/material/img/emojis/svg/1f6a8.svg | 1 + .../themes/material/img/emojis/svg/1f6a9.svg | 1 + .../themes/material/img/emojis/svg/1f6aa.svg | 1 + .../themes/material/img/emojis/svg/1f6ab.svg | 1 + .../themes/material/img/emojis/svg/1f6ac.svg | 1 + .../themes/material/img/emojis/svg/1f6ad.svg | 1 + .../themes/material/img/emojis/svg/1f6ae.svg | 1 + .../themes/material/img/emojis/svg/1f6af.svg | 1 + .../themes/material/img/emojis/svg/1f6b0.svg | 1 + .../themes/material/img/emojis/svg/1f6b1.svg | 1 + .../themes/material/img/emojis/svg/1f6b2.svg | 1 + .../themes/material/img/emojis/svg/1f6b3.svg | 1 + .../themes/material/img/emojis/svg/1f6b4.svg | 1 + .../themes/material/img/emojis/svg/1f6b5.svg | 1 + .../themes/material/img/emojis/svg/1f6b6.svg | 1 + .../themes/material/img/emojis/svg/1f6b7.svg | 1 + .../themes/material/img/emojis/svg/1f6b8.svg | 1 + .../themes/material/img/emojis/svg/1f6b9.svg | 1 + .../themes/material/img/emojis/svg/1f6ba.svg | 1 + .../themes/material/img/emojis/svg/1f6bb.svg | 1 + .../themes/material/img/emojis/svg/1f6bc.svg | 1 + .../themes/material/img/emojis/svg/1f6bd.svg | 1 + .../themes/material/img/emojis/svg/1f6be.svg | 1 + .../themes/material/img/emojis/svg/1f6bf.svg | 1 + .../themes/material/img/emojis/svg/1f6c0.svg | 1 + .../themes/material/img/emojis/svg/1f6c1.svg | 1 + .../themes/material/img/emojis/svg/1f6c2.svg | 1 + .../themes/material/img/emojis/svg/1f6c3.svg | 1 + .../themes/material/img/emojis/svg/1f6c4.svg | 1 + .../themes/material/img/emojis/svg/1f6c5.svg | 1 + .../themes/material/img/emojis/svg/203c.svg | 1 + .../themes/material/img/emojis/svg/2049.svg | 1 + .../themes/material/img/emojis/svg/2122.svg | 1 + .../themes/material/img/emojis/svg/2139.svg | 1 + .../themes/material/img/emojis/svg/2194.svg | 1 + .../themes/material/img/emojis/svg/2195.svg | 1 + .../themes/material/img/emojis/svg/2196.svg | 1 + .../themes/material/img/emojis/svg/2197.svg | 1 + .../themes/material/img/emojis/svg/2198.svg | 1 + .../themes/material/img/emojis/svg/2199.svg | 1 + .../themes/material/img/emojis/svg/21a9.svg | 1 + .../themes/material/img/emojis/svg/21aa.svg | 1 + .../material/img/emojis/svg/23-20e3.svg | 1 + .../themes/material/img/emojis/svg/231a.svg | 1 + .../themes/material/img/emojis/svg/231b.svg | 1 + .../themes/material/img/emojis/svg/23e9.svg | 1 + .../themes/material/img/emojis/svg/23ea.svg | 1 + .../themes/material/img/emojis/svg/23eb.svg | 1 + .../themes/material/img/emojis/svg/23ec.svg | 1 + .../themes/material/img/emojis/svg/23f0.svg | 1 + .../themes/material/img/emojis/svg/23f3.svg | 1 + .../themes/material/img/emojis/svg/24c2.svg | 1 + .../themes/material/img/emojis/svg/25aa.svg | 1 + .../themes/material/img/emojis/svg/25ab.svg | 1 + .../themes/material/img/emojis/svg/25b6.svg | 1 + .../themes/material/img/emojis/svg/25c0.svg | 1 + .../themes/material/img/emojis/svg/25fb.svg | 1 + .../themes/material/img/emojis/svg/25fc.svg | 1 + .../themes/material/img/emojis/svg/25fd.svg | 1 + .../themes/material/img/emojis/svg/25fe.svg | 1 + .../themes/material/img/emojis/svg/2600.svg | 1 + .../themes/material/img/emojis/svg/2601.svg | 1 + .../themes/material/img/emojis/svg/260e.svg | 1 + .../themes/material/img/emojis/svg/2611.svg | 1 + .../themes/material/img/emojis/svg/2614.svg | 1 + .../themes/material/img/emojis/svg/2615.svg | 1 + .../themes/material/img/emojis/svg/261d.svg | 1 + .../themes/material/img/emojis/svg/263a.svg | 1 + .../themes/material/img/emojis/svg/2648.svg | 1 + .../themes/material/img/emojis/svg/2649.svg | 1 + .../themes/material/img/emojis/svg/264a.svg | 1 + .../themes/material/img/emojis/svg/264b.svg | 1 + .../themes/material/img/emojis/svg/264c.svg | 1 + .../themes/material/img/emojis/svg/264d.svg | 1 + .../themes/material/img/emojis/svg/264e.svg | 1 + .../themes/material/img/emojis/svg/264f.svg | 1 + .../themes/material/img/emojis/svg/2650.svg | 1 + .../themes/material/img/emojis/svg/2651.svg | 1 + .../themes/material/img/emojis/svg/2652.svg | 1 + .../themes/material/img/emojis/svg/2653.svg | 1 + .../themes/material/img/emojis/svg/2660.svg | 1 + .../themes/material/img/emojis/svg/2663.svg | 1 + .../themes/material/img/emojis/svg/2665.svg | 1 + .../themes/material/img/emojis/svg/2666.svg | 1 + .../themes/material/img/emojis/svg/2668.svg | 1 + .../themes/material/img/emojis/svg/267b.svg | 1 + .../themes/material/img/emojis/svg/267f.svg | 1 + .../themes/material/img/emojis/svg/2693.svg | 1 + .../themes/material/img/emojis/svg/26a0.svg | 1 + .../themes/material/img/emojis/svg/26a1.svg | 1 + .../themes/material/img/emojis/svg/26aa.svg | 1 + .../themes/material/img/emojis/svg/26ab.svg | 1 + .../themes/material/img/emojis/svg/26bd.svg | 1 + .../themes/material/img/emojis/svg/26be.svg | 1 + .../themes/material/img/emojis/svg/26c4.svg | 1 + .../themes/material/img/emojis/svg/26c5.svg | 1 + .../themes/material/img/emojis/svg/26ce.svg | 1 + .../themes/material/img/emojis/svg/26d4.svg | 1 + .../themes/material/img/emojis/svg/26ea.svg | 1 + .../themes/material/img/emojis/svg/26f2.svg | 1 + .../themes/material/img/emojis/svg/26f3.svg | 1 + .../themes/material/img/emojis/svg/26f5.svg | 1 + .../themes/material/img/emojis/svg/26fa.svg | 1 + .../themes/material/img/emojis/svg/26fd.svg | 1 + .../themes/material/img/emojis/svg/2702.svg | 1 + .../themes/material/img/emojis/svg/2705.svg | 1 + .../themes/material/img/emojis/svg/2708.svg | 1 + .../themes/material/img/emojis/svg/2709.svg | 1 + .../themes/material/img/emojis/svg/270a.svg | 1 + .../themes/material/img/emojis/svg/270b.svg | 1 + .../themes/material/img/emojis/svg/270c.svg | 1 + .../themes/material/img/emojis/svg/270f.svg | 1 + .../themes/material/img/emojis/svg/2712.svg | 1 + .../themes/material/img/emojis/svg/2714.svg | 1 + .../themes/material/img/emojis/svg/2716.svg | 1 + .../themes/material/img/emojis/svg/2728.svg | 1 + .../themes/material/img/emojis/svg/2733.svg | 1 + .../themes/material/img/emojis/svg/2734.svg | 1 + .../themes/material/img/emojis/svg/2744.svg | 1 + .../themes/material/img/emojis/svg/2747.svg | 1 + .../themes/material/img/emojis/svg/274c.svg | 1 + .../themes/material/img/emojis/svg/274e.svg | 1 + .../themes/material/img/emojis/svg/2753.svg | 1 + .../themes/material/img/emojis/svg/2754.svg | 1 + .../themes/material/img/emojis/svg/2755.svg | 1 + .../themes/material/img/emojis/svg/2757.svg | 1 + .../themes/material/img/emojis/svg/2764.svg | 1 + .../themes/material/img/emojis/svg/2795.svg | 1 + .../themes/material/img/emojis/svg/2796.svg | 1 + .../themes/material/img/emojis/svg/2797.svg | 1 + .../themes/material/img/emojis/svg/27a1.svg | 1 + .../themes/material/img/emojis/svg/27b0.svg | 1 + .../themes/material/img/emojis/svg/27bf.svg | 1 + .../themes/material/img/emojis/svg/2934.svg | 1 + .../themes/material/img/emojis/svg/2935.svg | 1 + .../themes/material/img/emojis/svg/2b05.svg | 1 + .../themes/material/img/emojis/svg/2b06.svg | 1 + .../themes/material/img/emojis/svg/2b07.svg | 1 + .../themes/material/img/emojis/svg/2b1b.svg | 1 + .../themes/material/img/emojis/svg/2b1c.svg | 1 + .../themes/material/img/emojis/svg/2b50.svg | 1 + .../themes/material/img/emojis/svg/2b55.svg | 1 + .../material/img/emojis/svg/30-20e3.svg | 1 + .../themes/material/img/emojis/svg/3030.svg | 1 + .../themes/material/img/emojis/svg/303d.svg | 1 + .../material/img/emojis/svg/31-20e3.svg | 1 + .../material/img/emojis/svg/32-20e3.svg | 1 + .../themes/material/img/emojis/svg/3297.svg | 1 + .../themes/material/img/emojis/svg/3299.svg | 1 + .../material/img/emojis/svg/33-20e3.svg | 1 + .../material/img/emojis/svg/34-20e3.svg | 1 + .../material/img/emojis/svg/35-20e3.svg | 1 + .../material/img/emojis/svg/36-20e3.svg | 1 + .../material/img/emojis/svg/37-20e3.svg | 1 + .../material/img/emojis/svg/38-20e3.svg | 1 + .../material/img/emojis/svg/39-20e3.svg | 1 + sources/themes/material/img/emojis/svg/a9.svg | 1 + sources/themes/material/img/emojis/svg/ae.svg | 1 + .../themes/material/img/emojis/svg/e50a.svg | 1 + 977 files changed, 3500 insertions(+), 2899 deletions(-) create mode 100644 sources/app/controllers/NodeController.php create mode 100644 sources/app/controllers/TagController.php create mode 100644 sources/app/models/tag/Tag.php create mode 100644 sources/app/models/tag/TagDAO.php create mode 100644 sources/app/views/node.tpl create mode 100644 sources/app/views/tag.tpl create mode 100644 sources/app/widgets/AccountNext/_accountnext_movim.tpl create mode 100644 sources/themes/material/img/app/96.png create mode 100644 sources/themes/material/img/app/vectorial.svg create mode 100644 sources/themes/material/img/emojis/svg/1f004.svg create mode 100644 sources/themes/material/img/emojis/svg/1f0cf.svg create mode 100644 sources/themes/material/img/emojis/svg/1f170.svg create mode 100644 sources/themes/material/img/emojis/svg/1f171.svg create mode 100644 sources/themes/material/img/emojis/svg/1f17e.svg create mode 100644 sources/themes/material/img/emojis/svg/1f17f.svg create mode 100644 sources/themes/material/img/emojis/svg/1f18e.svg create mode 100644 sources/themes/material/img/emojis/svg/1f191.svg create mode 100644 sources/themes/material/img/emojis/svg/1f192.svg create mode 100644 sources/themes/material/img/emojis/svg/1f193.svg create mode 100644 sources/themes/material/img/emojis/svg/1f194.svg create mode 100644 sources/themes/material/img/emojis/svg/1f195.svg create mode 100644 sources/themes/material/img/emojis/svg/1f196.svg create mode 100644 sources/themes/material/img/emojis/svg/1f197.svg create mode 100644 sources/themes/material/img/emojis/svg/1f198.svg create mode 100644 sources/themes/material/img/emojis/svg/1f199.svg create mode 100644 sources/themes/material/img/emojis/svg/1f19a.svg create mode 100644 sources/themes/material/img/emojis/svg/1f1e6.svg create mode 100644 sources/themes/material/img/emojis/svg/1f1e7.svg create mode 100644 sources/themes/material/img/emojis/svg/1f1e8-1f1f3.svg create mode 100644 sources/themes/material/img/emojis/svg/1f1e8.svg create mode 100644 sources/themes/material/img/emojis/svg/1f1e9-1f1ea.svg create mode 100644 sources/themes/material/img/emojis/svg/1f1e9.svg create mode 100644 sources/themes/material/img/emojis/svg/1f1ea-1f1f8.svg create mode 100644 sources/themes/material/img/emojis/svg/1f1ea.svg create mode 100644 sources/themes/material/img/emojis/svg/1f1eb-1f1f7.svg create mode 100644 sources/themes/material/img/emojis/svg/1f1eb.svg create mode 100644 sources/themes/material/img/emojis/svg/1f1ec-1f1e7.svg create mode 100644 sources/themes/material/img/emojis/svg/1f1ec.svg create mode 100644 sources/themes/material/img/emojis/svg/1f1ed.svg create mode 100644 sources/themes/material/img/emojis/svg/1f1ee-1f1f9.svg create mode 100644 sources/themes/material/img/emojis/svg/1f1ee.svg create mode 100644 sources/themes/material/img/emojis/svg/1f1ef-1f1f5.svg create mode 100644 sources/themes/material/img/emojis/svg/1f1ef.svg create mode 100644 sources/themes/material/img/emojis/svg/1f1f0-1f1f7.svg create mode 100644 sources/themes/material/img/emojis/svg/1f1f0.svg create mode 100644 sources/themes/material/img/emojis/svg/1f1f1.svg create mode 100644 sources/themes/material/img/emojis/svg/1f1f2.svg create mode 100644 sources/themes/material/img/emojis/svg/1f1f3.svg create mode 100644 sources/themes/material/img/emojis/svg/1f1f4.svg create mode 100644 sources/themes/material/img/emojis/svg/1f1f5.svg create mode 100644 sources/themes/material/img/emojis/svg/1f1f6.svg create mode 100644 sources/themes/material/img/emojis/svg/1f1f7-1f1fa.svg create mode 100644 sources/themes/material/img/emojis/svg/1f1f7.svg create mode 100644 sources/themes/material/img/emojis/svg/1f1f8.svg create mode 100644 sources/themes/material/img/emojis/svg/1f1f9.svg create mode 100644 sources/themes/material/img/emojis/svg/1f1fa-1f1f8.svg create mode 100644 sources/themes/material/img/emojis/svg/1f1fa.svg create mode 100644 sources/themes/material/img/emojis/svg/1f1fb.svg create mode 100644 sources/themes/material/img/emojis/svg/1f1fc.svg create mode 100644 sources/themes/material/img/emojis/svg/1f1fd.svg create mode 100644 sources/themes/material/img/emojis/svg/1f1fe.svg create mode 100644 sources/themes/material/img/emojis/svg/1f1ff.svg create mode 100644 sources/themes/material/img/emojis/svg/1f201.svg create mode 100644 sources/themes/material/img/emojis/svg/1f202.svg create mode 100644 sources/themes/material/img/emojis/svg/1f21a.svg create mode 100644 sources/themes/material/img/emojis/svg/1f22f.svg create mode 100644 sources/themes/material/img/emojis/svg/1f232.svg create mode 100644 sources/themes/material/img/emojis/svg/1f233.svg create mode 100644 sources/themes/material/img/emojis/svg/1f234.svg create mode 100644 sources/themes/material/img/emojis/svg/1f235.svg create mode 100644 sources/themes/material/img/emojis/svg/1f236.svg create mode 100644 sources/themes/material/img/emojis/svg/1f237.svg create mode 100644 sources/themes/material/img/emojis/svg/1f238.svg create mode 100644 sources/themes/material/img/emojis/svg/1f239.svg create mode 100644 sources/themes/material/img/emojis/svg/1f23a.svg create mode 100644 sources/themes/material/img/emojis/svg/1f250.svg create mode 100644 sources/themes/material/img/emojis/svg/1f251.svg create mode 100644 sources/themes/material/img/emojis/svg/1f300.svg create mode 100644 sources/themes/material/img/emojis/svg/1f301.svg create mode 100644 sources/themes/material/img/emojis/svg/1f302.svg create mode 100644 sources/themes/material/img/emojis/svg/1f303.svg create mode 100644 sources/themes/material/img/emojis/svg/1f304.svg create mode 100644 sources/themes/material/img/emojis/svg/1f305.svg create mode 100644 sources/themes/material/img/emojis/svg/1f306.svg create mode 100644 sources/themes/material/img/emojis/svg/1f307.svg create mode 100644 sources/themes/material/img/emojis/svg/1f308.svg create mode 100644 sources/themes/material/img/emojis/svg/1f309.svg create mode 100644 sources/themes/material/img/emojis/svg/1f30a.svg create mode 100644 sources/themes/material/img/emojis/svg/1f30b.svg create mode 100644 sources/themes/material/img/emojis/svg/1f30c.svg create mode 100644 sources/themes/material/img/emojis/svg/1f30d.svg create mode 100644 sources/themes/material/img/emojis/svg/1f30e.svg create mode 100644 sources/themes/material/img/emojis/svg/1f30f.svg create mode 100644 sources/themes/material/img/emojis/svg/1f310.svg create mode 100644 sources/themes/material/img/emojis/svg/1f311.svg create mode 100644 sources/themes/material/img/emojis/svg/1f312.svg create mode 100644 sources/themes/material/img/emojis/svg/1f313.svg create mode 100644 sources/themes/material/img/emojis/svg/1f314.svg create mode 100644 sources/themes/material/img/emojis/svg/1f315.svg create mode 100644 sources/themes/material/img/emojis/svg/1f316.svg create mode 100644 sources/themes/material/img/emojis/svg/1f317.svg create mode 100644 sources/themes/material/img/emojis/svg/1f318.svg create mode 100644 sources/themes/material/img/emojis/svg/1f319.svg create mode 100644 sources/themes/material/img/emojis/svg/1f31a.svg create mode 100644 sources/themes/material/img/emojis/svg/1f31b.svg create mode 100644 sources/themes/material/img/emojis/svg/1f31c.svg create mode 100644 sources/themes/material/img/emojis/svg/1f31d.svg create mode 100644 sources/themes/material/img/emojis/svg/1f31e.svg create mode 100644 sources/themes/material/img/emojis/svg/1f31f.svg create mode 100644 sources/themes/material/img/emojis/svg/1f320.svg create mode 100644 sources/themes/material/img/emojis/svg/1f330.svg create mode 100644 sources/themes/material/img/emojis/svg/1f331.svg create mode 100644 sources/themes/material/img/emojis/svg/1f332.svg create mode 100644 sources/themes/material/img/emojis/svg/1f333.svg create mode 100644 sources/themes/material/img/emojis/svg/1f334.svg create mode 100644 sources/themes/material/img/emojis/svg/1f335.svg create mode 100644 sources/themes/material/img/emojis/svg/1f337.svg create mode 100644 sources/themes/material/img/emojis/svg/1f338.svg create mode 100644 sources/themes/material/img/emojis/svg/1f339.svg create mode 100644 sources/themes/material/img/emojis/svg/1f33a.svg create mode 100644 sources/themes/material/img/emojis/svg/1f33b.svg create mode 100644 sources/themes/material/img/emojis/svg/1f33c.svg create mode 100644 sources/themes/material/img/emojis/svg/1f33d.svg create mode 100644 sources/themes/material/img/emojis/svg/1f33e.svg create mode 100644 sources/themes/material/img/emojis/svg/1f33f.svg create mode 100644 sources/themes/material/img/emojis/svg/1f340.svg create mode 100644 sources/themes/material/img/emojis/svg/1f341.svg create mode 100644 sources/themes/material/img/emojis/svg/1f342.svg create mode 100644 sources/themes/material/img/emojis/svg/1f343.svg create mode 100644 sources/themes/material/img/emojis/svg/1f344.svg create mode 100644 sources/themes/material/img/emojis/svg/1f345.svg create mode 100644 sources/themes/material/img/emojis/svg/1f346.svg create mode 100644 sources/themes/material/img/emojis/svg/1f347.svg create mode 100644 sources/themes/material/img/emojis/svg/1f348.svg create mode 100644 sources/themes/material/img/emojis/svg/1f349.svg create mode 100644 sources/themes/material/img/emojis/svg/1f34a.svg create mode 100644 sources/themes/material/img/emojis/svg/1f34b.svg create mode 100644 sources/themes/material/img/emojis/svg/1f34c.svg create mode 100644 sources/themes/material/img/emojis/svg/1f34d.svg create mode 100644 sources/themes/material/img/emojis/svg/1f34e.svg create mode 100644 sources/themes/material/img/emojis/svg/1f34f.svg create mode 100644 sources/themes/material/img/emojis/svg/1f350.svg create mode 100644 sources/themes/material/img/emojis/svg/1f351.svg create mode 100644 sources/themes/material/img/emojis/svg/1f352.svg create mode 100644 sources/themes/material/img/emojis/svg/1f353.svg create mode 100644 sources/themes/material/img/emojis/svg/1f354.svg create mode 100644 sources/themes/material/img/emojis/svg/1f355.svg create mode 100644 sources/themes/material/img/emojis/svg/1f356.svg create mode 100644 sources/themes/material/img/emojis/svg/1f357.svg create mode 100644 sources/themes/material/img/emojis/svg/1f358.svg create mode 100644 sources/themes/material/img/emojis/svg/1f359.svg create mode 100644 sources/themes/material/img/emojis/svg/1f35a.svg create mode 100644 sources/themes/material/img/emojis/svg/1f35b.svg create mode 100644 sources/themes/material/img/emojis/svg/1f35c.svg create mode 100644 sources/themes/material/img/emojis/svg/1f35d.svg create mode 100644 sources/themes/material/img/emojis/svg/1f35e.svg create mode 100644 sources/themes/material/img/emojis/svg/1f35f.svg create mode 100644 sources/themes/material/img/emojis/svg/1f360.svg create mode 100644 sources/themes/material/img/emojis/svg/1f361.svg create mode 100644 sources/themes/material/img/emojis/svg/1f362.svg create mode 100644 sources/themes/material/img/emojis/svg/1f363.svg create mode 100644 sources/themes/material/img/emojis/svg/1f364.svg create mode 100644 sources/themes/material/img/emojis/svg/1f365.svg create mode 100644 sources/themes/material/img/emojis/svg/1f366.svg create mode 100644 sources/themes/material/img/emojis/svg/1f367.svg create mode 100644 sources/themes/material/img/emojis/svg/1f368.svg create mode 100644 sources/themes/material/img/emojis/svg/1f369.svg create mode 100644 sources/themes/material/img/emojis/svg/1f36a.svg create mode 100644 sources/themes/material/img/emojis/svg/1f36b.svg create mode 100644 sources/themes/material/img/emojis/svg/1f36c.svg create mode 100644 sources/themes/material/img/emojis/svg/1f36d.svg create mode 100644 sources/themes/material/img/emojis/svg/1f36e.svg create mode 100644 sources/themes/material/img/emojis/svg/1f36f.svg create mode 100644 sources/themes/material/img/emojis/svg/1f370.svg create mode 100644 sources/themes/material/img/emojis/svg/1f371.svg create mode 100644 sources/themes/material/img/emojis/svg/1f372.svg create mode 100644 sources/themes/material/img/emojis/svg/1f373.svg create mode 100644 sources/themes/material/img/emojis/svg/1f374.svg create mode 100644 sources/themes/material/img/emojis/svg/1f375.svg create mode 100644 sources/themes/material/img/emojis/svg/1f376.svg create mode 100644 sources/themes/material/img/emojis/svg/1f377.svg create mode 100644 sources/themes/material/img/emojis/svg/1f378.svg create mode 100644 sources/themes/material/img/emojis/svg/1f379.svg create mode 100644 sources/themes/material/img/emojis/svg/1f37a.svg create mode 100644 sources/themes/material/img/emojis/svg/1f37b.svg create mode 100644 sources/themes/material/img/emojis/svg/1f37c.svg create mode 100644 sources/themes/material/img/emojis/svg/1f380.svg create mode 100644 sources/themes/material/img/emojis/svg/1f381.svg create mode 100644 sources/themes/material/img/emojis/svg/1f382.svg create mode 100644 sources/themes/material/img/emojis/svg/1f383.svg create mode 100644 sources/themes/material/img/emojis/svg/1f384.svg create mode 100644 sources/themes/material/img/emojis/svg/1f385.svg create mode 100644 sources/themes/material/img/emojis/svg/1f386.svg create mode 100644 sources/themes/material/img/emojis/svg/1f387.svg create mode 100644 sources/themes/material/img/emojis/svg/1f388.svg create mode 100644 sources/themes/material/img/emojis/svg/1f389.svg create mode 100644 sources/themes/material/img/emojis/svg/1f38a.svg create mode 100644 sources/themes/material/img/emojis/svg/1f38b.svg create mode 100644 sources/themes/material/img/emojis/svg/1f38c.svg create mode 100644 sources/themes/material/img/emojis/svg/1f38d.svg create mode 100644 sources/themes/material/img/emojis/svg/1f38e.svg create mode 100644 sources/themes/material/img/emojis/svg/1f38f.svg create mode 100644 sources/themes/material/img/emojis/svg/1f390.svg create mode 100644 sources/themes/material/img/emojis/svg/1f391.svg create mode 100644 sources/themes/material/img/emojis/svg/1f392.svg create mode 100644 sources/themes/material/img/emojis/svg/1f393.svg create mode 100644 sources/themes/material/img/emojis/svg/1f3a0.svg create mode 100644 sources/themes/material/img/emojis/svg/1f3a1.svg create mode 100644 sources/themes/material/img/emojis/svg/1f3a2.svg create mode 100644 sources/themes/material/img/emojis/svg/1f3a3.svg create mode 100644 sources/themes/material/img/emojis/svg/1f3a4.svg create mode 100644 sources/themes/material/img/emojis/svg/1f3a5.svg create mode 100644 sources/themes/material/img/emojis/svg/1f3a6.svg create mode 100644 sources/themes/material/img/emojis/svg/1f3a7.svg create mode 100644 sources/themes/material/img/emojis/svg/1f3a8.svg create mode 100644 sources/themes/material/img/emojis/svg/1f3a9.svg create mode 100644 sources/themes/material/img/emojis/svg/1f3aa.svg create mode 100644 sources/themes/material/img/emojis/svg/1f3ab.svg create mode 100644 sources/themes/material/img/emojis/svg/1f3ac.svg create mode 100644 sources/themes/material/img/emojis/svg/1f3ad.svg create mode 100644 sources/themes/material/img/emojis/svg/1f3ae.svg create mode 100644 sources/themes/material/img/emojis/svg/1f3af.svg create mode 100644 sources/themes/material/img/emojis/svg/1f3b0.svg create mode 100644 sources/themes/material/img/emojis/svg/1f3b1.svg create mode 100644 sources/themes/material/img/emojis/svg/1f3b2.svg create mode 100644 sources/themes/material/img/emojis/svg/1f3b3.svg create mode 100644 sources/themes/material/img/emojis/svg/1f3b4.svg create mode 100644 sources/themes/material/img/emojis/svg/1f3b5.svg create mode 100644 sources/themes/material/img/emojis/svg/1f3b6.svg create mode 100644 sources/themes/material/img/emojis/svg/1f3b7.svg create mode 100644 sources/themes/material/img/emojis/svg/1f3b8.svg create mode 100644 sources/themes/material/img/emojis/svg/1f3b9.svg create mode 100644 sources/themes/material/img/emojis/svg/1f3ba.svg create mode 100644 sources/themes/material/img/emojis/svg/1f3bb.svg create mode 100644 sources/themes/material/img/emojis/svg/1f3bc.svg create mode 100644 sources/themes/material/img/emojis/svg/1f3bd.svg create mode 100644 sources/themes/material/img/emojis/svg/1f3be.svg create mode 100644 sources/themes/material/img/emojis/svg/1f3bf.svg create mode 100644 sources/themes/material/img/emojis/svg/1f3c0.svg create mode 100644 sources/themes/material/img/emojis/svg/1f3c1.svg create mode 100644 sources/themes/material/img/emojis/svg/1f3c2.svg create mode 100644 sources/themes/material/img/emojis/svg/1f3c3.svg create mode 100644 sources/themes/material/img/emojis/svg/1f3c4.svg create mode 100644 sources/themes/material/img/emojis/svg/1f3c6.svg create mode 100644 sources/themes/material/img/emojis/svg/1f3c7.svg create mode 100644 sources/themes/material/img/emojis/svg/1f3c8.svg create mode 100644 sources/themes/material/img/emojis/svg/1f3c9.svg create mode 100644 sources/themes/material/img/emojis/svg/1f3ca.svg create mode 100644 sources/themes/material/img/emojis/svg/1f3e0.svg create mode 100644 sources/themes/material/img/emojis/svg/1f3e1.svg create mode 100644 sources/themes/material/img/emojis/svg/1f3e2.svg create mode 100644 sources/themes/material/img/emojis/svg/1f3e3.svg create mode 100644 sources/themes/material/img/emojis/svg/1f3e4.svg create mode 100644 sources/themes/material/img/emojis/svg/1f3e5.svg create mode 100644 sources/themes/material/img/emojis/svg/1f3e6.svg create mode 100644 sources/themes/material/img/emojis/svg/1f3e7.svg create mode 100644 sources/themes/material/img/emojis/svg/1f3e8.svg create mode 100644 sources/themes/material/img/emojis/svg/1f3e9.svg create mode 100644 sources/themes/material/img/emojis/svg/1f3ea.svg create mode 100644 sources/themes/material/img/emojis/svg/1f3eb.svg create mode 100644 sources/themes/material/img/emojis/svg/1f3ec.svg create mode 100644 sources/themes/material/img/emojis/svg/1f3ed.svg create mode 100644 sources/themes/material/img/emojis/svg/1f3ee.svg create mode 100644 sources/themes/material/img/emojis/svg/1f3ef.svg create mode 100644 sources/themes/material/img/emojis/svg/1f3f0.svg create mode 100644 sources/themes/material/img/emojis/svg/1f400.svg create mode 100644 sources/themes/material/img/emojis/svg/1f401.svg create mode 100644 sources/themes/material/img/emojis/svg/1f402.svg create mode 100644 sources/themes/material/img/emojis/svg/1f403.svg create mode 100644 sources/themes/material/img/emojis/svg/1f404.svg create mode 100644 sources/themes/material/img/emojis/svg/1f405.svg create mode 100644 sources/themes/material/img/emojis/svg/1f406.svg create mode 100644 sources/themes/material/img/emojis/svg/1f407.svg create mode 100644 sources/themes/material/img/emojis/svg/1f408.svg create mode 100644 sources/themes/material/img/emojis/svg/1f409.svg create mode 100644 sources/themes/material/img/emojis/svg/1f40a.svg create mode 100644 sources/themes/material/img/emojis/svg/1f40b.svg create mode 100644 sources/themes/material/img/emojis/svg/1f40c.svg create mode 100644 sources/themes/material/img/emojis/svg/1f40d.svg create mode 100644 sources/themes/material/img/emojis/svg/1f40e.svg create mode 100644 sources/themes/material/img/emojis/svg/1f40f.svg create mode 100644 sources/themes/material/img/emojis/svg/1f410.svg create mode 100644 sources/themes/material/img/emojis/svg/1f411.svg create mode 100644 sources/themes/material/img/emojis/svg/1f412.svg create mode 100644 sources/themes/material/img/emojis/svg/1f413.svg create mode 100644 sources/themes/material/img/emojis/svg/1f414.svg create mode 100644 sources/themes/material/img/emojis/svg/1f415.svg create mode 100644 sources/themes/material/img/emojis/svg/1f416.svg create mode 100644 sources/themes/material/img/emojis/svg/1f417.svg create mode 100644 sources/themes/material/img/emojis/svg/1f418.svg create mode 100644 sources/themes/material/img/emojis/svg/1f419.svg create mode 100644 sources/themes/material/img/emojis/svg/1f41a.svg create mode 100644 sources/themes/material/img/emojis/svg/1f41b.svg create mode 100644 sources/themes/material/img/emojis/svg/1f41c.svg create mode 100644 sources/themes/material/img/emojis/svg/1f41d.svg create mode 100644 sources/themes/material/img/emojis/svg/1f41e.svg create mode 100644 sources/themes/material/img/emojis/svg/1f41f.svg create mode 100644 sources/themes/material/img/emojis/svg/1f420.svg create mode 100644 sources/themes/material/img/emojis/svg/1f421.svg create mode 100644 sources/themes/material/img/emojis/svg/1f422.svg create mode 100644 sources/themes/material/img/emojis/svg/1f423.svg create mode 100644 sources/themes/material/img/emojis/svg/1f424.svg create mode 100644 sources/themes/material/img/emojis/svg/1f425.svg create mode 100644 sources/themes/material/img/emojis/svg/1f426.svg create mode 100644 sources/themes/material/img/emojis/svg/1f427.svg create mode 100644 sources/themes/material/img/emojis/svg/1f428.svg create mode 100644 sources/themes/material/img/emojis/svg/1f429.svg create mode 100644 sources/themes/material/img/emojis/svg/1f42a.svg create mode 100644 sources/themes/material/img/emojis/svg/1f42b.svg create mode 100644 sources/themes/material/img/emojis/svg/1f42c.svg create mode 100644 sources/themes/material/img/emojis/svg/1f42d.svg create mode 100644 sources/themes/material/img/emojis/svg/1f42e.svg create mode 100644 sources/themes/material/img/emojis/svg/1f42f.svg create mode 100644 sources/themes/material/img/emojis/svg/1f430.svg create mode 100644 sources/themes/material/img/emojis/svg/1f431.svg create mode 100644 sources/themes/material/img/emojis/svg/1f432.svg create mode 100644 sources/themes/material/img/emojis/svg/1f433.svg create mode 100644 sources/themes/material/img/emojis/svg/1f434.svg create mode 100644 sources/themes/material/img/emojis/svg/1f435.svg create mode 100644 sources/themes/material/img/emojis/svg/1f436.svg create mode 100644 sources/themes/material/img/emojis/svg/1f437.svg create mode 100644 sources/themes/material/img/emojis/svg/1f438.svg create mode 100644 sources/themes/material/img/emojis/svg/1f439.svg create mode 100644 sources/themes/material/img/emojis/svg/1f43a.svg create mode 100644 sources/themes/material/img/emojis/svg/1f43b.svg create mode 100644 sources/themes/material/img/emojis/svg/1f43c.svg create mode 100644 sources/themes/material/img/emojis/svg/1f43d.svg create mode 100644 sources/themes/material/img/emojis/svg/1f43e.svg create mode 100644 sources/themes/material/img/emojis/svg/1f440.svg create mode 100644 sources/themes/material/img/emojis/svg/1f442.svg create mode 100644 sources/themes/material/img/emojis/svg/1f443.svg create mode 100644 sources/themes/material/img/emojis/svg/1f444.svg create mode 100644 sources/themes/material/img/emojis/svg/1f445.svg create mode 100644 sources/themes/material/img/emojis/svg/1f446.svg create mode 100644 sources/themes/material/img/emojis/svg/1f447.svg create mode 100644 sources/themes/material/img/emojis/svg/1f448.svg create mode 100644 sources/themes/material/img/emojis/svg/1f449.svg create mode 100644 sources/themes/material/img/emojis/svg/1f44a.svg create mode 100644 sources/themes/material/img/emojis/svg/1f44b.svg create mode 100644 sources/themes/material/img/emojis/svg/1f44c.svg create mode 100644 sources/themes/material/img/emojis/svg/1f44d.svg create mode 100644 sources/themes/material/img/emojis/svg/1f44e.svg create mode 100644 sources/themes/material/img/emojis/svg/1f44f.svg create mode 100644 sources/themes/material/img/emojis/svg/1f450.svg create mode 100644 sources/themes/material/img/emojis/svg/1f451.svg create mode 100644 sources/themes/material/img/emojis/svg/1f452.svg create mode 100644 sources/themes/material/img/emojis/svg/1f453.svg create mode 100644 sources/themes/material/img/emojis/svg/1f454.svg create mode 100644 sources/themes/material/img/emojis/svg/1f455.svg create mode 100644 sources/themes/material/img/emojis/svg/1f456.svg create mode 100644 sources/themes/material/img/emojis/svg/1f457.svg create mode 100644 sources/themes/material/img/emojis/svg/1f458.svg create mode 100644 sources/themes/material/img/emojis/svg/1f459.svg create mode 100644 sources/themes/material/img/emojis/svg/1f45a.svg create mode 100644 sources/themes/material/img/emojis/svg/1f45b.svg create mode 100644 sources/themes/material/img/emojis/svg/1f45c.svg create mode 100644 sources/themes/material/img/emojis/svg/1f45d.svg create mode 100644 sources/themes/material/img/emojis/svg/1f45e.svg create mode 100644 sources/themes/material/img/emojis/svg/1f45f.svg create mode 100644 sources/themes/material/img/emojis/svg/1f460.svg create mode 100644 sources/themes/material/img/emojis/svg/1f461.svg create mode 100644 sources/themes/material/img/emojis/svg/1f462.svg create mode 100644 sources/themes/material/img/emojis/svg/1f463.svg create mode 100644 sources/themes/material/img/emojis/svg/1f464.svg create mode 100644 sources/themes/material/img/emojis/svg/1f465.svg create mode 100644 sources/themes/material/img/emojis/svg/1f466.svg create mode 100644 sources/themes/material/img/emojis/svg/1f467.svg create mode 100644 sources/themes/material/img/emojis/svg/1f468.svg create mode 100644 sources/themes/material/img/emojis/svg/1f469.svg create mode 100644 sources/themes/material/img/emojis/svg/1f46a.svg create mode 100644 sources/themes/material/img/emojis/svg/1f46b.svg create mode 100644 sources/themes/material/img/emojis/svg/1f46c.svg create mode 100644 sources/themes/material/img/emojis/svg/1f46d.svg create mode 100644 sources/themes/material/img/emojis/svg/1f46e.svg create mode 100644 sources/themes/material/img/emojis/svg/1f46f.svg create mode 100644 sources/themes/material/img/emojis/svg/1f470.svg create mode 100644 sources/themes/material/img/emojis/svg/1f471.svg create mode 100644 sources/themes/material/img/emojis/svg/1f472.svg create mode 100644 sources/themes/material/img/emojis/svg/1f473.svg create mode 100644 sources/themes/material/img/emojis/svg/1f474.svg create mode 100644 sources/themes/material/img/emojis/svg/1f475.svg create mode 100644 sources/themes/material/img/emojis/svg/1f476.svg create mode 100644 sources/themes/material/img/emojis/svg/1f477.svg create mode 100644 sources/themes/material/img/emojis/svg/1f478.svg create mode 100644 sources/themes/material/img/emojis/svg/1f479.svg create mode 100644 sources/themes/material/img/emojis/svg/1f47a.svg create mode 100644 sources/themes/material/img/emojis/svg/1f47b.svg create mode 100644 sources/themes/material/img/emojis/svg/1f47c.svg create mode 100644 sources/themes/material/img/emojis/svg/1f47d.svg create mode 100644 sources/themes/material/img/emojis/svg/1f47e.svg create mode 100644 sources/themes/material/img/emojis/svg/1f47f.svg create mode 100644 sources/themes/material/img/emojis/svg/1f480.svg create mode 100644 sources/themes/material/img/emojis/svg/1f481.svg create mode 100644 sources/themes/material/img/emojis/svg/1f482.svg create mode 100644 sources/themes/material/img/emojis/svg/1f483.svg create mode 100644 sources/themes/material/img/emojis/svg/1f484.svg create mode 100644 sources/themes/material/img/emojis/svg/1f485.svg create mode 100644 sources/themes/material/img/emojis/svg/1f486.svg create mode 100644 sources/themes/material/img/emojis/svg/1f487.svg create mode 100644 sources/themes/material/img/emojis/svg/1f488.svg create mode 100644 sources/themes/material/img/emojis/svg/1f489.svg create mode 100644 sources/themes/material/img/emojis/svg/1f48a.svg create mode 100644 sources/themes/material/img/emojis/svg/1f48b.svg create mode 100644 sources/themes/material/img/emojis/svg/1f48c.svg create mode 100644 sources/themes/material/img/emojis/svg/1f48d.svg create mode 100644 sources/themes/material/img/emojis/svg/1f48e.svg create mode 100644 sources/themes/material/img/emojis/svg/1f48f.svg create mode 100644 sources/themes/material/img/emojis/svg/1f490.svg create mode 100644 sources/themes/material/img/emojis/svg/1f491.svg create mode 100644 sources/themes/material/img/emojis/svg/1f492.svg create mode 100644 sources/themes/material/img/emojis/svg/1f493.svg create mode 100644 sources/themes/material/img/emojis/svg/1f494.svg create mode 100644 sources/themes/material/img/emojis/svg/1f495.svg create mode 100644 sources/themes/material/img/emojis/svg/1f496.svg create mode 100644 sources/themes/material/img/emojis/svg/1f497.svg create mode 100644 sources/themes/material/img/emojis/svg/1f498.svg create mode 100644 sources/themes/material/img/emojis/svg/1f499.svg create mode 100644 sources/themes/material/img/emojis/svg/1f49a.svg create mode 100644 sources/themes/material/img/emojis/svg/1f49b.svg create mode 100644 sources/themes/material/img/emojis/svg/1f49c.svg create mode 100644 sources/themes/material/img/emojis/svg/1f49d.svg create mode 100644 sources/themes/material/img/emojis/svg/1f49e.svg create mode 100644 sources/themes/material/img/emojis/svg/1f49f.svg create mode 100644 sources/themes/material/img/emojis/svg/1f4a0.svg create mode 100644 sources/themes/material/img/emojis/svg/1f4a1.svg create mode 100644 sources/themes/material/img/emojis/svg/1f4a2.svg create mode 100644 sources/themes/material/img/emojis/svg/1f4a3.svg create mode 100644 sources/themes/material/img/emojis/svg/1f4a4.svg create mode 100644 sources/themes/material/img/emojis/svg/1f4a5.svg create mode 100644 sources/themes/material/img/emojis/svg/1f4a6.svg create mode 100644 sources/themes/material/img/emojis/svg/1f4a7.svg create mode 100644 sources/themes/material/img/emojis/svg/1f4a8.svg create mode 100644 sources/themes/material/img/emojis/svg/1f4a9.svg create mode 100644 sources/themes/material/img/emojis/svg/1f4aa.svg create mode 100644 sources/themes/material/img/emojis/svg/1f4ab.svg create mode 100644 sources/themes/material/img/emojis/svg/1f4ac.svg create mode 100644 sources/themes/material/img/emojis/svg/1f4ad.svg create mode 100644 sources/themes/material/img/emojis/svg/1f4ae.svg create mode 100644 sources/themes/material/img/emojis/svg/1f4af.svg create mode 100644 sources/themes/material/img/emojis/svg/1f4b0.svg create mode 100644 sources/themes/material/img/emojis/svg/1f4b1.svg create mode 100644 sources/themes/material/img/emojis/svg/1f4b2.svg create mode 100644 sources/themes/material/img/emojis/svg/1f4b3.svg create mode 100644 sources/themes/material/img/emojis/svg/1f4b4.svg create mode 100644 sources/themes/material/img/emojis/svg/1f4b5.svg create mode 100644 sources/themes/material/img/emojis/svg/1f4b6.svg create mode 100644 sources/themes/material/img/emojis/svg/1f4b7.svg create mode 100644 sources/themes/material/img/emojis/svg/1f4b8.svg create mode 100644 sources/themes/material/img/emojis/svg/1f4b9.svg create mode 100644 sources/themes/material/img/emojis/svg/1f4ba.svg create mode 100644 sources/themes/material/img/emojis/svg/1f4bb.svg create mode 100644 sources/themes/material/img/emojis/svg/1f4bc.svg create mode 100644 sources/themes/material/img/emojis/svg/1f4bd.svg create mode 100644 sources/themes/material/img/emojis/svg/1f4be.svg create mode 100644 sources/themes/material/img/emojis/svg/1f4bf.svg create mode 100644 sources/themes/material/img/emojis/svg/1f4c0.svg create mode 100644 sources/themes/material/img/emojis/svg/1f4c1.svg create mode 100644 sources/themes/material/img/emojis/svg/1f4c2.svg create mode 100644 sources/themes/material/img/emojis/svg/1f4c3.svg create mode 100644 sources/themes/material/img/emojis/svg/1f4c4.svg create mode 100644 sources/themes/material/img/emojis/svg/1f4c5.svg create mode 100644 sources/themes/material/img/emojis/svg/1f4c6.svg create mode 100644 sources/themes/material/img/emojis/svg/1f4c7.svg create mode 100644 sources/themes/material/img/emojis/svg/1f4c8.svg create mode 100644 sources/themes/material/img/emojis/svg/1f4c9.svg create mode 100644 sources/themes/material/img/emojis/svg/1f4ca.svg create mode 100644 sources/themes/material/img/emojis/svg/1f4cb.svg create mode 100644 sources/themes/material/img/emojis/svg/1f4cc.svg create mode 100644 sources/themes/material/img/emojis/svg/1f4cd.svg create mode 100644 sources/themes/material/img/emojis/svg/1f4ce.svg create mode 100644 sources/themes/material/img/emojis/svg/1f4cf.svg create mode 100644 sources/themes/material/img/emojis/svg/1f4d0.svg create mode 100644 sources/themes/material/img/emojis/svg/1f4d1.svg create mode 100644 sources/themes/material/img/emojis/svg/1f4d2.svg create mode 100644 sources/themes/material/img/emojis/svg/1f4d3.svg create mode 100644 sources/themes/material/img/emojis/svg/1f4d4.svg create mode 100644 sources/themes/material/img/emojis/svg/1f4d5.svg create mode 100644 sources/themes/material/img/emojis/svg/1f4d6.svg create mode 100644 sources/themes/material/img/emojis/svg/1f4d7.svg create mode 100644 sources/themes/material/img/emojis/svg/1f4d8.svg create mode 100644 sources/themes/material/img/emojis/svg/1f4d9.svg create mode 100644 sources/themes/material/img/emojis/svg/1f4da.svg create mode 100644 sources/themes/material/img/emojis/svg/1f4db.svg create mode 100644 sources/themes/material/img/emojis/svg/1f4dc.svg create mode 100644 sources/themes/material/img/emojis/svg/1f4dd.svg create mode 100644 sources/themes/material/img/emojis/svg/1f4de.svg create mode 100644 sources/themes/material/img/emojis/svg/1f4df.svg create mode 100644 sources/themes/material/img/emojis/svg/1f4e0.svg create mode 100644 sources/themes/material/img/emojis/svg/1f4e1.svg create mode 100644 sources/themes/material/img/emojis/svg/1f4e2.svg create mode 100644 sources/themes/material/img/emojis/svg/1f4e3.svg create mode 100644 sources/themes/material/img/emojis/svg/1f4e4.svg create mode 100644 sources/themes/material/img/emojis/svg/1f4e5.svg create mode 100644 sources/themes/material/img/emojis/svg/1f4e6.svg create mode 100644 sources/themes/material/img/emojis/svg/1f4e7.svg create mode 100644 sources/themes/material/img/emojis/svg/1f4e8.svg create mode 100644 sources/themes/material/img/emojis/svg/1f4e9.svg create mode 100644 sources/themes/material/img/emojis/svg/1f4ea.svg create mode 100644 sources/themes/material/img/emojis/svg/1f4eb.svg create mode 100644 sources/themes/material/img/emojis/svg/1f4ec.svg create mode 100644 sources/themes/material/img/emojis/svg/1f4ed.svg create mode 100644 sources/themes/material/img/emojis/svg/1f4ee.svg create mode 100644 sources/themes/material/img/emojis/svg/1f4ef.svg create mode 100644 sources/themes/material/img/emojis/svg/1f4f0.svg create mode 100644 sources/themes/material/img/emojis/svg/1f4f1.svg create mode 100644 sources/themes/material/img/emojis/svg/1f4f2.svg create mode 100644 sources/themes/material/img/emojis/svg/1f4f3.svg create mode 100644 sources/themes/material/img/emojis/svg/1f4f4.svg create mode 100644 sources/themes/material/img/emojis/svg/1f4f5.svg create mode 100644 sources/themes/material/img/emojis/svg/1f4f6.svg create mode 100644 sources/themes/material/img/emojis/svg/1f4f7.svg create mode 100644 sources/themes/material/img/emojis/svg/1f4f9.svg create mode 100644 sources/themes/material/img/emojis/svg/1f4fa.svg create mode 100644 sources/themes/material/img/emojis/svg/1f4fb.svg create mode 100644 sources/themes/material/img/emojis/svg/1f4fc.svg create mode 100644 sources/themes/material/img/emojis/svg/1f500.svg create mode 100644 sources/themes/material/img/emojis/svg/1f501.svg create mode 100644 sources/themes/material/img/emojis/svg/1f502.svg create mode 100644 sources/themes/material/img/emojis/svg/1f503.svg create mode 100644 sources/themes/material/img/emojis/svg/1f504.svg create mode 100644 sources/themes/material/img/emojis/svg/1f505.svg create mode 100644 sources/themes/material/img/emojis/svg/1f506.svg create mode 100644 sources/themes/material/img/emojis/svg/1f507.svg create mode 100644 sources/themes/material/img/emojis/svg/1f508.svg create mode 100644 sources/themes/material/img/emojis/svg/1f509.svg create mode 100644 sources/themes/material/img/emojis/svg/1f50a.svg create mode 100644 sources/themes/material/img/emojis/svg/1f50b.svg create mode 100644 sources/themes/material/img/emojis/svg/1f50c.svg create mode 100644 sources/themes/material/img/emojis/svg/1f50d.svg create mode 100644 sources/themes/material/img/emojis/svg/1f50e.svg create mode 100644 sources/themes/material/img/emojis/svg/1f50f.svg create mode 100644 sources/themes/material/img/emojis/svg/1f510.svg create mode 100644 sources/themes/material/img/emojis/svg/1f511.svg create mode 100644 sources/themes/material/img/emojis/svg/1f512.svg create mode 100644 sources/themes/material/img/emojis/svg/1f513.svg create mode 100644 sources/themes/material/img/emojis/svg/1f514.svg create mode 100644 sources/themes/material/img/emojis/svg/1f515.svg create mode 100644 sources/themes/material/img/emojis/svg/1f516.svg create mode 100644 sources/themes/material/img/emojis/svg/1f517.svg create mode 100644 sources/themes/material/img/emojis/svg/1f518.svg create mode 100644 sources/themes/material/img/emojis/svg/1f519.svg create mode 100644 sources/themes/material/img/emojis/svg/1f51a.svg create mode 100644 sources/themes/material/img/emojis/svg/1f51b.svg create mode 100644 sources/themes/material/img/emojis/svg/1f51c.svg create mode 100644 sources/themes/material/img/emojis/svg/1f51d.svg create mode 100644 sources/themes/material/img/emojis/svg/1f51e.svg create mode 100644 sources/themes/material/img/emojis/svg/1f51f.svg create mode 100644 sources/themes/material/img/emojis/svg/1f520.svg create mode 100644 sources/themes/material/img/emojis/svg/1f521.svg create mode 100644 sources/themes/material/img/emojis/svg/1f522.svg create mode 100644 sources/themes/material/img/emojis/svg/1f523.svg create mode 100644 sources/themes/material/img/emojis/svg/1f524.svg create mode 100644 sources/themes/material/img/emojis/svg/1f525.svg create mode 100644 sources/themes/material/img/emojis/svg/1f526.svg create mode 100644 sources/themes/material/img/emojis/svg/1f527.svg create mode 100644 sources/themes/material/img/emojis/svg/1f528.svg create mode 100644 sources/themes/material/img/emojis/svg/1f529.svg create mode 100644 sources/themes/material/img/emojis/svg/1f52a.svg create mode 100644 sources/themes/material/img/emojis/svg/1f52b.svg create mode 100644 sources/themes/material/img/emojis/svg/1f52c.svg create mode 100644 sources/themes/material/img/emojis/svg/1f52d.svg create mode 100644 sources/themes/material/img/emojis/svg/1f52e.svg create mode 100644 sources/themes/material/img/emojis/svg/1f52f.svg create mode 100644 sources/themes/material/img/emojis/svg/1f530.svg create mode 100644 sources/themes/material/img/emojis/svg/1f531.svg create mode 100644 sources/themes/material/img/emojis/svg/1f532.svg create mode 100644 sources/themes/material/img/emojis/svg/1f533.svg create mode 100644 sources/themes/material/img/emojis/svg/1f534.svg create mode 100644 sources/themes/material/img/emojis/svg/1f535.svg create mode 100644 sources/themes/material/img/emojis/svg/1f536.svg create mode 100644 sources/themes/material/img/emojis/svg/1f537.svg create mode 100644 sources/themes/material/img/emojis/svg/1f538.svg create mode 100644 sources/themes/material/img/emojis/svg/1f539.svg create mode 100644 sources/themes/material/img/emojis/svg/1f53a.svg create mode 100644 sources/themes/material/img/emojis/svg/1f53b.svg create mode 100644 sources/themes/material/img/emojis/svg/1f53c.svg create mode 100644 sources/themes/material/img/emojis/svg/1f53d.svg create mode 100644 sources/themes/material/img/emojis/svg/1f550.svg create mode 100644 sources/themes/material/img/emojis/svg/1f551.svg create mode 100644 sources/themes/material/img/emojis/svg/1f552.svg create mode 100644 sources/themes/material/img/emojis/svg/1f553.svg create mode 100644 sources/themes/material/img/emojis/svg/1f554.svg create mode 100644 sources/themes/material/img/emojis/svg/1f555.svg create mode 100644 sources/themes/material/img/emojis/svg/1f556.svg create mode 100644 sources/themes/material/img/emojis/svg/1f557.svg create mode 100644 sources/themes/material/img/emojis/svg/1f558.svg create mode 100644 sources/themes/material/img/emojis/svg/1f559.svg create mode 100644 sources/themes/material/img/emojis/svg/1f55a.svg create mode 100644 sources/themes/material/img/emojis/svg/1f55b.svg create mode 100644 sources/themes/material/img/emojis/svg/1f55c.svg create mode 100644 sources/themes/material/img/emojis/svg/1f55d.svg create mode 100644 sources/themes/material/img/emojis/svg/1f55e.svg create mode 100644 sources/themes/material/img/emojis/svg/1f55f.svg create mode 100644 sources/themes/material/img/emojis/svg/1f560.svg create mode 100644 sources/themes/material/img/emojis/svg/1f561.svg create mode 100644 sources/themes/material/img/emojis/svg/1f562.svg create mode 100644 sources/themes/material/img/emojis/svg/1f563.svg create mode 100644 sources/themes/material/img/emojis/svg/1f564.svg create mode 100644 sources/themes/material/img/emojis/svg/1f565.svg create mode 100644 sources/themes/material/img/emojis/svg/1f566.svg create mode 100644 sources/themes/material/img/emojis/svg/1f567.svg create mode 100644 sources/themes/material/img/emojis/svg/1f5fb.svg create mode 100644 sources/themes/material/img/emojis/svg/1f5fc.svg create mode 100644 sources/themes/material/img/emojis/svg/1f5fd.svg create mode 100644 sources/themes/material/img/emojis/svg/1f5fe.svg create mode 100644 sources/themes/material/img/emojis/svg/1f5ff.svg create mode 100644 sources/themes/material/img/emojis/svg/1f600.svg create mode 100644 sources/themes/material/img/emojis/svg/1f601.svg create mode 100644 sources/themes/material/img/emojis/svg/1f602.svg create mode 100644 sources/themes/material/img/emojis/svg/1f603.svg create mode 100644 sources/themes/material/img/emojis/svg/1f604.svg create mode 100644 sources/themes/material/img/emojis/svg/1f605.svg create mode 100644 sources/themes/material/img/emojis/svg/1f606.svg create mode 100644 sources/themes/material/img/emojis/svg/1f607.svg create mode 100644 sources/themes/material/img/emojis/svg/1f608.svg create mode 100644 sources/themes/material/img/emojis/svg/1f609.svg create mode 100644 sources/themes/material/img/emojis/svg/1f60a.svg create mode 100644 sources/themes/material/img/emojis/svg/1f60b.svg create mode 100644 sources/themes/material/img/emojis/svg/1f60c.svg create mode 100644 sources/themes/material/img/emojis/svg/1f60d.svg create mode 100644 sources/themes/material/img/emojis/svg/1f60e.svg create mode 100644 sources/themes/material/img/emojis/svg/1f60f.svg create mode 100644 sources/themes/material/img/emojis/svg/1f610.svg create mode 100644 sources/themes/material/img/emojis/svg/1f611.svg create mode 100644 sources/themes/material/img/emojis/svg/1f612.svg create mode 100644 sources/themes/material/img/emojis/svg/1f613.svg create mode 100644 sources/themes/material/img/emojis/svg/1f614.svg create mode 100644 sources/themes/material/img/emojis/svg/1f615.svg create mode 100644 sources/themes/material/img/emojis/svg/1f616.svg create mode 100644 sources/themes/material/img/emojis/svg/1f617.svg create mode 100644 sources/themes/material/img/emojis/svg/1f618.svg create mode 100644 sources/themes/material/img/emojis/svg/1f619.svg create mode 100644 sources/themes/material/img/emojis/svg/1f61a.svg create mode 100644 sources/themes/material/img/emojis/svg/1f61b.svg create mode 100644 sources/themes/material/img/emojis/svg/1f61c.svg create mode 100644 sources/themes/material/img/emojis/svg/1f61d.svg create mode 100644 sources/themes/material/img/emojis/svg/1f61e.svg create mode 100644 sources/themes/material/img/emojis/svg/1f61f.svg create mode 100644 sources/themes/material/img/emojis/svg/1f620.svg create mode 100644 sources/themes/material/img/emojis/svg/1f621.svg create mode 100644 sources/themes/material/img/emojis/svg/1f622.svg create mode 100644 sources/themes/material/img/emojis/svg/1f623.svg create mode 100644 sources/themes/material/img/emojis/svg/1f624.svg create mode 100644 sources/themes/material/img/emojis/svg/1f625.svg create mode 100644 sources/themes/material/img/emojis/svg/1f626.svg create mode 100644 sources/themes/material/img/emojis/svg/1f627.svg create mode 100644 sources/themes/material/img/emojis/svg/1f628.svg create mode 100644 sources/themes/material/img/emojis/svg/1f629.svg create mode 100644 sources/themes/material/img/emojis/svg/1f62a.svg create mode 100644 sources/themes/material/img/emojis/svg/1f62b.svg create mode 100644 sources/themes/material/img/emojis/svg/1f62c.svg create mode 100644 sources/themes/material/img/emojis/svg/1f62d.svg create mode 100644 sources/themes/material/img/emojis/svg/1f62e.svg create mode 100644 sources/themes/material/img/emojis/svg/1f62f.svg create mode 100644 sources/themes/material/img/emojis/svg/1f630.svg create mode 100644 sources/themes/material/img/emojis/svg/1f631.svg create mode 100644 sources/themes/material/img/emojis/svg/1f632.svg create mode 100644 sources/themes/material/img/emojis/svg/1f633.svg create mode 100644 sources/themes/material/img/emojis/svg/1f634.svg create mode 100644 sources/themes/material/img/emojis/svg/1f635.svg create mode 100644 sources/themes/material/img/emojis/svg/1f636.svg create mode 100644 sources/themes/material/img/emojis/svg/1f637.svg create mode 100644 sources/themes/material/img/emojis/svg/1f638.svg create mode 100644 sources/themes/material/img/emojis/svg/1f639.svg create mode 100644 sources/themes/material/img/emojis/svg/1f63a.svg create mode 100644 sources/themes/material/img/emojis/svg/1f63b.svg create mode 100644 sources/themes/material/img/emojis/svg/1f63c.svg create mode 100644 sources/themes/material/img/emojis/svg/1f63d.svg create mode 100644 sources/themes/material/img/emojis/svg/1f63e.svg create mode 100644 sources/themes/material/img/emojis/svg/1f63f.svg create mode 100644 sources/themes/material/img/emojis/svg/1f640.svg create mode 100644 sources/themes/material/img/emojis/svg/1f641.svg create mode 100644 sources/themes/material/img/emojis/svg/1f642.svg create mode 100644 sources/themes/material/img/emojis/svg/1f645.svg create mode 100644 sources/themes/material/img/emojis/svg/1f646.svg create mode 100644 sources/themes/material/img/emojis/svg/1f647.svg create mode 100644 sources/themes/material/img/emojis/svg/1f648.svg create mode 100644 sources/themes/material/img/emojis/svg/1f649.svg create mode 100644 sources/themes/material/img/emojis/svg/1f64a.svg create mode 100644 sources/themes/material/img/emojis/svg/1f64b.svg create mode 100644 sources/themes/material/img/emojis/svg/1f64c.svg create mode 100644 sources/themes/material/img/emojis/svg/1f64d.svg create mode 100644 sources/themes/material/img/emojis/svg/1f64e.svg create mode 100644 sources/themes/material/img/emojis/svg/1f64f.svg create mode 100644 sources/themes/material/img/emojis/svg/1f680.svg create mode 100644 sources/themes/material/img/emojis/svg/1f681.svg create mode 100644 sources/themes/material/img/emojis/svg/1f682.svg create mode 100644 sources/themes/material/img/emojis/svg/1f683.svg create mode 100644 sources/themes/material/img/emojis/svg/1f684.svg create mode 100644 sources/themes/material/img/emojis/svg/1f685.svg create mode 100644 sources/themes/material/img/emojis/svg/1f686.svg create mode 100644 sources/themes/material/img/emojis/svg/1f687.svg create mode 100644 sources/themes/material/img/emojis/svg/1f688.svg create mode 100644 sources/themes/material/img/emojis/svg/1f689.svg create mode 100644 sources/themes/material/img/emojis/svg/1f68a.svg create mode 100644 sources/themes/material/img/emojis/svg/1f68b.svg create mode 100644 sources/themes/material/img/emojis/svg/1f68c.svg create mode 100644 sources/themes/material/img/emojis/svg/1f68d.svg create mode 100644 sources/themes/material/img/emojis/svg/1f68e.svg create mode 100644 sources/themes/material/img/emojis/svg/1f68f.svg create mode 100644 sources/themes/material/img/emojis/svg/1f690.svg create mode 100644 sources/themes/material/img/emojis/svg/1f691.svg create mode 100644 sources/themes/material/img/emojis/svg/1f692.svg create mode 100644 sources/themes/material/img/emojis/svg/1f693.svg create mode 100644 sources/themes/material/img/emojis/svg/1f694.svg create mode 100644 sources/themes/material/img/emojis/svg/1f695.svg create mode 100644 sources/themes/material/img/emojis/svg/1f696.svg create mode 100644 sources/themes/material/img/emojis/svg/1f697.svg create mode 100644 sources/themes/material/img/emojis/svg/1f698.svg create mode 100644 sources/themes/material/img/emojis/svg/1f699.svg create mode 100644 sources/themes/material/img/emojis/svg/1f69a.svg create mode 100644 sources/themes/material/img/emojis/svg/1f69b.svg create mode 100644 sources/themes/material/img/emojis/svg/1f69c.svg create mode 100644 sources/themes/material/img/emojis/svg/1f69d.svg create mode 100644 sources/themes/material/img/emojis/svg/1f69e.svg create mode 100644 sources/themes/material/img/emojis/svg/1f69f.svg create mode 100644 sources/themes/material/img/emojis/svg/1f6a0.svg create mode 100644 sources/themes/material/img/emojis/svg/1f6a1.svg create mode 100644 sources/themes/material/img/emojis/svg/1f6a2.svg create mode 100644 sources/themes/material/img/emojis/svg/1f6a3.svg create mode 100644 sources/themes/material/img/emojis/svg/1f6a4.svg create mode 100644 sources/themes/material/img/emojis/svg/1f6a5.svg create mode 100644 sources/themes/material/img/emojis/svg/1f6a6.svg create mode 100644 sources/themes/material/img/emojis/svg/1f6a7.svg create mode 100644 sources/themes/material/img/emojis/svg/1f6a8.svg create mode 100644 sources/themes/material/img/emojis/svg/1f6a9.svg create mode 100644 sources/themes/material/img/emojis/svg/1f6aa.svg create mode 100644 sources/themes/material/img/emojis/svg/1f6ab.svg create mode 100644 sources/themes/material/img/emojis/svg/1f6ac.svg create mode 100644 sources/themes/material/img/emojis/svg/1f6ad.svg create mode 100644 sources/themes/material/img/emojis/svg/1f6ae.svg create mode 100644 sources/themes/material/img/emojis/svg/1f6af.svg create mode 100644 sources/themes/material/img/emojis/svg/1f6b0.svg create mode 100644 sources/themes/material/img/emojis/svg/1f6b1.svg create mode 100644 sources/themes/material/img/emojis/svg/1f6b2.svg create mode 100644 sources/themes/material/img/emojis/svg/1f6b3.svg create mode 100644 sources/themes/material/img/emojis/svg/1f6b4.svg create mode 100644 sources/themes/material/img/emojis/svg/1f6b5.svg create mode 100644 sources/themes/material/img/emojis/svg/1f6b6.svg create mode 100644 sources/themes/material/img/emojis/svg/1f6b7.svg create mode 100644 sources/themes/material/img/emojis/svg/1f6b8.svg create mode 100644 sources/themes/material/img/emojis/svg/1f6b9.svg create mode 100644 sources/themes/material/img/emojis/svg/1f6ba.svg create mode 100644 sources/themes/material/img/emojis/svg/1f6bb.svg create mode 100644 sources/themes/material/img/emojis/svg/1f6bc.svg create mode 100644 sources/themes/material/img/emojis/svg/1f6bd.svg create mode 100644 sources/themes/material/img/emojis/svg/1f6be.svg create mode 100644 sources/themes/material/img/emojis/svg/1f6bf.svg create mode 100644 sources/themes/material/img/emojis/svg/1f6c0.svg create mode 100644 sources/themes/material/img/emojis/svg/1f6c1.svg create mode 100644 sources/themes/material/img/emojis/svg/1f6c2.svg create mode 100644 sources/themes/material/img/emojis/svg/1f6c3.svg create mode 100644 sources/themes/material/img/emojis/svg/1f6c4.svg create mode 100644 sources/themes/material/img/emojis/svg/1f6c5.svg create mode 100644 sources/themes/material/img/emojis/svg/203c.svg create mode 100644 sources/themes/material/img/emojis/svg/2049.svg create mode 100644 sources/themes/material/img/emojis/svg/2122.svg create mode 100644 sources/themes/material/img/emojis/svg/2139.svg create mode 100644 sources/themes/material/img/emojis/svg/2194.svg create mode 100644 sources/themes/material/img/emojis/svg/2195.svg create mode 100644 sources/themes/material/img/emojis/svg/2196.svg create mode 100644 sources/themes/material/img/emojis/svg/2197.svg create mode 100644 sources/themes/material/img/emojis/svg/2198.svg create mode 100644 sources/themes/material/img/emojis/svg/2199.svg create mode 100644 sources/themes/material/img/emojis/svg/21a9.svg create mode 100644 sources/themes/material/img/emojis/svg/21aa.svg create mode 100644 sources/themes/material/img/emojis/svg/23-20e3.svg create mode 100644 sources/themes/material/img/emojis/svg/231a.svg create mode 100644 sources/themes/material/img/emojis/svg/231b.svg create mode 100644 sources/themes/material/img/emojis/svg/23e9.svg create mode 100644 sources/themes/material/img/emojis/svg/23ea.svg create mode 100644 sources/themes/material/img/emojis/svg/23eb.svg create mode 100644 sources/themes/material/img/emojis/svg/23ec.svg create mode 100644 sources/themes/material/img/emojis/svg/23f0.svg create mode 100644 sources/themes/material/img/emojis/svg/23f3.svg create mode 100644 sources/themes/material/img/emojis/svg/24c2.svg create mode 100644 sources/themes/material/img/emojis/svg/25aa.svg create mode 100644 sources/themes/material/img/emojis/svg/25ab.svg create mode 100644 sources/themes/material/img/emojis/svg/25b6.svg create mode 100644 sources/themes/material/img/emojis/svg/25c0.svg create mode 100644 sources/themes/material/img/emojis/svg/25fb.svg create mode 100644 sources/themes/material/img/emojis/svg/25fc.svg create mode 100644 sources/themes/material/img/emojis/svg/25fd.svg create mode 100644 sources/themes/material/img/emojis/svg/25fe.svg create mode 100644 sources/themes/material/img/emojis/svg/2600.svg create mode 100644 sources/themes/material/img/emojis/svg/2601.svg create mode 100644 sources/themes/material/img/emojis/svg/260e.svg create mode 100644 sources/themes/material/img/emojis/svg/2611.svg create mode 100644 sources/themes/material/img/emojis/svg/2614.svg create mode 100644 sources/themes/material/img/emojis/svg/2615.svg create mode 100644 sources/themes/material/img/emojis/svg/261d.svg create mode 100644 sources/themes/material/img/emojis/svg/263a.svg create mode 100644 sources/themes/material/img/emojis/svg/2648.svg create mode 100644 sources/themes/material/img/emojis/svg/2649.svg create mode 100644 sources/themes/material/img/emojis/svg/264a.svg create mode 100644 sources/themes/material/img/emojis/svg/264b.svg create mode 100644 sources/themes/material/img/emojis/svg/264c.svg create mode 100644 sources/themes/material/img/emojis/svg/264d.svg create mode 100644 sources/themes/material/img/emojis/svg/264e.svg create mode 100644 sources/themes/material/img/emojis/svg/264f.svg create mode 100644 sources/themes/material/img/emojis/svg/2650.svg create mode 100644 sources/themes/material/img/emojis/svg/2651.svg create mode 100644 sources/themes/material/img/emojis/svg/2652.svg create mode 100644 sources/themes/material/img/emojis/svg/2653.svg create mode 100644 sources/themes/material/img/emojis/svg/2660.svg create mode 100644 sources/themes/material/img/emojis/svg/2663.svg create mode 100644 sources/themes/material/img/emojis/svg/2665.svg create mode 100644 sources/themes/material/img/emojis/svg/2666.svg create mode 100644 sources/themes/material/img/emojis/svg/2668.svg create mode 100644 sources/themes/material/img/emojis/svg/267b.svg create mode 100644 sources/themes/material/img/emojis/svg/267f.svg create mode 100644 sources/themes/material/img/emojis/svg/2693.svg create mode 100644 sources/themes/material/img/emojis/svg/26a0.svg create mode 100644 sources/themes/material/img/emojis/svg/26a1.svg create mode 100644 sources/themes/material/img/emojis/svg/26aa.svg create mode 100644 sources/themes/material/img/emojis/svg/26ab.svg create mode 100644 sources/themes/material/img/emojis/svg/26bd.svg create mode 100644 sources/themes/material/img/emojis/svg/26be.svg create mode 100644 sources/themes/material/img/emojis/svg/26c4.svg create mode 100644 sources/themes/material/img/emojis/svg/26c5.svg create mode 100644 sources/themes/material/img/emojis/svg/26ce.svg create mode 100644 sources/themes/material/img/emojis/svg/26d4.svg create mode 100644 sources/themes/material/img/emojis/svg/26ea.svg create mode 100644 sources/themes/material/img/emojis/svg/26f2.svg create mode 100644 sources/themes/material/img/emojis/svg/26f3.svg create mode 100644 sources/themes/material/img/emojis/svg/26f5.svg create mode 100644 sources/themes/material/img/emojis/svg/26fa.svg create mode 100644 sources/themes/material/img/emojis/svg/26fd.svg create mode 100644 sources/themes/material/img/emojis/svg/2702.svg create mode 100644 sources/themes/material/img/emojis/svg/2705.svg create mode 100644 sources/themes/material/img/emojis/svg/2708.svg create mode 100644 sources/themes/material/img/emojis/svg/2709.svg create mode 100644 sources/themes/material/img/emojis/svg/270a.svg create mode 100644 sources/themes/material/img/emojis/svg/270b.svg create mode 100644 sources/themes/material/img/emojis/svg/270c.svg create mode 100644 sources/themes/material/img/emojis/svg/270f.svg create mode 100644 sources/themes/material/img/emojis/svg/2712.svg create mode 100644 sources/themes/material/img/emojis/svg/2714.svg create mode 100644 sources/themes/material/img/emojis/svg/2716.svg create mode 100644 sources/themes/material/img/emojis/svg/2728.svg create mode 100644 sources/themes/material/img/emojis/svg/2733.svg create mode 100644 sources/themes/material/img/emojis/svg/2734.svg create mode 100644 sources/themes/material/img/emojis/svg/2744.svg create mode 100644 sources/themes/material/img/emojis/svg/2747.svg create mode 100644 sources/themes/material/img/emojis/svg/274c.svg create mode 100644 sources/themes/material/img/emojis/svg/274e.svg create mode 100644 sources/themes/material/img/emojis/svg/2753.svg create mode 100644 sources/themes/material/img/emojis/svg/2754.svg create mode 100644 sources/themes/material/img/emojis/svg/2755.svg create mode 100644 sources/themes/material/img/emojis/svg/2757.svg create mode 100644 sources/themes/material/img/emojis/svg/2764.svg create mode 100644 sources/themes/material/img/emojis/svg/2795.svg create mode 100644 sources/themes/material/img/emojis/svg/2796.svg create mode 100644 sources/themes/material/img/emojis/svg/2797.svg create mode 100644 sources/themes/material/img/emojis/svg/27a1.svg create mode 100644 sources/themes/material/img/emojis/svg/27b0.svg create mode 100644 sources/themes/material/img/emojis/svg/27bf.svg create mode 100644 sources/themes/material/img/emojis/svg/2934.svg create mode 100644 sources/themes/material/img/emojis/svg/2935.svg create mode 100644 sources/themes/material/img/emojis/svg/2b05.svg create mode 100644 sources/themes/material/img/emojis/svg/2b06.svg create mode 100644 sources/themes/material/img/emojis/svg/2b07.svg create mode 100644 sources/themes/material/img/emojis/svg/2b1b.svg create mode 100644 sources/themes/material/img/emojis/svg/2b1c.svg create mode 100644 sources/themes/material/img/emojis/svg/2b50.svg create mode 100644 sources/themes/material/img/emojis/svg/2b55.svg create mode 100644 sources/themes/material/img/emojis/svg/30-20e3.svg create mode 100644 sources/themes/material/img/emojis/svg/3030.svg create mode 100644 sources/themes/material/img/emojis/svg/303d.svg create mode 100644 sources/themes/material/img/emojis/svg/31-20e3.svg create mode 100644 sources/themes/material/img/emojis/svg/32-20e3.svg create mode 100644 sources/themes/material/img/emojis/svg/3297.svg create mode 100644 sources/themes/material/img/emojis/svg/3299.svg create mode 100644 sources/themes/material/img/emojis/svg/33-20e3.svg create mode 100644 sources/themes/material/img/emojis/svg/34-20e3.svg create mode 100644 sources/themes/material/img/emojis/svg/35-20e3.svg create mode 100644 sources/themes/material/img/emojis/svg/36-20e3.svg create mode 100644 sources/themes/material/img/emojis/svg/37-20e3.svg create mode 100644 sources/themes/material/img/emojis/svg/38-20e3.svg create mode 100644 sources/themes/material/img/emojis/svg/39-20e3.svg create mode 100644 sources/themes/material/img/emojis/svg/a9.svg create mode 100644 sources/themes/material/img/emojis/svg/ae.svg create mode 100644 sources/themes/material/img/emojis/svg/e50a.svg diff --git a/sources/INSTALL.md b/sources/INSTALL.md index 0f4df82..8bc0f8d 100644 --- a/sources/INSTALL.md +++ b/sources/INSTALL.md @@ -1,7 +1,7 @@ Movim Installation =================== -* Movim deployment tutorial: http://wiki.movim.eu/en:install +* Movim deployment tutorial: https://github.com/edhelas/movim/wiki/Install-Movim You can also follow the Jappix project documentation for a full stack deployment: diff --git a/sources/README.md b/sources/README.md index 1637b01..6bd7e57 100644 --- a/sources/README.md +++ b/sources/README.md @@ -7,7 +7,7 @@ Movim is a decentralized social network, written in PHP and HTML5 and based on t Installation ------------ -Please refer to the installation instructions that are available on the official Wiki : https://wiki.movim.eu . +Please refer to the installation instructions that are available on the GitHub Wiki : https://github.com/edhelas/movim/wiki . Translations @@ -26,6 +26,12 @@ You can also use Movim on our official Pods : * https://pod.movim.eu/ server hosted in France * https://nl.movim.eu/ server hosted in The Netherlands +### Librairies +Movim also contains two specific librairies : + +* https://github.com/edhelas/moxl Moxl (for Movim XMPP Library) is a PHP XMPP library especially made for the Movim project +* https://github.com/edhelas/modl Modl (for Movim Data Layer) is a light PHP Database layer using DAO pattern + Support Us ---------- You can support us on : diff --git a/sources/app/assets/js/movim_websocket.js b/sources/app/assets/js/movim_websocket.js index 19dca45..4555e8d 100644 --- a/sources/app/assets/js/movim_websocket.js +++ b/sources/app/assets/js/movim_websocket.js @@ -26,6 +26,7 @@ var MovimWebsocket = { attached: new Array(), registered: new Array(), unregistered: false, + attempts: 1, launchAttached : function() { for(var i = 0; i < MovimWebsocket.attached.length; i++) { @@ -50,6 +51,7 @@ var MovimWebsocket = { this.connection.onopen = function(e) { console.log("Connection established!"); + MovimWebsocket.attempts = 1; MovimWebsocket.launchAttached(); }; @@ -87,14 +89,25 @@ var MovimWebsocket = { }; this.connection.onerror = function(e) { + console.log(e.code); + console.log(e); console.log("Connection error!"); + + setTimeout(function () { + // We've tried to reconnect so increment the attempts by 1 + MovimWebsocket.attempts++; + + // Connection has closed so try to reconnect every 10 seconds. + MovimWebsocket.init(); + }, MovimWebsocket.generateInterval()); + // We prevent the onclose launch this.onclose = null; }; }, send : function(widget, func, params) { - if(this.connection.readyState != 0) { + if(this.connection.readyState == 1) { this.connection.send( JSON.stringify( {'func' : 'message', 'body' : @@ -151,6 +164,17 @@ var MovimWebsocket = { unregister : function(reload) { if(reload == false) this.unregistered = true; this.connection.unregister(); + }, + + generateInterval :function() { + var maxInterval = (Math.pow(2, MovimWebsocket.attempts) - 1) * 1000; + + if (maxInterval > 30*1000) { + maxInterval = 30*1000; // If the generated interval is more than 30 seconds, truncate it down to 30 seconds. + } + + // generate the interval to a random number between 0 and the maxInterval determined from above + return Math.random() * maxInterval; } } @@ -164,6 +188,14 @@ function remoteUnregisterReload() MovimWebsocket.unregister(true); } +document.addEventListener("visibilitychange", function () { + if(!document.hidden) { + if(MovimWebsocket.connection.readyState == 3) { + MovimWebsocket.init(); + } + } +}); + window.onbeforeunload = function() { MovimWebsocket.connection.onclose = function () {}; // disable onclose handler first MovimWebsocket.connection.close() diff --git a/sources/app/controllers/NodeController.php b/sources/app/controllers/NodeController.php new file mode 100644 index 0000000..6337538 --- /dev/null +++ b/sources/app/controllers/NodeController.php @@ -0,0 +1,11 @@ +session_only = false; + } + + function dispatch() { + $this->page->setTitle(__('page.groups')); + } +} diff --git a/sources/app/controllers/TagController.php b/sources/app/controllers/TagController.php new file mode 100644 index 0000000..4707b4b --- /dev/null +++ b/sources/app/controllers/TagController.php @@ -0,0 +1,11 @@ +session_only = false; + } + + function dispatch() { + $this->page->setTitle(__('page.tag')); + } +} diff --git a/sources/app/helpers/StringHelper.php b/sources/app/helpers/StringHelper.php index bca47df..eca5302 100644 --- a/sources/app/helpers/StringHelper.php +++ b/sources/app/helpers/StringHelper.php @@ -23,7 +23,7 @@ class MovimEmoji public function replace($string, $large = false) { - $this->_emoji->setAssetUrlFormat($this->getPath($large)); + $this->_emoji->setAssetUrlFormat($this->getPath()); $string = $this->_emoji->replaceEmojiWithImages($string); $this->_emoji->setAssetUrlFormat($this->getPath()); @@ -32,10 +32,7 @@ class MovimEmoji private function getPath($large = false) { - $path = BASE_URI . 'themes/' . $this->_theme . '/img/emojis/'; - if($large) $path .= 'large/'; - - return $path.'%s.png'; + return BASE_URI . 'themes/' . $this->_theme . '/img/emojis/svg/%s.svg'; } public static function getInstance() @@ -78,6 +75,18 @@ function addUrls($string, $preview = false) { ); } +function addHFR($string) { + // HFR EasterEgg + return preg_replace_callback( + '/\[:([\w\s-]+)([:\d])*\]/', function ($match) { + $num = ''; + if(count($match) == 3) + $num = $match[2].'/'; + return ''.$match[0].''; + }, $string + ); +} + /** * @desc Prepare the string (add the a to the links and show the smileys) * @@ -328,7 +337,7 @@ function purifyHTML($string) $config = \HTMLPurifier_Config::createDefault(); $config->set('HTML.Doctype', 'HTML 4.01 Transitional'); $config->set('Cache.SerializerPath', '/tmp'); - $config->set('HTML.DefinitionID', 'html5-definitions'); + $config->set('HTML.DefinitionID', 'html5-definitions'); $config->set('HTML.DefinitionRev', 1); if ($def = $config->maybeGetRawHTMLDefinition()) { $def->addElement('video', 'Block', 'Optional: (source, Flow) | (Flow, source) | Flow', 'Common', array( @@ -346,6 +355,10 @@ function purifyHTML($string) 'muted' => 'Bool', 'controls' => 'Bool', )); + $def->addElement('source', 'Block', 'Flow', 'Common', array( + 'src' => 'URI', + 'type' => 'Text', + )); } $purifier = new \HTMLPurifier($config); diff --git a/sources/app/models/contact/Contact.php b/sources/app/models/contact/Contact.php index 95a5ee2..80115ce 100644 --- a/sources/app/models/contact/Contact.php +++ b/sources/app/models/contact/Contact.php @@ -197,7 +197,7 @@ class Contact extends Model { $p->fromBase($this->photobin); $p->set($this->jid); - if(isset($this->email)) { + if(isset($this->email) && $this->email != '') { \createEmailPic(strtolower($this->jid), $this->email); } } @@ -214,7 +214,7 @@ class Contact extends Model { public function getPhoto($size = 'l', $jid = false) { if($size == 'email') { - return BASE_URI.'cache/'.strtolower($this->jid).'_email.jpg'; + return BASE_URI.'cache/'.strtolower($this->jid).'_email.png'; } else { $sizes = array( 'wall' => array(1920, 1080), @@ -355,8 +355,10 @@ class Contact extends Model { && !filter_var($this->name, FILTER_VALIDATE_EMAIL) ) $truename = $this->name; - else - $truename = $this->jid; + else { + $truename = explodeJid($this->jid); + $truename = $truename['username']; + } return $truename; } diff --git a/sources/app/models/contact/ContactDAO.php b/sources/app/models/contact/ContactDAO.php index 6ee9635..7ab75a4 100644 --- a/sources/app/models/contact/ContactDAO.php +++ b/sources/app/models/contact/ContactDAO.php @@ -412,21 +412,6 @@ class ContactDAO extends SQL { return (int)$results[0]; } - function cleanRoster() { - $this->_sql = ' - delete from rosterlink - where session = :session'; - - $this->prepare( - 'RosterLink', - array( - 'session' => $this->_user - ) - ); - - return $this->run('RosterLink'); - } - function getRoster() { $this->_sql = ' select @@ -495,30 +480,6 @@ class ContactDAO extends SQL { return $this->run('RosterContact'); } - function getRosterChat() { - $this->_sql = ' - select * from rosterlink - left outer join ( - select * from presence - order by presence.priority desc - ) as presence - on rosterlink.jid = presence.jid - left outer join contact - on rosterlink.jid = contact.jid - where rosterlink.session = :session - and rosterlink.chaton > 0 - order by rosterlink.groupname, rosterlink.jid, presence.value'; - - $this->prepare( - 'RosterLink', - array( - 'session' => $this->_user - ) - ); - - return $this->run('RosterContact'); - } - function getRosterFrom() { $this->_sql = ' select * from rosterlink @@ -621,27 +582,6 @@ class ContactDAO extends SQL { return $this->run('PresenceContact'); } - function getMe($item = false) { - $this->_sql = ' - select * from contact - left outer join presence on contact.jid = presence.jid - where contact.jid = :jid - and presence.session = :session'; - - $this->prepare( - 'RosterLink', - array( - 'session' => $this->_user, - 'jid' => $this->_user - ) - ); - - if($item) - return $this->run('RosterContact'); - else - return $this->run('RosterContact', 'item'); - } - function getTop($limit = 6) { $this->_sql = ' select *, jidfrom from ( @@ -681,22 +621,4 @@ class ContactDAO extends SQL { return $this->run('RosterContact'); } - - function getStatistics() { - $this->_sql = ' - select - (select count(*) from postn where postn.session = :session ) as post, - (select count(*) from rosterlink where rosterlink.session= :session ) as rosterlink, - (select count(*) from presence where presence.session= :session ) as presence, - (select count(*) from message where message.session = :session) as message;'; - - $this->prepare( - 'Postn', - array( - 'session' => $this->_user - ) - ); - - return $this->run(null, 'array'); - } } diff --git a/sources/app/models/message/Message.php b/sources/app/models/message/Message.php index 4b3bb46..b4658e6 100644 --- a/sources/app/models/message/Message.php +++ b/sources/app/models/message/Message.php @@ -20,6 +20,7 @@ class Message extends Model { public $delivered; public $color; // Only for chatroom purpose + public $publishedPrepared; // Only for chat purpose public function __construct() { @@ -99,7 +100,7 @@ class Message extends Model { public function convertEmojis() { $emoji = \MovimEmoji::getInstance(); - $this->body = $emoji->replace($this->body); + $this->body = addHFR($emoji->replace($this->body)); } public function addUrls() diff --git a/sources/app/models/message/MessageDAO.php b/sources/app/models/message/MessageDAO.php index a6d226b..f3af399 100644 --- a/sources/app/models/message/MessageDAO.php +++ b/sources/app/models/message/MessageDAO.php @@ -2,7 +2,7 @@ namespace modl; -class MessageDAO extends SQL { +class MessageDAO extends SQL { function set(Message $message) { $this->_sql = ' insert into message @@ -31,7 +31,7 @@ class MessageDAO extends SQL { :published, :delivered )'; - + $this->prepare( 'Message', array( @@ -48,21 +48,21 @@ class MessageDAO extends SQL { 'delivered' => $message->delivered ) ); - + return $this->run('Message'); } - + function getContact($jid, $limitf = false, $limitr = false) { $this->_sql = ' - select * from message + select * from message where session = :session and (jidfrom = :jidfrom or jidto = :jidto) order by published desc'; - - if($limitr) + + if($limitr) $this->_sql = $this->_sql.' limit '.$limitr.' offset '.$limitf; - + $this->prepare( 'Message', array( @@ -71,7 +71,7 @@ class MessageDAO extends SQL { 'jidto' => $jid ) ); - + return $this->run('Message'); } @@ -90,13 +90,37 @@ class MessageDAO extends SQL { 'session' => $this->_user ) ); - + + return $this->run('Message'); + } + + function getHistory($jid, $date, $limit = 30) { + $this->_sql = ' + select * from message + where session = :session + and (jidfrom = :jidfrom + or jidto = :jidto) + and published < :published + order by published desc'; + + $this->_sql .= ' limit '.(string)$limit; + + $this->prepare( + 'Message', + array( + 'session' => $this->_user, + 'jidfrom' => $jid, + 'jidto' => $jid, + 'published' => $date + ) + ); + return $this->run('Message'); } function getRoomSubject($room) { $this->_sql = ' - select * from message + select * from message where jidfrom = :jidfrom and subject != \'\' order by published desc @@ -108,10 +132,10 @@ class MessageDAO extends SQL { 'jidfrom' => $room ) ); - + return $this->run('Message', 'item'); } - + function clearMessage() { $this->_sql = ' delete from message @@ -123,24 +147,7 @@ class MessageDAO extends SQL { 'session' => $this->_user ) ); - + return $this->run('Message'); } - - function getStatistics() { - $this->_sql = ' - select count(*) as count, extract(month from published) as month, extract(year from published) as year - from message - where session = :session - group by month, year order by year, month'; - - $this->prepare( - 'Message', - array( - 'session' => $this->_user - ) - ); - - return $this->run(null, 'array'); - } } diff --git a/sources/app/models/postn/Postn.php b/sources/app/models/postn/Postn.php index e979fb2..a5088eb 100644 --- a/sources/app/models/postn/Postn.php +++ b/sources/app/models/postn/Postn.php @@ -24,7 +24,6 @@ class Postn extends Model { public $updated; // public $delay; // - public $tags; // Store the tags public $picture; // Tell if the post contain embeded pictures public $lat; @@ -36,6 +35,8 @@ class Postn extends Model { public $hash; + private $youtube; + public function __construct() { $this->hash = md5(openssl_random_pseudo_bytes(5)); @@ -80,8 +81,6 @@ class Postn extends Model { {"type":"text" }, "picture" : {"type":"int", "size":4 }, - "tags" : - {"type":"text" }, "hash" : {"type":"string", "size":128 } }'; @@ -96,7 +95,7 @@ class Postn extends Model { case 'html': case 'xhtml': $dom = new \DOMDocument('1.0', 'utf-8'); - $import = dom_import_simplexml($c->children()); + $import = @dom_import_simplexml($c->children()); if($import == null) { $import = dom_import_simplexml($c); } @@ -186,19 +185,24 @@ class Postn extends Model { // Tags parsing if($entry->entry->category) { - $this->tags = array(); + $td = new \Modl\TagDAO; if($entry->entry->category->count() == 1 - && isset($entry->entry->category->attributes()->term)) - array_push($this->tags, (string)$entry->entry->category->attributes()->term); - else - foreach($entry->entry->category as $cat) - array_push($this->tags, (string)$cat->attributes()->term); + && isset($entry->entry->category->attributes()->term)) { + $tag = new \Modl\Tag; + $tag->nodeid = $this->__get('nodeid'); + $tag->tag = (string)$entry->entry->category->attributes()->term; + $td->set($tag); + } else { + foreach($entry->entry->category as $cat) { + $tag = new \Modl\Tag; + $tag->nodeid = $this->__get('nodeid'); + $tag->tag = (string)$cat->attributes()->term; + $td->set($tag); + } + } } - if(!empty($this->tags)) - $this->__set('tags', serialize($this->tags)); - if($contentimg != '') $content .= '
'.$contentimg; @@ -206,7 +210,6 @@ class Postn extends Model { $this->__set('commentplace', $this->origin); $this->__set('content', trim($content)); - $this->contentcleaned = purifyHTML(html_entity_decode($this->content)); if($entry->entry->geoloc) { @@ -221,6 +224,10 @@ class Postn extends Model { return in_array($type, array('image/jpeg', 'image/png', 'image/jpg')); } + private function typeIsLink($type) { + return $type == 'text/html'; + } + private function setAttachements($links) { $contentimg = ''; @@ -252,24 +259,29 @@ class Postn extends Model { public function getAttachements() { $attachements = null; + $this->picture = null; if(isset($this->links)) { $attachements = array('pictures' => array(), 'files' => array(), 'links' => array()); $links = unserialize($this->links); foreach($links as $l) { - switch($l['rel']) { - case 'enclosure' : - if($this->typeIsPicture($l['type'])) { - array_push($attachements['pictures'], $l); - } else { - array_push($attachements['files'], $l); - } - break; - case 'related' : - case 'alternate' : - array_push($attachements['links'], array('href' => $l['href'], 'url' => parse_url($l['href']))); - break; + if(isset($l['type']) && $this->typeIsPicture($l['type'])) { + if($this->picture == null) { + $this->picture = $l['href']; + } + array_push($attachements['pictures'], $l); + } elseif((isset($l['type']) && $this->typeIsLink($l['type']) + || in_array($l['rel'], array('related', 'alternate'))) + && Validator::url()->validate($l['href'])) { + if($this->youtube == null + && preg_match('%(?:youtube(?:-nocookie)?\.com/(?:[^/]+/.+/|(?:v|e(?:mbed)?)/|.*[?&]v=)|youtu\.be/)([^"&?/ ]{11})%i', $l['href'], $match)) { + $this->youtube = $match[1]; + } + + array_push($attachements['links'], array('href' => $l['href'], 'url' => parse_url($l['href']))); + } elseif(isset($l['rel']) && $l['rel'] == 'enclosure') { + array_push($attachements['files'], $l); } } } @@ -284,50 +296,39 @@ class Postn extends Model { public function getAttachement() { $attachements = $this->getAttachements(); - if(isset($attachements['pictures'])) { + if(isset($attachements['pictures']) && !isset($attachements['links'])) { return $attachements['pictures'][0]; } if(isset($attachements['files'])) { return $attachements['files'][0]; } if(isset($attachements['links'])) { - foreach($attachements['links'] as $link) { - if(Validator::url()->validate($link['href'])) { - return $link; - } - } - return false; + return $attachements['links'][0]; } return false; } public function getPicture() { - $attachements = $this->getAttachements(); - if(is_array($attachements) - && array_key_exists('pictures', $attachements)) { - return $attachements['pictures'][0]['href']; - } + return $this->picture; + } + + public function getYoutube() + { + return $this->youtube; } public function getPlace() { - if(isset($this->lat, $this->lon) && $this->lat != '' && $this->lon != '') { - return true; - } - else - return false; + return (isset($this->lat, $this->lon) && $this->lat != '' && $this->lon != ''); } public function isMine() { $user = new \User(); - if($this->aid == $user->getLogin() - || $this->origin == $user->getLogin()) - return true; - else - return false; + return ($this->aid == $user->getLogin() + || $this->origin == $user->getLogin()); } public function getUUID() @@ -341,11 +342,7 @@ class Postn extends Model { public function isMicroblog() { - if($this->node == "urn:xmpp:microblog:0") { - return true; - } else { - return false; - } + return ($this->node == "urn:xmpp:microblog:0"); } public function isEditable() @@ -355,7 +352,7 @@ class Postn extends Model { public function isShort() { - return (strlen($this->contentcleaned) < 500); + return (strlen($this->contentcleaned) < 700); } public function getPublicUrl() @@ -363,15 +360,29 @@ class Postn extends Model { if($this->isMicroblog()) { return \Route::urlize('blog', array($this->origin)); } else { - return \Route::urlize('grouppublic', array($this->origin, $this->node)); + return \Route::urlize('node', array($this->origin, $this->node)); + } + } + + public function getTags() + { + $td = new \Modl\TagDAO; + $tags = $td->getTags($this->nodeid); + if(is_array($tags)) { + return array_map(function($tag) { return $tag->tag; }, $tags); + } + } + + public function getTagsImploded() + { + $tags = $this->getTags(); + if(is_array($tags)) { + return implode(', ', $tags); } } public function isPublic() { - if(isset($this->privacy) && $this->privacy) { - return true; - } - return false; + return (isset($this->privacy) && $this->privacy); } } diff --git a/sources/app/models/postn/PostnDAO.php b/sources/app/models/postn/PostnDAO.php index 44d0405..60c21f3 100644 --- a/sources/app/models/postn/PostnDAO.php +++ b/sources/app/models/postn/PostnDAO.php @@ -26,7 +26,6 @@ class PostnDAO extends SQL { links = :links, picture = :picture, - tags = :tags, hash = :hash @@ -57,7 +56,6 @@ class PostnDAO extends SQL { 'links' => $post->links, 'picture' => $post->picture, - 'tags' => $post->tags, 'hash' => $post->hash, @@ -97,7 +95,6 @@ class PostnDAO extends SQL { links, picture, - tags, hash) values( @@ -125,7 +122,6 @@ class PostnDAO extends SQL { :links, :picture, - :tags, :hash )'; @@ -153,7 +149,6 @@ class PostnDAO extends SQL { 'links' => $post->links, 'picture' => $post->picture, - 'tags' => $post->tags, 'hash' => $post->hash, @@ -210,8 +205,8 @@ class PostnDAO extends SQL { and postn.node != \'urn:xmpp:microblog:0\' order by postn.published desc'; - if($limitr) - $this->_sql = $this->_sql.' limit '.$limitr.' offset '.$limitf; + if($limitr !== false) + $this->_sql = $this->_sql.' limit '.(int)$limitr.' offset '.(int)$limitf; $this->prepare( 'Postn', @@ -225,6 +220,28 @@ class PostnDAO extends SQL { return $this->run('ContactPostn'); } + function getPublicTag($tag, $limitf = false, $limitr = false) { + $this->_sql = ' + select *, postn.aid, privacy.value as privacy from postn + left outer join contact on postn.aid = contact.jid + left outer join privacy on postn.nodeid = privacy.pkey + where nodeid in (select nodeid from tag where tag = :title) + and privacy.value = 1 + order by postn.published desc'; + + if($limitr !== false) + $this->_sql = $this->_sql.' limit '.(int)$limitr.' offset '.(int)$limitf; + + $this->prepare( + 'Postn', + array( + 'title' => $tag # Hack + ) + ); + + return $this->run('ContactPostn'); + } + function getNodeUnfiltered($from, $node, $limitf = false, $limitr = false) { $this->_sql = ' select *, postn.aid, privacy.value as privacy from postn @@ -248,20 +265,21 @@ class PostnDAO extends SQL { return $this->run('ContactPostn'); } - function getGallery($from) { + function getGallery($from, $limitf = false, $limitr = false) { $this->_sql = ' select *, postn.aid, privacy.value as privacy from postn left outer join contact on postn.aid = contact.jid left outer join privacy on postn.nodeid = privacy.pkey - where (postn.origin in (select jid from rosterlink where session = :origin and rostersubscription in (\'both\', \'to\'))) - and postn.origin = :aid + where postn.aid = :aid and postn.picture = 1 order by postn.published desc'; + if($limitr !== false) + $this->_sql = $this->_sql.' limit '.(int)$limitr.' offset '.(int)$limitf; + $this->prepare( 'Postn', array( - 'origin' => $this->_user, 'aid' => $from // Another hack ) ); @@ -410,7 +428,7 @@ class PostnDAO extends SQL { return $this->run('ContactPostn'); } - function getPublicItem($origin, $node, $nodeid, $limitf = false, $limitr = false) { + function getPublicItem($origin, $node, $nodeid) { $this->_sql = ' select *, postn.aid, privacy.value as privacy from postn left outer join contact on postn.aid = contact.jid @@ -421,9 +439,6 @@ class PostnDAO extends SQL { and postn.nodeid = :nodeid order by postn.published desc'; - if($limitr) - $this->_sql = $this->_sql.' limit '.$limitr.' offset '.$limitf; - $this->prepare( 'Postn', array( @@ -483,24 +498,6 @@ class PostnDAO extends SQL { return $this->run('Postn'); } - // TODO: fixme - function getStatistics() { - $this->_sql = ' - select count(*) as count, extract(month from published) as month, extract(year from published) as year - from postn - where session = :session - group by month, year order by year desc, month desc'; - - $this->prepare( - 'Postn', - array( - 'session' => $this->_user - ) - ); - - return $this->run(null, 'array'); - } - function getCountSince($date) { $this->_sql = ' select count(*) from postn diff --git a/sources/app/models/rosterlink/RosterLinkDAO.php b/sources/app/models/rosterlink/RosterLinkDAO.php index 0e32c16..ef2f6d4 100644 --- a/sources/app/models/rosterlink/RosterLinkDAO.php +++ b/sources/app/models/rosterlink/RosterLinkDAO.php @@ -137,25 +137,6 @@ class RosterLinkDAO extends SQL { $this->set($r); } - function setChat($jid, $chaton) { - $this->_sql = ' - update rosterlink - set chaton = :chaton - where session = :session - and jid = :jid'; - - $this->prepare( - 'RosterLink', - array( - 'session' => $this->_user, - 'jid' => $jid, - 'chaton' => $chaton - ) - ); - - return $this->run('RosterLink'); - } - function get($jid) { $this->_sql = ' select * @@ -223,23 +204,6 @@ class RosterLinkDAO extends SQL { return $this->run('RosterLink'); } - function getChats() { - $this->_sql = ' - select * - from rosterlink - where session=:session - and chaton > 0'; - - $this->prepare( - 'RosterLink', - array( - 'session' => $this->_user - ) - ); - - return $this->run('RosterLink'); - } - function clearRosterLink() { $this->_sql = ' delete from rosterlink diff --git a/sources/app/models/tag/Tag.php b/sources/app/models/tag/Tag.php new file mode 100644 index 0000000..a78515c --- /dev/null +++ b/sources/app/models/tag/Tag.php @@ -0,0 +1,20 @@ +_struct = ' + { + "tag" : + {"type":"string", "size":64, "mandatory":true, "key":true }, + "nodeid" : + {"type":"string", "size":96, "mandatory":true, "key":true } + }'; + + parent::__construct(); + } +} diff --git a/sources/app/models/tag/TagDAO.php b/sources/app/models/tag/TagDAO.php new file mode 100644 index 0000000..06b4700 --- /dev/null +++ b/sources/app/models/tag/TagDAO.php @@ -0,0 +1,56 @@ +_sql = ' + update tag + set nodeid = :nodeid, + tag = :tag + where nodeid = :nodeid + and tag = :tag'; + + $this->prepare( + 'Tag', + array( + 'nodeid' => $t->nodeid, + 'tag' => $t->tag + ) + ); + + $this->run('Tag'); + + if(!$this->_effective) { + $this->_sql = ' + insert into tag + (nodeid, tag) + values (:nodeid, :tag)'; + + $this->prepare( + 'Tag', + array( + 'nodeid' => $t->nodeid, + 'tag' => $t->tag + ) + ); + + $this->run('Tag'); + } + } + + function getTags($nodeid) { + $this->_sql = ' + select * from tag + where nodeid = :nodeid'; + + $this->prepare( + 'Tag', + array( + 'nodeid' => $nodeid + ) + ); + + return $this->run('Tag'); + } +} diff --git a/sources/app/views/node.tpl b/sources/app/views/node.tpl new file mode 100644 index 0000000..0250f15 --- /dev/null +++ b/sources/app/views/node.tpl @@ -0,0 +1,7 @@ +
+
+
+ widget('Blog');?> +
+
+
diff --git a/sources/app/views/page.tpl b/sources/app/views/page.tpl index 21281fa..f8842e6 100644 --- a/sources/app/views/page.tpl +++ b/sources/app/views/page.tpl @@ -1,26 +1,19 @@ -get(); -?> + <?php $this->title();?> - - - - + meta();?> - - + + + + + + @@ -55,10 +48,6 @@ widget('Dialog');?> widget('Notification');?> content();?> - - displayFooterDebug(); - ?> diff --git a/sources/app/views/tag.tpl b/sources/app/views/tag.tpl new file mode 100644 index 0000000..0250f15 --- /dev/null +++ b/sources/app/views/tag.tpl @@ -0,0 +1,7 @@ +
+
+
+ widget('Blog');?> +
+
+
diff --git a/sources/app/widgets/Account/Account.php b/sources/app/widgets/Account/Account.php index c56e7b5..d217d75 100644 --- a/sources/app/widgets/Account/Account.php +++ b/sources/app/widgets/Account/Account.php @@ -56,7 +56,7 @@ class Account extends WidgetBase function ajaxChangePassword($form) { - $validate = Validator::string()->length(6, 40); + $validate = Validator::stringType()->length(6, 40); $p1 = $form->password->value; $p2 = $form->password_confirmation->value; @@ -113,7 +113,7 @@ class Account extends WidgetBase private function validateServer($server) { - $validate_server = Validator::string()->noWhitespace()->length(6, 80); + $validate_server = Validator::stringType()->noWhitespace()->length(6, 80); if(!$validate_server->validate($server)) return false; else return true; } diff --git a/sources/app/widgets/AccountNext/AccountNext.php b/sources/app/widgets/AccountNext/AccountNext.php index b2d3083..ec4a29c 100644 --- a/sources/app/widgets/AccountNext/AccountNext.php +++ b/sources/app/widgets/AccountNext/AccountNext.php @@ -1,7 +1,6 @@ content; - $xtf = new \XMPPtoForm(); - if(!empty($form->x)){ - switch($form->x->attributes()->xmlns) { - case 'jabber:x:data' : - $formview = $this->tpl(); + if($package->from == 'movim.eu') { + $movimview = $this->tpl(); + $movimview->assign('submitdata', $this->call('ajaxRegister', "movim_form_to_json('data')")); + $html = $movimview->draw('_accountnext_movim', true); - $formh = $xtf->getHTML($form->x->asXML()); - $formview->assign('submitdata', $this->call('ajaxRegister', "movim_form_to_json('data')")); + RPC::call('movim_fill', 'subscription_form', $html); + } else { + $xtf = new \XMPPtoForm(); + if(!empty($form->x)){ + switch($form->x->attributes()->xmlns) { + case 'jabber:x:data' : + $formview = $this->tpl(); - $formview->assign('formh', $formh); - $html = $formview->draw('_accountnext_form', true); + $formh = $xtf->getHTML($form->x->asXML()); + $formview->assign('submitdata', $this->call('ajaxRegister', "movim_form_to_json('data')")); - RPC::call('movim_fill', 'subscription_form', $html); - break; - case 'jabber:x:oob' : - $oobview = $this->tpl(); - $oobview->assign('url', (string)$form->x->url); + $formview->assign('formh', $formh); + $html = $formview->draw('_accountnext_form', true); - $html = $oobview->draw('_accountnext_oob', true); + RPC::call('movim_fill', 'subscription_form', $html); + break; + case 'jabber:x:oob' : + $oobview = $this->tpl(); + $oobview->assign('url', (string)$form->x->url); - RPC::call('movim_fill', 'subscription_form', $html); - break; + $html = $oobview->draw('_accountnext_oob', true); + + RPC::call('movim_fill', 'subscription_form', $html); + break; + } + + } else{ + $formh = $xtf->getHTML($form->asXML()); } - - } else{ - $formh = $xtf->getHTML($form->asXML()); } } @@ -68,7 +75,7 @@ class AccountNext extends WidgetBase { $html = $view->draw('_accountnext_registered', true); - RPC::call('movim_fill', 'subscription_form', $html); + RPC::call('movim_fill', 'subscribe', $html); RPC::call('setUsername', $data->username->value); } @@ -103,6 +110,12 @@ class AccountNext extends WidgetBase { function ajaxRegister($form) { + if(isset($form->re_password) + && $form->re_password->value != $form->password->value) { + Notification::append(null, $this->__('account.password_not_same')); + return; + } + $s = new Set; $s->setData($form)->request(); } diff --git a/sources/app/widgets/AccountNext/_accountnext_form.tpl b/sources/app/widgets/AccountNext/_accountnext_form.tpl index 2b981e6..a0969c0 100644 --- a/sources/app/widgets/AccountNext/_accountnext_form.tpl +++ b/sources/app/widgets/AccountNext/_accountnext_form.tpl @@ -1,8 +1,7 @@ -
{$formh} {$c->__('button.validate')} diff --git a/sources/app/widgets/AccountNext/_accountnext_movim.tpl b/sources/app/widgets/AccountNext/_accountnext_movim.tpl new file mode 100644 index 0000000..3dda172 --- /dev/null +++ b/sources/app/widgets/AccountNext/_accountnext_movim.tpl @@ -0,0 +1,20 @@ + +
+ @movim.eu + + +
+
+ + +
+
+ +
+
+ {$c->__('button.validate')} + +
diff --git a/sources/app/widgets/AccountNext/_accountnext_oob.tpl b/sources/app/widgets/AccountNext/_accountnext_oob.tpl index b3faf17..225e262 100644 --- a/sources/app/widgets/AccountNext/_accountnext_oob.tpl +++ b/sources/app/widgets/AccountNext/_accountnext_oob.tpl @@ -1,4 +1,4 @@ -