diff --git a/public_html/.htaccess b/.htaccess similarity index 94% rename from public_html/.htaccess rename to .htaccess index 851c699..f93b035 100644 --- a/public_html/.htaccess +++ b/.htaccess @@ -4,9 +4,6 @@ RewriteEngine On RewriteCond %{HTTP_HOST} ^www\.(.+?)$ RewriteRule ^(.*)$ https://$1 [R=301,L] -RewriteCond %{SERVER_PORT} 80 -RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] - # Main RewriteBase / RewriteRule ^home/?$ / [R=301] diff --git a/404.php b/404.php new file mode 100644 index 0000000..318277e --- /dev/null +++ b/404.php @@ -0,0 +1,17 @@ + + + + + + +Halcyon / ? + + + + +
+

404

+

Sorry, something went wrong.

+
+ + \ No newline at end of file diff --git a/README.md b/README.md index 875d348..a99d9a2 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,13 @@ # Halcyon for Mastodon A Mastodon web client that looks like Twitter ->The original author of this genious piece of software was inactive for a while and then shut down his demo instance and deleted this repository. I love Halcyon, it's the thing which makes Mastodon the best social network in the world. I took the Code from the Halcyon fork of cybre.space which still works but doesn't seem to get updates, too. I uploaded it here to make the original link work again and don't link into the big nothing. I'm working on much other stuff, too, what is why I won't be very active here in the near future but I do things which are required to keep it working and if I have much more time, I already know some nice features which could come. As for now I don't have an own demo instance but the one from cybre.space works pretty good and when I changed many things, I will open an own one. +>The original author of this genius piece of software was inactive for a while and then shut down his demo instance and deleted this repository. I love Halcyon, it's the thing which makes Mastodon the best social network in the world. I took the Code from the Halcyon fork of cybre.space which still works but doesn't seem to get updates, too. I uploaded it here to make the original link work again and don't link into the big nothing. I'm working on much other stuff, too, what is why I won't be very active here in the near future but I do things which are required to keep it working and if I have much more time, I already know some nice features which could come. As for now I don't have an own demo instance but the one from cybre.space works pretty good and when I changed many things, I will open an own one. +## Blog +- [Release of Version 1.0.0](http://nikisoft.myblog.de/nikisoft/art/11264555/The-first-new-Halcyon-release-is-on-Github) + ## Demo https://halcyon.cybre.space/ Please note that this demo is not owned by me and I have not control over it. Currently I'm not providing an own demo so I link to that one. That may change in future. @@ -15,48 +18,13 @@ Please note that this demo is not owned by me and I have not control over it. Cu - No tracking, No ads. ## Requirement -- Apache +- Apache/Nginx/lighttpd - PHP -- MySQL +- No database needed anymore! ## Setup -I didn't prepared setup script so you have to setup manually... - -### PDO MySQL - -After installed PHP, run this. - -```bash -sudo pecl install pdo_mysql -sudo vi php.ini -``` - -change to this - -```php.ini -extension=mysqli.so -extension=pdo_mysql.so -``` - -### MySQL -After installed MySQL, create a user, run this. -```sql -CREATE DATABASE DATABASE_NAME DEFAULT CHARACTER SET utf8; -CREATE TABLE DATABASE_NAME.instances(domain varchar(261), client_id varchar(64), client_secret varchar(64)); -``` -and make file `/config.ini` like this -```config.ini -~~~ line 3 ~~~ -api_client_name = -api_client_website = -~~~ line 8 ~~~ -db_host = -db_user = -db_pass = -db_name = -``` +Upload it, edit config.ini and have fun! ## Credits - - [Kirschn/mastodon.js](https://github.com/Kirschn/mastodon.js) - [yks118/Mastodon-api-php](https://github.com/yks118/Mastodon-api-php) diff --git a/Roadmap.md b/Roadmap.md deleted file mode 100644 index 85e312c..0000000 --- a/Roadmap.md +++ /dev/null @@ -1,17 +0,0 @@ -# Roadmap - -These plans may change if I think something else is more important or if I consider something here as not that important! - -## Next version -- [x] Oauth login -- [x] Support responsive -- [ ] Add meida attachment's next/prev button - -## Future -- [ ] Multi account -- [ ] Emoji picker -- [ ] Native profile edit -- [ ] Dark theme -- [ ] Translation support -- [ ] Mobile devices support -- [ ] PHP PSR4 / Autoload diff --git a/assets/css/404.css b/assets/css/404.css new file mode 100644 index 0000000..68f1303 --- /dev/null +++ b/assets/css/404.css @@ -0,0 +1,132 @@ +@charset "utf-8"; +* { +margin: 0; +padding: 0; +font-size: 100%; +} +a { +text-decoration: none; +word-break: break-all; +color: inherit; +} +a:hover { +text-decoration: underline; +} +ul, ol { +list-style: none; +padding: 0; +margin: 0; +} +img { +vertical-align: top; +border: 0; +max-width: 100%; +max-height: 100%; +} +button { +font-size: 100%; +} +.clear { +clear: both; +} +.red { +color: red!important; +} +.invisible { +display: none!important; +} +.no-events { +pointer-events: none; +} +.disallow_select { +user-select: none; +-ms-user-select: none; +-webkit-user-select: none; +-moz-user-select: none; +} +.text_ellipsis { +text-overflow: ellipsis; +overflow: hidden; +white-space: nowrap; +} +h1, h2, h3, h4, h5, h6 { +font-weight: normal; +line-height: 1; +margin: 0; +padding: 0; +} +blockquote, q { +quotes: none; +margin: 0; +} +blockquote * { +margin: 0; +word-break: break-all; +} +blockquote:before, blockquote:after, +q:before, q:after { +content:''; +content:none; +} +article,aside,details,figcaption,figure, +footer,header,hgroup,menu,nav,section { +display:block; +} +textarea { +width: 100%; +} +input { +max-width: 100%; +} +button, input[type="submit"], input[type="button"]{ +background-color: transparent; +border: none; +cursor: pointer; +outline: none; +padding: 0; +appearance: none; +} +img.emoji { +height: 1em; +width: 1em; +margin: 0 .05em 0 .1em; +vertical-align: -0.1em; +} +.emoji_poss .auth_emoji { +display: inline-block; +height: 100%; +margin: auto; +margin-left: 4px; +} +html { +font-family : "Helvetica Neue",Helvetica,Arial,sans-serif; +font-size : 100%; +line-height : 1; +color: #333; +min-width: 100%; +min-height: 100%; +} +body { +margin: 0; +padding: 0; +min-width: 100%; +min-height: 100%; +word-wrap:break-word; +background-color: #189EFC; +} +article { +margin: auto; +padding: 24px; +} +h1 { +font-size: 248px; +text-align: center; +color: #fff; +font-weight: 600; +} +h2 { +font-size: 56px; +text-align: center; +color: #fff; +font-weight: 200; +} \ No newline at end of file diff --git a/assets/css/style.css b/assets/css/style.css new file mode 100644 index 0000000..d3a834c --- /dev/null +++ b/assets/css/style.css @@ -0,0 +1,2326 @@ +@charset "utf-8"; +* { +margin: 0; +padding: 0; +font-size: 100%; +} +a { +text-decoration: none; +word-break: break-all; +color: inherit; +} +a:hover { +text-decoration: underline; +} +ul, ol { +list-style: none; +padding: 0; +margin: 0; +} +img { +vertical-align: top; +border: 0; +max-width: 100%; +max-height: 100%; +} +button { +font-size: 100%; +} +.clear { +clear: both; +} +.red { +color: red!important; +} +.invisible { +display: none!important; +} +.no-events { +pointer-events: none; +} +.disallow_select { +user-select: none; +-ms-user-select: none; +-webkit-user-select: none; +-moz-user-select: none; +} +.text_ellipsis { +text-overflow: ellipsis; +overflow: hidden; +white-space: nowrap; +} +h1, h2, h3, h4, h5, h6 { +font-weight: normal; +line-height: 1; +margin: 0; +padding: 0; +} +blockquote, q { +quotes: none; +margin: 0; +} +blockquote * { +margin: 0; +word-break: break-all; +} +blockquote:before, blockquote:after, +q:before, q:after { +content:''; +content:none; +} +article,aside,details,figcaption,figure, +footer,header,hgroup,menu,nav,section { +display:block; +} +textarea { +width: 100%; +} +input { +max-width: 100%; +} +button, input[type="submit"], input[type="button"]{ +background-color: transparent; +border: none; +cursor: pointer; +outline: none; +padding: 0; +appearance: none; +} +img.emoji { +height: 1em; +width: 1em; +margin: 0 .05em 0 .1em; +vertical-align: -0.1em; +} +.emoji_poss .auth_emoji { +display: inline-block; +height: 100%; +margin: auto; +margin-left: 4px; +} +html { +font-family : "Helvetica Neue",Helvetica,Arial,sans-serif; +font-size : 100%; +line-height : 1; +color: #333; +min-width: 100%; +min-height: 100%; +} +body { +margin: 0; +padding: 0; +min-width: 100%; +min-height: 100%; +word-wrap:break-word; +background-color: #F5F8FA; +} +.status_form { +width: 100%; +padding: 12px; +box-sizing: border-box; +background-color: #E8F4FB; +} +.status_form.ready { +background-color: #F2FAFF!important; +} +.status_form.ready .status_bottom .status_media_attachment, +.status_form.ready .status_bottom .status_privacy { +color: #7ECEFF!important; +} +.status_form.ready .status_bottom .status_CW > span, +.status_form.ready .status_bottom .status_NSFW > span { +background-color: #7ECEFF!important; +} +.status_form.ready .status_bottom .submit_status_label { +background-color: #A3D8FF!important; +pointer-events: none; +cursor: default; +} +.status_form .status_top { +display: flex; +align-items: center; +width: calc( 100% - 54px ); +padding-bottom: 0; +margin-left: 54px; +box-sizing: border-box; +} +.status_form .status_top .status_spoiler { +color: #189EFC; +width: 100%; +height: 35px; +border-radius: 4px; +border: 1px solid #C7E7FB; +font-size: 14px; +padding: 8px; +box-sizing: border-box; +} +.status_form .status_main { +display: flex; +flex-wrap: nowrap; +} +.status_form .status_main .icon_box { +flex-shrink: 0; +margin-right: 8px; +width: 32px; +height: 32px; +border-radius: 5px; +overflow: hidden; +margin-left: 14px; +} +.status_form .status_main .status_textarea { +flex: 1; +padding: 8px; +border-radius: 3px; +box-sizing: border-box; +border: 1px solid #C7E7FB; +background-color: #fff; +overflow: hidden; +} +.status_form .status_main .status_textarea textarea { +color: #189EFC; +resize: none; +height: 18px; +border: none; +max-width: 100%; +font-size: 14px; +font-family : "Helvetica Neue",Helvetica,Arial,sans-serif; +line-height: normal; +} +.status_form .status_textarea textarea.focus { +outline: 0; +color: #000; +height: 68px; +} +.status_form .status_textarea .media_attachments_preview_area { +display: flex; +flex-wrap: nowrap; +margin: 8px -8px -8px -8px; +padding: 8px 12px; +background-color: #F1F1F1; +border-top: 1px solid #C7E7FB; +} +.status_form .status_textarea .media_attachments_preview { +position: relative; +flex-shrink: 0; +max-width: 113px; +height: 113px; +margin-right: 8px; +border-radius: 5px; +border: 1px solid #C7E7FB; +overflow: hidden; +flex: 1; +background-color: #fff; +} +.status_form .status_textarea .media_attachments_preview:last-child { +margin-right: 0; +} +.status_form .status_textarea .media_attachments_preview_area.nsfw .media_attachments_preview::after { +display: block; +content: ""; +cursor: pointer; +top: 0; +font-weight: 300; +width: 100%; +height: 100%; +position: absolute; +background-color: rgba(0, 0, 0, 1); +transition: 0.13s; +} +.status_form .status_textarea .media_attachments_preview_area.nsfw .media_attachments_preview:hover::after { +background-color: rgba(0, 0, 0, 0); +transition: 0.13s; +} +.status_form .status_textarea .media_attachments_preview img { +width: 100%; +height: 100%; +object-fit: cover; +} +.status_form .status_textarea .media_attachments_preview .remove_button { +position: absolute; +z-index: 1; +right: 0; +top: 0; +color: #fff; +background-color: rgba(0, 0, 0, .8); +border-radius: 50%; +width: 19px; +height: 19px; +display: flex; +align-content: center; +justify-content: center; +font-size: 14px; +margin: 4px 4px 0 0; +} +.status_form .status_bottom { +display: flex; +align-items: center; +width: calc( 100% - 52px ); +padding: 8px 0; +padding-bottom: 0; +box-sizing: border-box; +padding-right: 0; +margin-left: 52px; +} +.status_form .status_bottom .status_option_button { +cursor: pointer; +color: #43A7E5; +font-size: 21px; +border-radius: 3px; +padding: 8px 12px; +box-sizing: border-box; +border: 1px solid transparent;; +height: 39px; +display: flex; +justify-content: center; +align-items: center; +} +.status_form .status_bottom .status_option_button:hover { +border: 1px solid #C7E7FB +} +.status_form .status_bottom .status_option_button.active { +animation-name: status_action_active; +animation-duration: 0.5s; +} +.status_form .status_bottom .status_CW > span, +.status_form .status_bottom .status_NSFW > span { +display: flex; +align-items: center; +height: 22px; +padding: 4px; +color: #E8F4FB; +border-radius: 3px; +box-sizing: border-box; +background-color: #43A7E5; +text-align: center; +} +.status_form .status_bottom .status_CW > span { +font-size: 10px; +} +.status_form .status_bottom .status_NSFW > span { +font-size: 8px; +} +.status_form .status_bottom .status_privacy { +position: relative; +} +.status_form .status_bottom .status_privacy .expand_privacy_menu { +display: block; +position: absolute; +cursor: pointer; +top: 32px; +right: -122px; +width: 160px; +padding: 18px; +font-size: 12px; +border-radius: 3px; +box-sizing: border-box; +background-color: #fff; +box-shadow: 0.5px 0.5px 3px rgba(0,0,0,0.26); +z-index: 2; +} +.status_form .status_bottom .status_privacy .expand_privacy_menu::before { +display: block; +content: ""; +z-index: -1; +width: 20px; +height: 20px; +position: absolute; +transform: rotate(45deg); +top: -5px; +left: 8px; +background-color: #fff; +} +.status_form .status_bottom .status_privacy .expand_privacy_menu .status_privacy { +display: block; +cursor: pointer; +font-size: 14px; +margin-bottom: 12px; +color: rgb(101, 119, 134); +text-align: left; +} +.status_form .status_bottom .status_privacy .expand_privacy_menu .status_privacy:last-child { +margin-bottom: 0; +} +.status_form .status_bottom .status_privacy .expand_privacy_menu .status_privacy:hover { +color: #189EFC; +} +.status_form .status_bottom .status_privacy .expand_privacy_menu .status_privacy i { +margin-right: 4px; +} +.status_form .status_bottom .submit_status_label_wrap { +flex-grow: 1; +display: flex; +align-items: center; +justify-content: flex-end; +height: 39px; +} +.status_form .status_bottom .character_count { +color: #66757F; +font-size: 14px; +padding: 0 12px; +box-sizing: border-box; +} +.status_form .status_bottom .submit_status_label { +height: 100%; +padding: 6px 24px; +cursor: pointer; +float: right; +border-radius: 4px; +color: #fff; +background-color: #2588D0; +transition: 0.15s ease-out; +box-sizing: border-box; +display: flex; +justify-content: center; +align-items: center; +} +.status_form .status_bottom .submit_status_label:hover { +background-color: #2571D0; +transition: 0.15s ease-out; +} +.status_form .status_bottom .submit_status_label:active { +background-color: #255ED0; +transition: 0.15s ease-out; +} +.status_form .status_bottom .submit_status_label .toot_button_label { +display: flex; +justify-content: center; +align-items: center; +} +.status_form .status_bottom .submit_status_label .toot_button_label i { +display: inline-block; +font-size: 21px; +margin-right: 2px; +} +.status_form .status_bottom .submit_status_label .toot_button_label span { +font-size: 13px; +font-weight: 500; +} +.overlay_status{ +/*! width: 628px; */ +/*! margin: auto; */ +/*! z-index: 1000; */ +/*! top: 20%; */ +/*! left: 0; */ +/*! position: absolute; */ +/*! right: 0; */ +/*! bottom: 0; */ +margin-top: 20%; +} +.overlay_status_header { +width: 600px; +padding: 16px; +box-sizing: border-box; +background-color: #fff; +border-top-left-radius: 5px; +border-top-right-radius: 5px; +margin: auto; +text-align: center; +color: #66757F; +font-size: 18px; +font-weight: 300; +} +#overlay_status_form.status_form { +width: 600px; +padding: 16px; +box-sizing: border-box; +background-color: #E8F4FB; +border-bottom-left-radius: 5px; +border-bottom-right-radius: 5px; +margin: auto; +} +#overlay_status_form.status_form .status_top { +width: 100%; + margin-left: 0; +} +#overlay_status_form.status_form .status_main { +display: flex; +flex-wrap: nowrap; +} +#overlay_status_form.status_form .status_main .status_textarea { +flex: 1; +} +#overlay_status_form.status_form .status_main .status_textarea textarea { +color: #000; +resize: none; +max-width: 100%; +height: auto; +min-height: 72px; +border-radius: 5px; +font-family : "Helvetica Neue",Helvetica,Arial,sans-serif; +font-size: 14px; +padding: 4px; +outline: 0; +box-sizing: border-box; +} +#overlay_status_form.status_form .status_bottom { +display: flex; +align-items: center; +width: auto; +padding: 8px 0; +padding-bottom: 0; +margin-left: 0; +box-sizing: border-box; +padding-right: 0; +} +#reply_status_form.status_form:last-child { +border-bottom-left-radius: 5px; +border-bottom-right-radius: 5px; +} +.single_reply_status { +width: 600px; +margin: auto; +/*! z-index: 1000; */ +/*! top: 25%; */ +/*! left: 0; */ +/*! height: 100%; */ +/*! position: absolute; */ +/*! right: 0; */ +/*! bottom: 0; */ +margin-top: 20%; +} +.single_reply_status_header { +width: 600px; +padding: 16px; +box-sizing: border-box; +background-color: #fff; +border-top-left-radius: 5px; +border-top-right-radius: 5px; +margin: auto; +text-align: center; +color: #66757F; +font-size: 18px; +font-weight: 300; +} +.single_reply_status .status_preview { +border-top: 1px solid #E1E8ED; +} +.single_reply_status .status_preview .toot_entry .toot_footer { +display: none!important; +} +.single_reply_status .status_form .status_bottom { +width: 100%; +margin-left: 0; +} +#single_reply_status_form.status_form { +width: 600px; +padding: 16px; +box-sizing: border-box; +background-color: #E8F4FB; +border-bottom-left-radius: 5px; +border-bottom-right-radius: 5px; +margin: auto; +} +#single_reply_status_form.status_form .status_bottom .submit_status_label .toot_button_label i { +font-size: 18px; +margin-right: 8px; +} +.overlay_copy_link { +width: 600px; +margin: auto; +margin-top: 20%; +} +.overlay_copy_link_header { +width: 600px; +padding: 16px; +box-sizing: border-box; +background-color: #fff; +border-top-left-radius: 5px; +border-top-right-radius: 5px; +margin: auto; +text-align: center; +color: #66757F; +font-size: 18px; +font-weight: 300; +border-bottom: 1px solid #E6ECF0; +} +.overlay_copy_link .overlay_copy_link_form { +width: 600px; +padding: 16px; +box-sizing: border-box; +background-color: #fff; +border-bottom-left-radius: 5px; +border-bottom-right-radius: 5px; +margin: auto; +} +.overlay_copy_link .overlay_copy_link_form input { +width: 100%; +height: 36px; +padding: 4px 16px; +border: 1px solid #E6ECF0; +background-color: #F5F8FA; +box-sizing: border-box; +font-size: 14px; +border-radius: 3px; +} +.relationship_button { +display: flex; +flex-wrap: nowrap; +align-items: center; +font-size: 13px; +padding: 6px 13px; +margin-top: 4px; +border-radius: 4px; +border: 1px solid #189EFC; +} +.relationship_button i { +margin-right: 4px; +} +.relationship_button span { +font-weight: 600; +} +.follow_button {border: 1px solid #189EFC; color: #189EFC;} +.follow_button i {color: #189EFC} +.follow_button:hover, +.follow_button:hover i {background-color: #189EFC;color: #fff;} +.following_button, +.following_button i {background-color: #189EFC;color: #fff;} +.following_button:hover, +.following_button:hover i {background-color: #E20055;color: #fff;} +.muting_button {background-color: #E20055;color: #fff;} +.muting_button i {color: #fff;} +.muting_button:hover, +.muting_button:hover i {background-color: #B82424;color: #fff;} +.blocking_button{background-color: #fff;color: #E20055} +.blocking_button i {color: #E20055;} +.blocking_button:hover, +.blocking_button:hover i {background-color: #B82424;} +.profile_edit_button{background-color: #FFF;color: #66757F;border: 1px solid #66757F;} +.profile_edit_button:hover, +.profile_edit_button:hover i {background-color: #F5F8FA;} +.timeline_header { +background-color: #fff; +box-sizing: border-box; +border: 1px solid #ECF1F4; +border-bottom: none; +border-top-right-radius: 5px; +border-top-left-radius: 5px; +} +.timeline_header .header_items { +display: flex; +flex-wrap: nowrap; +align-items: center; +} +.timeline_header .header_items .item { +display: inline-block; +font-size: 18px; +font-weight: 300; +padding: 15px; +color: #189EFC; +box-sizing: border-box; +} +.timeline_header .header_items .item.view { +font-weight: 600; +color: #000; +} +.timeline { +background-color: #fff; +box-sizing: border-box; +border: 1px solid #ECF1F4; +} +.timeline .boost_author_box { +margin-left: 46px; +margin-bottom: -12px; +padding: 8px 0; +font-size: 12px; +color: rgb(101, 119, 134); +height: 14px; +} +.timeline .boost_author_box i { +display: inline-block; +width: 10px; +height: 10px; +padding: 2px; +margin-right: 11px; +color: #fff; +background-color: #17BF63; +border-radius: 2px; +font-size: 10px; +/*! height: 14px; */ +} +.toot_entry { +cursor: pointer; +background-color: #fff; +list-style: none; +} +.toot_entry:hover { +background-color: #F5F8FA; +} +.toot_entry .toot_entry_body { +display: flex; +flex-wrap: nowrap; +padding: 12px; +box-sizing: border-box; +border-bottom: 1px solid #ECF1F4; +} +.toot_entry .toot_entry_body > a { +height: 48px; +} +.toot_entry .toot_entry_body .icon_box { +flex-shrink: 0; +width: 48px; +height: 48px; +margin-right: 12px; +border-radius: 5px; +overflow: hidden; +z-index: 1; +} +.toot_entry .toot_entry_body .icon_box img { +width: 48px; +height: 48px; +} +.toot_entry .toot_entry_body .toot_content { +flex-grow: 1; +height: 100%; +max-width: 504px; +/*! z-index: 1; */ +} +.toot_entry .toot_entry_body .toot_content .toot_header { +color: rgb(101, 119, 134); +position: relative; +font-size: 14px; +padding-right: 16px; +} +.toot_entry .toot_entry_body .toot_content .toot_header .text_ellipsis a { +line-height: 1; +height: 16.5px; +margin-bottom: -4.5px; +} +.toot_entry .toot_entry_body .toot_content .toot_header .displayname { +color: rgb(20, 23, 26); +font-weight: bold; +} +.toot_entry .toot_entry_body .toot_content .toot_header .displayname:hover { +color: #189EFC; +} +.toot_entry .toot_entry_body .toot_content .toot_header .right-top_button { +flex: 1; +height: 100%; +} +.toot_entry .toot_entry_body .toot_content .toot_header .expand_button_wrap { +position: absolute; +top: 0; +right: 0; +} +.toot_entry .toot_entry_body .toot_content .toot_header .expand_button_wrap .expand_button { +position: absolute; +right: 0; +top: 0; +color: #AAB8C2; +} +.toot_entry .toot_entry_body .toot_content .toot_header .expand_button_wrap .expand_button:hover { +color: #189EFC; +} +.toot_entry .toot_entry_body .toot_content .toot_header .expand_button_wrap .expand_menu { +display: block; +position: absolute; +cursor: pointer; +top: 36px; +right: -152px; +width: 180px; +padding: 8px 21px; +font-size: 12px; +border-radius: 3px; +box-sizing: border-box; +background-color: #fff; +box-shadow: 0.5px 0.5px 3px rgba(0,0,0,0.26); +z-index: 1; +} +.toot_entry .toot_entry_body .toot_content .toot_header .expand_button_wrap .expand_menu::before { +display: block; +content: ""; +z-index: -1; +width: 20px; +height: 20px; +position: absolute; +transform: rotate(45deg); +top: -5px; +left: 8px; +background-color: #fff; +} +.toot_entry .toot_entry_body .toot_content .toot_header .expand_button_wrap .expand_menu ul { +margin: 0 -21px; +margin-bottom: 8px; +} +.toot_entry .toot_entry_body .toot_content .toot_header .expand_button_wrap .expand_menu ul::after { +content: ""; +display: block; +margin-top: 8px; +border-bottom: 1px solid #E6ECF0; +} +.toot_entry .toot_entry_body .toot_content .toot_header .expand_button_wrap .expand_menu ul:last-child::after { +border-bottom: 0px solid #E6ECF0; +} +.toot_entry .toot_entry_body .toot_content .toot_header .expand_button_wrap .expand_menu ul li { +box-sizing: border-box; +} +.toot_entry .toot_entry_body .toot_content .toot_header .expand_button_wrap .expand_menu ul:last-child li { +margin-bottom: 0; +} +.toot_entry .toot_entry_body .toot_content .toot_header .expand_button_wrap .expand_menu a { +display: block; +padding: 8px 21px; +box-sizing: border-box; +} +.toot_entry .toot_entry_body .toot_content .toot_header .expand_button_wrap .expand_menu a:hover { +background-color: #189EFC; +text-decoration: none; +color: #fff; +} +.toot_entry .toot_entry_body .toot_content .cw_button { +background-color: #6D768C; +border-radius: 3px; +padding: 4px; +margin: auto 4px; +font-size: 8px; +box-sizing: border-box; +color: #fff; +} +.toot_entry .toot_entry_body .toot_content .toot_article { +font-size: 14px; +line-height: 20px; +margin-top: 4px; +} +.toot_entry .toot_entry_body .toot_content .toot_article a { + color: #2588D0; +} +.toot_entry .toot_entry_body .toot_content .toot_article.content_warning .status_content { +display: none; +} +.toot_entry .toot_entry_body .toot_content .toot_footer { +display: flex; +flex-wrap: nowrap; +align-items: center; +width: 240px; +height: 21px; +margin-top: 8px; +} +.toot_entry .toot_entry_body .toot_content .toot_reaction { +height: 21px; +flex-grow: 1; +} +.toot_entry .toot_entry_body .toot_content .toot_reaction button { +margin: auto; +color: #AAB8C2; +font-size: 18px; +height: 21px; +} +.toot_entry .toot_entry_body .toot_content .toot_reaction button.active { +animation-name: status_action_active; +animation-duration: 0.5s; +} +.toot_entry .toot_entry_body .toot_content .toot_reaction button .reaction_count { +color: #AAB8C2; +font-size: 12px; +font-weight: 600; +} +@keyframes status_action_active { +0% { transform: scale(1); } +50% { transform: scale(2); } +100% { transform: scale(1); } +} +.toot_entry .toot_entry_body .toot_content .toot_reaction .reply_button:hover { +color: #1DA1F2; +} +.toot_entry .toot_entry_body .toot_content .toot_reaction .boost_button[reblogged="null"]:hover, +.toot_entry .toot_entry_body .toot_content .toot_reaction .boost_button[reblogged="true"], +.toot_entry .toot_entry_body .toot_content .toot_reaction .boost_button[reblogged="null"]:hover .reaction_count, +.toot_entry .toot_entry_body .toot_content .toot_reaction .boost_button[reblogged="true"] .reaction_count { +color: #17BF63; +} +.toot_entry .toot_entry_body .toot_content .toot_reaction .fav_button[favourited="null"]:hover, +.toot_entry .toot_entry_body .toot_content .toot_reaction .fav_button[favourited="true"], +.toot_entry .toot_entry_body .toot_content .toot_reaction .fav_button[favourited="null"]:hover .reaction_count, +.toot_entry .toot_entry_body .toot_content .toot_reaction .fav_button[favourited="true"] .reaction_count { +color: #FFAD1A; +} +.media_views { +margin: 8px 0; +height: 336px; +width: 100%; +border-radius: 5px; +overflow: hidden; +position: relative; +box-sizing: border-box; +border: 1px solid #DCDFE1; +} +.media_views .media_attachment { +overflow: hidden; +width: 100%; +height: 100%; +} +.media_views .media_attachment > * { +width: 100%; +height: 100%; +object-fit: cover; +} +.media_views .media_attachment > iframe { +object-fit: fill; +} +.media_views.sensitive .sensitive_alart { +display: flex; +z-index: 1; +flex-direction: column; +justify-content: center; +align-items: center; +position: absolute; +width: 100%; +height: 100%; +background-color: #000; +} +.media_views.sensitive .sensitive_alart .text1 { +font-size: 26px; +font-weight: 200; +padding: 8px 16px; +color: #fff; +} +.media_views.sensitive .sensitive_alart .text2 { +font-weight: 200; +padding: 2px 4px; +margin-top: 3px; +color: #fff; +} +.media_views[media_length="2"] { +display: flex; +} +.media_views[media_length="2"] .media_attachment { +flex-grow: 1; +overflow: hidden; +width: 50%; +height: 100%; +} +.media_views[media_length="2"] .media_attachment[mediacount="0"] { +padding-right: 5px; +box-sizing: border-box; +} +.media_views[media_length="3"], +.media_views[media_length="4"] { +display: flex; +} +.media_views[media_length="3"] .media_attachment[mediacount="0"], +.media_views[media_length="4"] .media_attachment[mediacount="0"] { +flex-grow: 2; +padding-right: 5px; +box-sizing: border-box; +} +.media_views[media_length="3"] .media_attachments_right, +.media_views[media_length="4"] .media_attachments_right { +flex-grow: 1; +flex-shrink: 2; +display: flex; +flex-direction: column; +height: 100%; +} +.media_views[media_length="3"] .media_attachments_right .media_attachment { +padding-bottom: 5px; +box-sizing: border-box; +height: 50%; +} +.media_views[media_length="3"] .media_attachments_right .media_attachment[mediacount="2"] { +padding-bottom: 0; +} +.media_views[media_length="4"] .media_attachments_right .media_attachment { +padding-bottom: 5px; +box-sizing: border-box; +height: calc( 100% / 3 ); +} +.media_views[media_length="4"] .media_attachments_right .media_attachment[mediacount="3"] { +padding-bottom: 0; +} +.timeline .notice_entry { +padding: 10px 12px 10px 70px; +font-size: 14px; +line-height: 18px; +border-bottom: 1px solid #E6ECF0; +} +.timeline .notice_entry .notice_entry_body { +width: 480px; +border: 1px solid #E6ECF0; +border-radius: 5px; +padding: 8px 12px; +} +.timeline .notice_entry .notice_entry_body .toot_header { +height: 17px; +} +.timeline .notice_entry .notice_entry_body .toot_article p { +white-space: nowrap; +overflow: hidden; +text-overflow: ellipsis; +} +.timeline .notice_entry .icon_box { +width: 24px; +height: 24px; +border-radius: 3px; +overflow: hidden; +} +.timeline .notice_entry .icon_box img { +width: 24px; +} +.timeline .notice_entry .font-icon { +position: relative; +padding: 3px; +left: -23px; +top: -26px; +width: 10px; +font-size: 10px; +border-radius: 3px; +color: #fff; +} +.timeline .notice_entry .font-icon.follow { +background: #1DA1F2;; +} +.timeline .notice_entry .font-icon.boost { +background: #17BF63; +} +.timeline .notice_entry .font-icon.favourite { +background: #FFAD1A; +} +.timeline .notice_entry .notice_author_box { +padding: 3px 0; +} +.timeline .notice_entry .notice_author_box > a.notice_author { +margin-left: -18px; +} +.timeline .notice_entry .notice_author_box > a.notice_author span { +font-weight: 600; +} +.timeline .notice_entry .toot_content .toot_header a .displayname { +font-weight: 600; +} +.timeline .notice_entry .toot_content .toot_header a .username { +color: #66757F; +} +.timeline_footer { +padding: 24px; +background-color: #fff; +box-sizing: border-box; +border: 1px solid #ECF1F4; +border-top: none; +border-bottom-right-radius: 5px; +border-bottom-left-radius: 5px; +color: #AAB8C2; +font-size: 36px; +text-align: center; +} +#js-follows_profile{ +display: flex; +width: 900px; +box-sizing: border-box; +height: auto; +flex-wrap: wrap; +} +#js-follows_profile .follows_profile_box { +width: 290px; +margin: 0 5px; +margin-bottom: 10px; +box-sizing: border-box; +border-radius: 5px; +background-color: #fff; +overflow: hidden; +border: 1px solid #E6ECF0; +} +#js-follows_profile .follows_profile_box .follows_profile_header { +height: 96px; +overflow: hidden; +background-color: #189EFC; +} +#js-follows_profile .follows_profile_box .follows_profile_header img { +width: 100%; +height: 100%; +object-fit: cover; +} +#js-follows_profile .follows_profile_box .follows_profile { +position: relative; +} +#js-follows_profile .follows_profile_box .follows_profile .follows_profile_icon { +position: absolute; +width: 74px; +height: 74px; +padding: 3px; +margin-left: 16px; +border-radius: 8px; +top: -76px; +background-color: #fff; +} +#js-follows_profile .follows_profile_box .follows_profile .follows_profile_icon img { +border-radius: 5px; +} +#js-follows_profile .follows_profile_box .follows_profile .follows_profile_name_box { +width: auto; +/*! margin-left: 15px; */ +padding-bottom: 2px; +padding-top: 4px; +margin: 0 16px; +margin-top: 36px; +} +#js-follows_profile .follows_profile_box .follows_profile .follows_profile_name_box h2 { +font-weight: 700; +font-size: 18px; +line-height: 25px; +} +#js-follows_profile .follows_profile_box .follows_profile .follows_profile_name_box span { +display: block; +width: 180px; +color: #657786; +font-size: 14px; +/*! overflow: hidden; */ +white-space: nowrap; +text-overflow: ellipsis; +margin: 4px 0; +} +#js-follows_profile .follows_profile_box .follows_profile .follows_profile_name_box span::before { +} +#js-follows_profile .follows_profile_box .follows_profile .follows_profile_bio { +height: 58px; +font-size: 14px; +font-weight: 400; +color: #66757f; +margin: 0 16px; +margin-bottom: 0px; +margin-bottom: 16px; +line-height: 1.3; +overflow: hidden; +/*! width: 100%; */ +} +#js-follows_profile .follows_profile_box .follows_profile .follows_profile_bio p { +/*! white-space: nowrap; */ +overflow: hidden; +word-break: break-all; +height: auto; +/*! max-width: 100%; */ +} +#js-follows_profile .follows_profile_box .follows_profile .follows_profile_bio p a { +color: #189EFC +} +#js-follows_profile .follow_button { +display: flex; +flex-wrap: nowrap; +align-items: center; +font-size: 13px; +padding: 6px 18px; +margin-top: 4px; +border-radius: 4px; +border: 1px solid #189EFC; +position: absolute; +right: 16px; +top: -32px; +} +#js-follows_profile .follow_button i { +color: #189EFC; +margin-right: 4px; +} +#js-follows_profile .follow_button span { +font-weight: 600; +} +#js-follows_profile .follow_button:hover, +#js-follows_profile .follow_button:hover i { +background-color: #189EFC; +color: #fff!important; +} +#js-follows_profile .following_button { +display: flex; +flex-wrap: nowrap; +align-items: center; +font-size: 13px; +padding: 6px 18px; +margin-top: 4px; +border-radius: 4px; +border: 1px solid #2B94DA; +background-color: #189EFC; +position: absolute; +right: 16px; +top: -32px; +} +#js-follows_profile .following_button i { +color: #fff; +margin-right: 4px; +} +#js-follows_profile .following_button span { +font-weight: 600; +color: #fff; +} +#js-follows_profile .following_button:hover, +#js-follows_profile .following_button:hover i { +background-color: #E20055; +color: #fff!important; +} +#js-follows_footer { +color: #66757F; +font-size: 36px; +text-align: center; +padding: 16px; +} +#js-stream_update { +height: 0; +padding: 0px; +box-sizing: border-box; +text-align: center; +font-size: 13px; +background-color: #F5F8FA; +overflow: hidden; +transition: 0.3s; +cursor: pointer; +} +#js-stream_update:hover { +background-color: #E6ECF0; +} +#js-stream_update button { +color: #189EFC; +} +.current_profile_box { +margin-bottom: 10px; +border-radius: 5px; +background-color: #fff; +overflow: hidden; +border: 1px solid #E6ECF0; +} +.current_profile_box .current_profile_header { +height: 96px; +overflow: hidden; +background-color: #189EFC; +} +.current_profile_box .current_profile_header img { +width: 100%; +height: 100%; +object-fit: cover; +} +.current_profile_box .current_profile { +position: relative; +} +.current_profile_box .current_profile .current_profile_icon { +position: absolute; +width: 70px; +height: 70px; +padding: 3px; +margin-left: 8px; +border-radius: 8px; +top: -30px; +background-color: #fff; +} +.current_profile_box .current_profile .current_profile_icon img { +border-radius: 5px; +} +.current_profile_box .current_profile .current_profile_name_box { +width: 180px; +margin-left: 90px; +padding-bottom: 10px; +padding-top: 8px; +} +.current_profile_box .current_profile .current_profile_name_box h2 { +font-weight: 700; +font-size: 18px; +line-height: 25px; +} +.current_profile_box .current_profile .current_profile_name_box span { +display: block; +width: 180px; +color: #657786; +font-size: 14px; +overflow: hidden; +white-space: nowrap; +text-overflow: ellipsis; +} +.current_profile_box .current_profile .current_profile_name_box span::before { +content: "@"; +} +.current_profile_box .current_profile .current_profile_counts { +display: flex; +} +.current_profile_box .current_profile .current_profile_counts .current_profile_count { +flex-grow: 1; +padding-left: 16px; +padding-bottom: 8px; +} +.current_profile_box .current_profile .current_profile_counts .current_profile_count a { +display: flex; +flex-direction: column; +justify-content: space-around; +text-decoration: none; +} +.current_profile_box .current_profile .current_profile_counts .current_profile_count a .title { +color: #657786; +font-size: 10px; +} +.current_profile_box .current_profile .current_profile_counts .current_profile_count a:hover .title { +color: #189EFC; +} +.current_profile_box .current_profile .current_profile_counts .current_profile_count a .count { +font-size: 18px; +font-weight: 400; +padding-top: 3px; +color: #189EFC; +} +.side_widget { +padding: 15px; +margin-bottom: 8px; +border-radius: 5px; +background-color: #fff; +border: 1px solid #E6ECF0; +} +.side_widgets_footer { +color: rgb(101, 119, 134); +font-size: 12px; +padding: 16px 8px; +} +.side_widgets_footer ul li { +display: inline-block; +margin: 0 12px 8px 0; +} +.side_widget h2 { +color: #66757F; +font-size: 18px; +font-weight: 300; +margin-bottom: 15px; +} +.side_widget h3 { +color: #66757F; +font-size: 16px; +font-weight: 300; +} +.side_widget.stream_options .form_title{ +display: flex; +align-items: baseline; +} +.side_widget.stream_options .form_title h2 { +margin-bottom: 0; +flex-grow: 1; +} +.side_widget.stream_options .form_title button { +cursor: pointer; +flex-grow: 1; +font-size: 12px; +color: #189EFC; +text-align: right; +} +.side_widget form.pulldown_form { +overflow: hidden; +height: 0; +opacity: 0; +margin-top: 0px; +transition: 0.13s ease-out; +} +.side_widget form.pulldown_form.view { +height: 240px; +opacity: 1; +margin-top: 16px; +transition: 0.13s ease-out; +} +.side_widget select, .side_widget input { +margin: 8px 0 16px; +width: 100%; +font-size: 14px; +color: #66757F; +box-sizing: border-box; +} +.side_widget .account_box { +display: flex; +flex-wrap: nowrap; +align-items: center; +height: 100%; +margin-bottom: 12px; +} +.side_widget .account_box .icon_box { +width: 48px; +height: 48px; +overflow: hidden; +margin-right: 8px; +border-radius: 5px; +} +.side_widget .account_box .label_box { +width: 200px; +} +.side_widget .account_box .label_box h3 { +overflow: hidden; +white-space: nowrap; +text-overflow: ellipsis; +color: #333; +} +.side_widget .account_box .label_box h3 .dn { +font-size: 14px; +font-weight: 700; +} +.side_widget .account_box .label_box h3 .un { +font-size: 14px; +color: #66757F; +} +.side_widget .account_box .label_box .follow_button { +display: flex; +flex-wrap: nowrap; +align-items: center; +font-size: 12px; +padding: 5px 16px; +margin-top: 4px; +border-radius: 4px; +} +.side_widget .account_box .label_box .follow_button i { +color: #189EFC; +margin-right: 4px; +} +.side_widget .account_box .label_box .follow_button span { +font-weight: 600; +} +.side_widget .account_box .label_box .follow_button:hover, +.side_widget .account_box .label_box .follow_button:hover i { +background-color: #189EFC; +color: #fff!important; +} +.side_widget .account_box .label_box .following_button { +display: flex; +color: #fff; +flex-wrap: nowrap; +align-items: center; +font-size: 12px; +padding: 5px 18px; +margin-top: 4px; +border-radius: 4px; +background-color: #189EFC; +border: 1px solid #189EFC; +} +.side_widget .account_box .label_box .following_button:hover { +background-color: #E20055; +} +.side_widget .account_box .label_box .following_button i { +color: #FFF; +margin-right: 4px; +} +.side_widget .account_box .label_box .following_button span { +font-weight: 600; +} +#header { +display: flex; +position: fixed; +z-index: 999; +width: 100%; +height: 47px; +color: #66757F; +background-color: #fff; +box-shadow: 0 1px 1px rgba(0,0,0,0.26); +} +#header .header_nav_wrap { +box-sizing: border-box; +display: flex; +width: 1190px; +height: 100%; +margin: auto; +padding: 0 5px; +} +#header .header_nav_wrap .header_left_box { +display: flex; +justify-content: flex-start; +flex: 2; +height: 100%; +} +#header .header_nav_wrap .header_left_box ul.header_nav_list { +display: flex; +width: 100%; +height: 100%; +} +#header .header_nav_wrap .header_left_box ul.header_nav_list li.header_nav_item { +display: flex; +align-items: center; +height: 100%; +position: relative; +} +#header .header_nav_wrap .header_left_box ul.header_nav_list li.header_nav_item .nav_badge { +width: 6px; +height: 6px; +background-color: #1B95E0; +border-radius: 50%; +position: absolute; +left: 6px; +top: 8px; +} +#header .header_nav_wrap .header_left_box ul.header_nav_list li.header_nav_item .nav_badge.notification_badge { +position: absolute; +background-color: #189EFC; +border-radius: 40%; +font-size: 10px; +top: 8px; +left: 20px; +border: 2px solid #fff; +color: #fff; +padding: 2px; +box-sizing: border-box; +height: 20px; +width: 20px; +display: flex; +align-items: center; +justify-content: center; +} +#header .header_nav_wrap .header_left_box ul.header_nav_list li.header_nav_item a { +display: flex; +justify-content: center; +align-items: center; +width: 100%; +height: 100%; +color: #66757F; +box-sizing: border-box; +padding-right: 18px; +padding-left: 9px; +border-top: 0px solid transparent; +border-bottom: 0px solid #189EFC; +transition: 0.15s ease-out; +} +#header .header_nav_wrap .header_left_box ul.header_nav_list li.header_nav_item a:hover { +color: #189EFC; +text-decoration: none; +border-top: 5px solid transparent; +border-bottom: 5px solid #189EFC; +transition: 0.15s ease-out; +} +#header .header_nav_wrap .header_left_box ul.header_nav_list li.header_nav_item a.view { +text-decoration: none; +border-top: 5px solid transparent; +border-bottom: 5px solid #189EFC; +transition: 0.15s ease-out; +position: relative; +} +#header .header_nav_wrap .header_left_box ul.header_nav_list li.header_nav_item a > i, +#header .header_nav_wrap .header_left_box ul.header_nav_list li.header_nav_item a > span { +display: inline-block; +text-align: center; +} +#header .header_nav_wrap .header_left_box ul.header_nav_list li.header_nav_item a > i { +margin-right: 4px; +font-size: 21px; +} +#header .header_nav_wrap .header_left_box ul.header_nav_list li.header_nav_item a > span { +font-size: 13px; +font-weight: 400; +} +#header .header_nav_wrap .header_center_box { +display: flex; +flex: 1.2; +height: 100%; +box-sizing: border-box; +padding: 8px 0; +align-items: center; +justify-content: center; +} +#header .logo_box { +height: 96%; +padding: 4px; +box-sizing: border-box; +} +#header .logo_box img { +width: auto; +display: block; +} +#header .header_nav_wrap .header_right_box { +flex: 2; +box-sizing: border-box; +padding: 8px 0; +height: 100%; +} +#header .header_nav_wrap .header_right_box ul.header_nav_list { +display: flex; +justify-content: flex-end; +align-items: center; +width: 100%; +height: 100%; +} +#header .header_nav_wrap .header_right_box ul.header_nav_list li.header_nav_item { +display: flex; +height: 100%; +justify-content: center; +align-items: center; +padding-right: 16px; +} +#header .header_nav_wrap .header_right_box .search_form { +width: 221px; +height: 95%; +outline: 0; +position: relative; +} +#header .header_nav_wrap .header_right_box .search_form .search_form_input { +box-sizing: border-box; +padding: 5px 12px; +font-size: 12px; +width: 100%; +border-radius: 16px; +border: 1px solid #E8EEF1; +background-color: #F5F8FA; +height: 100%; +transition: 0.15s ease-out;; +} +#header .header_nav_wrap .header_right_box .search_form .search_form_input:focus { +background-color: transparent; +transition: 0.15s ease-out;; +} +#header .header_nav_wrap .header_right_box .search_form .search_form_submit { +display: block; +position: absolute; +height: 14px; +font-size: 14px; +top: 5px; +right: 12px; +margin: 2px -4px; +} +#header .header_nav_wrap .header_right_box .search_form .search_form_submit button, +#header .header_nav_wrap .header_right_box .search_form .search_form_submit i { +display: block; +color: #66757F; +} +#header .header_nav_wrap .header_right_box .my_account_wrap { +position: relative; +} +#header .header_nav_wrap .header_right_box .my_account_wrap .my_account { +height: 35px; +width: 35px; +margin: auto; +display: flex; +justify-content: center; +align-items: center; +} +#header .header_nav_wrap .header_right_box .my_account_wrap .my_account img { +width: 32px; +height: 32px; +overflow: hidden; +border-radius: 50%; +transition: 0.15s ease-out; +} +#header .header_nav_wrap .header_right_box .my_account_wrap .header_my_account_nav { +display: block; +position: absolute; +cursor: pointer; +top: 42px; +right: 14px; +width: 180px; +padding: 8px 21px; +font-size: 12px; +border-radius: 3px; +box-sizing: border-box; +background-color: #fff; +box-shadow: 0.5px 0.5px 3px rgba(0,0,0,0.26); +} +#header .header_nav_wrap .header_right_box .my_account_wrap .header_my_account_nav::before { +display: block; +content: ""; +z-index: -1; +width: 20px; +height: 20px; +position: absolute; +transform: rotate(45deg); +top: -5px; +right: 8px; +background-color: #fff; +border: 0.5px solid rgba(0,0,0,.26); +} +#header .header_nav_wrap .header_right_box .my_account_wrap .header_my_account_nav ul { +margin: 0 -21px; +margin-bottom: 8px; +} +#header .header_nav_wrap .header_right_box .my_account_wrap .header_my_account_nav ul::after { +content: ""; +display: block; +margin-top: 8px; +border-bottom: 1px solid #E6ECF0; +} +#header .header_nav_wrap .header_right_box .my_account_wrap .header_my_account_nav ul:last-child::after { +border-bottom: 0px solid #E6ECF0; +} +#header .header_nav_wrap .header_right_box .my_account_wrap .header_my_account_nav ul li { +box-sizing: border-box; +} +#header .header_nav_wrap .header_right_box .my_account_wrap .header_my_account_nav ul li a .display_name { +display: block; +color: #000; +font-size: 14px; +font-weight: 600; +margin-bottom: 4px; +} +#header .header_nav_wrap .header_right_box .my_account_wrap .header_my_account_nav a { +display: block; +padding: 8px 21px; +} +#header .header_nav_wrap .header_right_box .my_account_wrap .header_my_account_nav a:hover, +#header .header_nav_wrap .header_right_box .my_account_wrap .header_my_account_nav ul li a:hover .display_name { +background-color: #189EFC; +text-decoration: none; +color: #fff; +} +#header .header_nav_wrap .header_right_box .toot_button { +width: 90px; +height: 100%; +border-radius: 4px; +color: #fff; +background-color: #2588D0; +transition: 0.15s ease-out;; +} +#header .header_nav_wrap .header_right_box .toot_button:hover { +background-color: #2571D0; +transition: 0.15s ease-out;; +} +#header .header_nav_wrap .header_right_box .toot_button:active { +background-color: #255ED0; +transition: 0.15s ease-out;; +} +#header .header_nav_wrap .header_right_box .toot_button .toot_button_label { +display: flex; +justify-content: center; +align-items: center; +} +#header .header_nav_wrap .header_right_box .toot_button i { +display: inline-block; +font-size: 21px; +margin-right: 2px; +} +#header .header_nav_wrap .header_right_box .toot_button span { +font-size: 13px; +font-weight: 500; +} +#main { +padding-top: 47px; +} +#main > .header_image_box { +width: 100%; +height: 460px; +overflow: hidden; +} +#main > .header_image_box img { +min-width: 100%; +object-fit: cover; +} +#main .profile_nav_wrap { +height: 60px; +width: 100%; +background-color: #fff; +box-shadow: 0 1px 3px 0 rgba(0,0,0,0.25); +} +#main .profile_nav_wrap .profile_nav { +display: flex; +flex-wrap: nowrap; +width: 1200px; +height: 100%; +margin: auto; +padding: 0 5px; +box-sizing: border-box; +} +#main .profile_nav_wrap .profile_nav .profile_nav_left { +width: 300px; +height: 100%; +} +#main .profile_nav_wrap .profile_nav .profile_nav_right { +width: 900px; +height: 100%; +} +#main .profile_nav_wrap .profile_nav .profile_nav_right .profile_nav_list { +display: flex; +flex-wrap: nowrap; +align-items: center; +height: 100%; +} +#main .profile_nav_wrap .profile_nav .profile_nav_right .profile_nav_list .profile_nav_item { +height: 100%; +color: #66757F; +border-color: transparent; +} +#main .profile_nav_wrap .profile_nav .profile_nav_right .profile_nav_list .profile_nav_item a { +display: flex; +flex-direction: column; +flex-wrap: nowrap; +align-items: center; +justify-content: center; +height: 100%; +padding: 0 15px; +box-sizing: border-box; +border-top: 0px solid transparent; +border-bottom: 0px solid #189EFC; +transition: 0.15s; +} +#main .profile_nav_wrap .profile_nav .profile_nav_right .profile_nav_list .profile_nav_item:hover { +color: #189EFC; +box-sizing: border-box; +text-decoration: none; +border-top: 4px solid transparent; +border-bottom: 4px solid #189EFC; +transition: 0.15s; +} +#main .profile_nav_wrap .profile_nav .profile_nav_right .profile_nav_list .profile_nav_item.view { +color: #189EFC; +box-sizing: border-box; +border-top: 4px solid transparent; +border-bottom: 4px solid #189EFC; +} +#main .profile_nav_wrap .profile_nav .profile_nav_right .profile_nav_list .profile_nav_item a:hover { +text-decoration: none; +} +#main .profile_nav_wrap .profile_nav .profile_nav_right .profile_nav_list .profile_nav_item a h2 { +display: inline-block; +font-size: 11px; +font-weight: normal; +} +#main .profile_nav_wrap .profile_nav .profile_nav_right .profile_nav_list .profile_nav_item a span { +display: inline-block; +font-size: 18px; +font-weight: 600; +margin-top: 3px; +} +#main .profile_nav_wrap .profile_nav .profile_nav_right .profile_nav_list .profile_button_box { +display: flex; +align-items: center; +justify-content: flex-end; +flex: 1; +height: 100%; +} +#main .profile_nav_wrap .profile_nav .profile_nav_right .profile_nav_list .profile_button_box button { +float: right; +padding: 9px 16px; +border-radius: 4px; +font-size: 14px; +font-weight: 700; +} +#js-search_title_box { +width: 100%; +height: 64px; +padding: 16px 0; + overflow: hidden; +box-sizing: border-box; +background-color: #189EFC; +} +#js-search_title_box h1 { +display: block; +width: 1200px; +margin: 0 auto; +padding: 0 16px; +font-size: 27px; +font-weight: 400; +line-height: 32px; +color: #fff; +box-sizing: border-box; +} +#main .search_nav_wrap { +height: 50px; +width: 100%; +background-color: #fff; +box-shadow: 0 1px 3px 0 rgba(0,0,0,0.25); +margin-bottom: 4px; +} +#main .search_nav_wrap .search_nav { +display: flex; +flex-wrap: nowrap; +width: 1200px; +height: 100%; +margin: auto; +padding: 0 5px; +box-sizing: border-box; +} +#main .search_nav_wrap .search_nav .search_nav_left { +width: 900px; +height: 100%; +} +#main .search_nav_wrap .search_nav .search_nav_left .search_nav_list { +display: flex; +flex-wrap: nowrap; +align-items: center; +height: 100%; +} +#main .search_nav_wrap .search_nav .search_nav_left .search_nav_list .search_nav_item { +height: 100%; +color: #66757F; +/*! font-size: 13px; */ +} +#main .search_nav_wrap #js-search_nav_peoples.view a , +#main .search_nav_wrap #js-search_nav_toots.view a { +border-top: 4px solid transparent; +border-bottom: 4px solid #189EFC; +} +#main .search_nav_wrap .search_nav .search_nav_left .search_nav_list .search_nav_item a { +display: flex; +flex-direction: column; +flex-wrap: nowrap; +align-items: center; +justify-content: center; +height: 100%; +padding: 0 15px; +box-sizing: border-box; +border-top: 0px solid transparent; +border-bottom: 0px solid #189EFC; +transition: 0.15s; +} +#main .search_nav_wrap .search_nav .search_nav_left .search_nav_list .search_nav_item a:hover { +color: #189EFC; +text-decoration: none; +border-top: 4px solid transparent; +border-bottom: 4px solid #189EFC; +transition: 0.15s; +} +#main .search_nav_wrap .search_nav .search_nav_left .search_nav_list .search_nav_item a.view { +color: #189EFC; +border-top: 4px solid transparent; +border-bottom: 4px solid #189EFC; +} +#main .search_nav_wrap .search_nav .search_nav_left .search_nav_list .search_nav_item a h2 { +display: inline-block; +font-size: 14px; +font-weight: normal; +color: #189EFC; +} +#main .search_nav_wrap .search_nav .search_nav_left .search_nav_list .search_nav_item a span { +display: inline-block; +font-size: 18px; +font-weight: 600; +margin-top: 3px; +} +#main .search_nav_wrap .search_nav .search_nav_left .search_nav_list .search_button_box { +display: flex; +align-items: center; +justify-content: flex-end; +flex: 1; +height: 100%; +} +#main .search_nav_wrap .search_nav .search_nav_left .search_nav_list .search_button_box button { +float: right; +padding: 9px 16px; +border-radius: 4px; +font-size: 14px; +font-weight: 700; +} +#main .article_wrap { +display: flex; +flex-wrap: nowrap; +width: 1200px; +margin: auto; +} +#main .article_wrap .left_column { +position: relative; +width: 300px; +padding: 10px 5px; +box-sizing: border-box; +} +#main .article_wrap .left_column > .profile_icon_box { +position: absolute; +top: -185px; +width: 200px; +height: 200px; +margin-left: 10px; +padding: 5px; +background-color: #fff; +border-radius: 14px; +border: 1px solid #FBFBFC; +box-shadow: 0 0.1px 0.3px rgba(0,0,0,0.26); +cursor: pointer; +} +#main .article_wrap .left_column .profile_icon_box img { +width: 100%; +height: 100%; +border-radius: 8px; +} +#main .article_wrap .left_column .profile_section_wrap { +padding: 36px 16px 0 15px; +word-break: break-all; +} +#main .article_wrap .left_column .profile_section_wrap > .profile_displayname { +font-size: 22px; +font-weight: 700; +line-height: 1; +color: rgb(20, 23, 26); +margin-bottom: 8px; +} +#main .article_wrap .left_column .profile_section_wrap > .profile_username { +color: rgb(101, 119, 134); +font-size: 14px; +font-weight: 300; +margin-bottom: 8px; +} +#main .article_wrap .left_column .profile_section_wrap > .profile_username .profile_followed_by { +font-size: 10px; +display: inline-block; +margin-left: 8px; +} +#main .article_wrap .left_column .profile_section_wrap > .profile_bio { +font-size: 14px; +font-weight: 400; +line-height: 20px; +margin-bottom: 10px; +word-wrap: break-word; +} +#main .article_wrap .left_column .profile_section_wrap > .profile_bio a { +color: #2588D0; +} +#js_profile_recent_images a { +color: #2588D0; +font-size: 13px; +font-weight: 300; +} +#js_profile_recent_images a i { +color: #657786; +margin-right: 8px; +font-size: 16px; +} +#js_profile_recent_images_box { +width: 100%; +font-size: 14px; +display: flex; +margin-top: 8px; +flex-wrap: wrap; +} +#js_profile_recent_images_box .profile_recent_images_item { +width: 80px; +height: 80px; +margin: 0 5px 5px 0; +border-radius: 5px; +overflow: hidden; +flex-shrink: 0; +cursor: pointer; +} +#js_profile_recent_images_box .profile_recent_images_item img { +width: 100%; +height: 100%; +max-width: none; +max-height: none; +object-fit: cover; +} +#main .article_wrap .center_column { +width: auto; +flex: 1; +padding: 10px 5px; +box-sizing: border-box; +} +#main .article_wrap .right_column { +width: 300px; +padding: 10px 5px; +box-sizing: border-box; +} +#js-overlay_content_wrap { +display: none; +position: fixed; +z-index: 1000; +top: 0; +left: 0; +width: 100%; +height: 100%; +overflow: scroll; +} +#js-overlay_content_wrap.view { +display: block; +background-color: rgba(0, 0, 0, 0); +transition: 0.5s; +} +@keyframes fadein_05 { +0% { background-color: rgba(0, 0, 0, 0); } +100% {background-color: rgba(0, 0, 0, 0.5);} +} +@keyframes fadein_08 { +0% { background-color: rgba(0, 0, 0, 0); } +100% {background-color: rgba(0, 0, 0, 0.8);} +} +#js-overlay_content_wrap.view.black_05 { +animation-name: fadein_05; +animation-duration: 0.35s; +animation-fill-mode: forwards; +} +#js-overlay_content_wrap.view.black_08 { +background-color: rgba(0, 0, 0, 0.8); +} +#js-overlay_content_wrap #js-overlay_content { +width: 628px; +height: auto; +margin: 56px auto; +position: relative; +} +#js-overlay_content_wrap #js-overlay_content .close_button { +color: #fff; +position: absolute; +right: -32px; +top: 0; +font-size: 28px; +} +#js-overlay_content_wrap .temporary_object .thumb_box { +display: flex; +align-items: center; +justify-content: center; +width: 100%; +height: 100%; +} +#overlay_message { +position: fixed; +top: -47px; +left: 0; +right: 0; +bottom: 0; +margin: 0 auto; +width: 658px; +height: 58px; +border-bottom-left-radius: 8px; +border-bottom-right-radius: 8px; +background-color: #fff; +box-shadow: 1px 1px 3px rgba(0,0,0,0.35); +z-index: 998; +} +@keyframes overlay_message_active { +0% { top: -47px } +10% { top: 47px; } +85% { top: 47px; } +100% { top: -47px } +} +#overlay_message.view { +animation-name: overlay_message_active; +animation-duration: 3s; +} +#overlay_message section { +color: #999; +font-size: 14px; +padding: 16px; +margin: auto; +display: block; +box-sizing: border-box; +height: 100%; +width: 100%; +display: flex; +justify-content: center; +align-items: center; +} +.toot_detail_wrap { +border-radius: 5px; +} +.toot_detail_wrap .toot_detail:first-child, +.toot_detail_wrap .toot_entry:first-child { +border-top-left-radius: 5px; +border-top-right-radius: 5px; +} +.toot_detail_wrap .toot_detail:last-child, +.toot_detail_wrap .toot_entry:last-child { +border-bottom-left-radius: 5px; +border-bottom-right-radius: 5px; +} +.toot_detail { +width: 628px; +box-sizing: border-box; +background-color: #fff; +} +.toot_entry.ancestors_status .toot_entry_body, +.toot_entry.descendants_status .toot_entry_body { +padding: 18px 40px; +border-bottom: none; +position: relative; +/*! padding-bottom: 8px; */ +} +.toot_entry.ancestors_status.default_padding .toot_entry_body, +.toot_entry.descendants_status.default_padding .toot_entry_body { +padding: 12px; +} +.toot_entry.ancestors_status .toot_entry_body::after, +.toot_entry.descendants_status .toot_entry_body::after { +content: ""; +display: block; +border: 2px solid #76BFEC; +position: absolute; +border-radius: 2px; +position: absolute; +left: 62px; +height: calc(100% - 57px); +top: 68px; +} +.toot_entry.ancestors_status.default_padding .toot_entry_body::after, +.toot_entry.descendants_status.default_padding .toot_entry_body::after { +left: 35px; +height: calc(100% - 60px); +top: 64px; +} +.toot_entry.descendants_status:last-child .toot_entry_body::after { +border: 0px solid #76BFEC; +} +.toot_detail .toot_header { +display: flex; +} +.toot_detail .toot_header .icon_box { +flex-shrink: 0; +width: 48px; +height: 48px; +border-radius: 3px; +overflow: hidden; +margin-right: 8px; +} +.toot_detail .toot_header a { +flex-grow: 1; +display: flex; +flex-direction: column; +justify-content: center; +} +.toot_detail .toot_header a .displayname { +color: #000; +font-size: 17px; +font-weight: 600; +line-height: 1.35; +} +.toot_detail .toot_header a .username { +color: #66757F; +font-size: 14px; +} +.toot_detail .toot_header a:hover { +text-decoration: none; +} +.toot_detail .toot_header a:hover .displayname { +color: #189EFC; +} +.toot_detail .toot_header .expand_button_wrap { +float: right; +position: relative; +width: 48px; +height: 48px; +} +.toot_detail .toot_header .expand_button_wrap .expand_button { +position: absolute; +right: 0; +top: 0; +color: #AAB8C2; +} +.toot_detail .toot_header .expand_button_wrap .expand_button:hover { +color: #189EFC; +} +.toot_detail .toot_header .expand_button_wrap .expand_menu { +display: block; +position: absolute; +cursor: pointer; +top: 36px; +right: -152px; +width: 180px; +padding: 8px 21px; +font-size: 12px; +border-radius: 3px; +box-sizing: border-box; +background-color: #fff; +box-shadow: 0.5px 0.5px 3px rgba(0,0,0,0.26); +z-index: 1; +} +.toot_detail .toot_header .expand_button_wrap .expand_menu::before { +display: block; +content: ""; +z-index: -1; +width: 20px; +height: 20px; +position: absolute; +transform: rotate(45deg); +top: -5px; +left: 8px; +background-color: #fff; +} +.toot_detail .toot_header .expand_button_wrap .expand_menu ul { +margin: 0 -21px; +margin-bottom: 8px; +} +.toot_detail .toot_header .expand_button_wrap .expand_menu ul::after { +content: ""; +display: block; +margin-top: 8px; +border-bottom: 1px solid #E6ECF0; +} +.toot_detail .toot_header .expand_button_wrap .expand_menu ul:last-child::after { +border-bottom: 0px solid #E6ECF0; +} +.toot_detail .toot_header .expand_button_wrap .expand_menu ul li { +box-sizing: border-box; +} +.toot_detail .toot_header .expand_button_wrap .expand_menu a { +display: block; +padding: 8px 21px; +} +.toot_detail .toot_header .expand_button_wrap .expand_menu a:hover { +background-color: #189EFC; +text-decoration: none; +color: #fff; +} +.toot_detail .toot_detail_body { +padding: 30px 40px; +/*! border-radius: 4px; */ +} +.toot_detail .toot_content .toot_article { +font-size: 14px; +line-height: 20px; +margin: 16px auto; +} +.toot_detail.main_status .toot_content .toot_article { +font-size: 24px; +line-height: 1.35; +} +.toot_detail.main_status .toot_content .toot_article .cw_button { +background-color: #6D768C; +border-radius: 3px; +padding: 4px; +margin: auto 4px; +font-size: 12px; +box-sizing: border-box; +color: #fff; +} +.toot_detail.main_status .toot_content .toot_article.content_warning .status_content { +display: none; +} +.toot_detail.main_status .toot_content a { +color: #189EFC; +} +.toot_detail.main_status .toot_content time { +color: #66757F; +font-size: 13px; +font-weight: 300; +} +.toot_detail .toot_footer { +display: flex; +flex-wrap: nowrap; +align-items: center; +width: 230px; +height: 21px; +margin-top: 12px; +} +.toot_detail .toot_footer .toot_reaction { +height: 21px; +flex-grow: 1; +} +.toot_detail .toot_footer .toot_reaction button { +margin: auto; +color: #AAB8C2; +font-size: 18px; +height: 21px; +} +.toot_detail .toot_footer .toot_reaction button.active { +animation-name: status_action_active; +animation-duration: 0.5s; +} +.toot_detail .toot_footer .toot_reaction button .reaction_count { +color: #AAB8C2; +font-size: 12px; +font-weight: 600; +} +@keyframes status_action_active { +0% { transform: scale(1); } +50% { transform: scale(2); } +100% { transform: scale(1); } +} +.toot_detail .toot_footer .toot_reaction .reply_button:hover { +color: #1DA1F2; +} +.toot_detail .toot_footer .toot_reaction .boost_button[reblogged="false"]:hover, +.toot_detail .toot_footer .toot_reaction .boost_button[reblogged="true"], +.toot_detail .toot_footer .toot_reaction .boost_button[reblogged="false"]:hover .reaction_count, +.toot_detail .toot_footer .toot_reaction .boost_button[reblogged="true"] .reaction_count { +color: #17BF63; +} +.toot_detail .toot_footer .toot_reaction .fav_button[favourited="false"]:hover, +.toot_detail .toot_footer .toot_reaction .fav_button[favourited="true"], +.toot_detail .toot_footer .toot_reaction .fav_button[favourited="false"]:hover .reaction_count, +.toot_detail .toot_footer .toot_reaction .fav_button[favourited="true"] .reaction_count { +color: #FFAD1A; +} +.toot_detail .status_form { +border-top: 1px solid #E6ECF0; +border-bottom: 1px solid #E6ECF0; +} +.media_detail { +max-height: 100%; +} +.media_detail .media_box { +background-color: #000; +border-top-right-radius: 5px; +border-top-left-radius: 5px; +overflow: hidden; +text-align: center; +} +.media_detail .toot_entry { +border-bottom-right-radius: 5px; +border-bottom-left-radius: 5px; +} +.media_detail .toot_entry .toot_entry_body { +border-bottom: none; +} +.media_detail .toot_entry .media_views { +display: none; +} diff --git a/public_html/assets/images/favicon.ico b/assets/images/favicon.ico similarity index 100% rename from public_html/assets/images/favicon.ico rename to assets/images/favicon.ico diff --git a/public_html/assets/images/halcyon.png b/assets/images/halcyon.png similarity index 100% rename from public_html/assets/images/halcyon.png rename to assets/images/halcyon.png diff --git a/public_html/assets/images/halcyon_logo.png b/assets/images/halcyon_logo.png similarity index 100% rename from public_html/assets/images/halcyon_logo.png rename to assets/images/halcyon_logo.png diff --git a/public_html/assets/images/halcyon_w.png b/assets/images/halcyon_w.png similarity index 100% rename from public_html/assets/images/halcyon_w.png rename to assets/images/halcyon_w.png diff --git a/assets/images/mastodon.png b/assets/images/mastodon.png new file mode 100644 index 0000000..26bde52 Binary files /dev/null and b/assets/images/mastodon.png differ diff --git a/assets/images/mastodon.svg b/assets/images/mastodon.svg new file mode 100644 index 0000000..4b72b3a --- /dev/null +++ b/assets/images/mastodon.svg @@ -0,0 +1 @@ + diff --git a/public_html/assets/images/missing.png b/assets/images/missing.png similarity index 100% rename from public_html/assets/images/missing.png rename to assets/images/missing.png diff --git a/public_html/assets/images/missing_header.png b/assets/images/missing_header.png similarity index 100% rename from public_html/assets/images/missing_header.png rename to assets/images/missing_header.png diff --git a/public_html/assets/images/self_auth.png b/assets/images/self_auth.png similarity index 100% rename from public_html/assets/images/self_auth.png rename to assets/images/self_auth.png diff --git a/assets/images/self_auth_min.png b/assets/images/self_auth_min.png new file mode 100644 index 0000000..6eeab1e Binary files /dev/null and b/assets/images/self_auth_min.png differ diff --git a/assets/js/halcyon/halcyonFunctions.js b/assets/js/halcyon/halcyonFunctions.js new file mode 100644 index 0000000..949fc50 --- /dev/null +++ b/assets/js/halcyon/halcyonFunctions.js @@ -0,0 +1,174 @@ +function getLinkFromXHRHeader(xhrheaderstring) { +const re = xhrheaderstring.match(/link: <.+api\/v1\/(.+?)>; rel="(.+?)", <.+api\/v1\/(.+?)>; rel="(.+?)"/); +let di = new Object(); +if(re){ +di[re[2]] = re[1]; +di[re[4]] = re[3]; +} +return di; +} +function getRelativeURL(url, id, options) { +const array = url.split('/'); +if ( array.length >= 4 ) { +if ( !options ) { +var options = "" +}; +if (id) { +if (array[array.length-1].substr(0,1) === '@') { +const link= '/'+array[array.length-1]+'@'+array[2]+options+'?mid='+id+'&'; +return link; +} +else { +const link= '/@'+array[array.length-1]+'@'+array[2]+options+'?mid='+id+'&'; +return link; +} +} +else { +if (array[array.length-1].substr(0,1) === '@') { +const link= '/'+array[array.length-1]+'@'+array[2]+options; +return link; +} else { +const link= '/@'+array[array.length-1]+'@'+array[2]+options; +return link; +} +} +} +} +function replaceInternalLink(){ +$(".h-card > a").each(function(i) { +$(this).attr('href',getRelativeURL($(this).attr('href'))); +}); +$(".toot_article a").each(function(i) { +const tags = $(this).attr('href').match(/https:\/\/.+..+\/tags\/(.+)\/?/); +if (tags) { +$(this).attr('href','/search?q='+tags[1]); +} +}); +} +function getConversionedDate(key, value) { +if (value === null || +value.constructor !== String || +value.search(/^\d{4}-\d{2}-\d{2}/g) === -1) +return value; +return new Date(value); +} +function getRelativeDatetime(current_time, posted_time) { +const calendar = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]; +var posted_time_original = posted_time, +posted_time = getConversionedDate(null, posted_time_original).getTime(), +elapsedTime = Math.ceil((current_time-posted_time)/1000); +if (elapsedTime < 60) { +const datetime ="・" + elapsedTime + "s"; +return datetime; +} +else if (elapsedTime < 120) { +const datetime ="・1m"; +return datetime; +} +else if (elapsedTime < (60*60)) { +const datetime ="・" + (Math.floor(elapsedTime / 60) < 10 ? " " : "") + Math.floor(elapsedTime / 60) + "m"; +return datetime; +} +else if (elapsedTime < (120*60)) { +const datetime ="・1h"; +return datetime; +} +else if (elapsedTime < (24*60*60)) { +const datetime ="・" + (Math.floor(elapsedTime / 3600) < 10 ? " " : "") + Math.floor(elapsedTime / 3600) + "h"; +return datetime; +} +else { +const datetime ="・" + calendar[posted_time_original.getMonth()] + " " + posted_time_original.getDate(); +return datetime; +} +} +function resetApp() { +current_id = Number(localStorage.getItem("current_id")); +current_instance = localStorage.getItem("current_instance"); +authtoken= localStorage.getItem("current_authtoken"); +api = new MastodonAPI({ +instance: 'https://'+current_instance, +api_user_token: authtoken +}); +api.get("accounts/verify_credentials", function(AccountObj) { +localStorage.setItem("current_display_name", AccountObj["display_name"]); +localStorage.setItem("current_acct", AccountObj["acct"]); +localStorage.setItem("current_url", getRelativeURL(AccountObj["url"],AccountObj["id"])); +localStorage.setItem("current_header", AccountObj["header"]); +localStorage.setItem("current_avatar", AccountObj["avatar"]); +localStorage.setItem("current_statuses_count", AccountObj["statuses_count"]); +localStorage.setItem("current_following_count", AccountObj["following_count"]); +localStorage.setItem("current_followers_count", AccountObj["followers_count"]); +localStorage.setItem("current_statuses_count_link", getRelativeURL(AccountObj["url"],AccountObj["id"])); +localStorage.setItem("current_following_count_link", getRelativeURL(AccountObj["url"],AccountObj["id"],'/following')); +localStorage.setItem("current_followers_count_link", getRelativeURL(AccountObj["url"],AccountObj["id"],'/followers')); +localStorage.setItem("current_favourites_link", getRelativeURL(AccountObj["url"],AccountObj["id"],'/favourites')); +current_display_name = localStorage.getItem("current_display_name"); +current_acct = localStorage.getItem("current_acct"); +current_url = localStorage.getItem("current_url"); +current_header = localStorage.getItem("current_header"); +current_avatar = localStorage.getItem("current_avatar"); +current_statuses_count = localStorage.getItem("current_statuses_count"); +current_following_count = localStorage.getItem("current_following_count"); +current_followers_count = localStorage.getItem("current_followers_count"); +current_statuses_count_link = localStorage.getItem("current_statuses_count_link"); +current_following_count_link = localStorage.getItem("current_following_count_link"); +current_followers_count_link = localStorage.getItem("current_followers_count_link"); +current_favourites_link = localStorage.getItem("current_favourites_link"); +$(".js_current_profile_displayname").text(current_display_name); +$(".js_current_profile_username").text(current_acct); +$(".js_current_profile_link").attr('href', current_url); +$(".js_current_header_image").attr('src', current_header); +$(".js_current_profile_image").attr('src', current_avatar); +$(".js_current_toots_count").text(current_statuses_count); +$(".js_current_following_count").text(current_following_count); +$(".js_current_followers_count").text(current_followers_count); +$(".current_toots_count_link").attr('href', current_statuses_count_link); +$(".current_following_count_link").attr('href', current_following_count_link); +$(".current_followers_count_link").attr('href', current_followers_count_link); +replace_emoji(); +}); +$.cookie("session", "true", { path: '/' }); +} +function refreshApp() { +current_id = Number(localStorage.getItem("current_id")); +current_instance = localStorage.getItem("current_instance"); +authtoken= localStorage.getItem("current_authtoken"); +api = new MastodonAPI({ +instance: "https://"+current_instance, +api_user_token: authtoken +}); +current_display_name = localStorage.getItem("current_display_name"); +current_acct = localStorage.getItem("current_acct"); +current_url= localStorage.getItem("current_url"); +current_header = localStorage.getItem("current_header"); +current_avatar = localStorage.getItem("current_avatar"); +current_statuses_count = localStorage.getItem("current_statuses_count"); +current_following_count= localStorage.getItem("current_following_count"); +current_followers_count= localStorage.getItem("current_followers_count"); +current_statuses_count_link= localStorage.getItem("current_statuses_count_link"); +current_following_count_link = localStorage.getItem("current_following_count_link"); +current_followers_count_link = localStorage.getItem("current_followers_count_link"); +current_favourites_link= localStorage.getItem("current_favourites_link"); +} +function setCurrentProfile() { +$(".js_current_profile_displayname").text(current_display_name); +$(".js_current_profile_username").text(current_acct); +$(".js_current_profile_link").attr("href", current_url); +$(".js_current_header_image").attr("src", current_header); +$(".js_current_profile_image").attr("src", current_avatar); +$(".js_current_toots_count").text(current_statuses_count); +$(".js_current_following_count").text(current_following_count); +$(".js_current_followers_count").text(current_followers_count); +$(".current_toots_count_link").attr("href", current_statuses_count_link); +$(".current_following_count_link").attr("href", current_following_count_link); +$(".current_followers_count_link").attr("href", current_followers_count_link); +replace_emoji(); +} +function putMessage(Message) { +$('#overlay_message').addClass('view'); +$('#overlay_message section span').text(Message); +setTimeout(function(){ +$("#overlay_message").removeClass("view"); +},3000); +}; \ No newline at end of file diff --git a/assets/js/halcyon/halcyonUI.js b/assets/js/halcyon/halcyonUI.js new file mode 100644 index 0000000..dc69247 --- /dev/null +++ b/assets/js/halcyon/halcyonUI.js @@ -0,0 +1,2340 @@ +$(function() { +$('input[type="file"]').val(''); +}); +$(function() { +$(document).on('click','a', function(e) { +e.stopPropagation(); +}); +$(document).on('keypress',"input.disallow_enter[type='text']", function(e) { +if((e.which == 13) || (e.keyCode == 13)){ return false; } +}); +$(document).on('click','.follow_button', function(e) { +e.stopPropagation(); +if ($(this).attr('mid') !== null) { +api.post('accounts/'+$(this).attr('mid')+'/follow', function (data) { +}); +} else if ($(this).attr('data')!== null) { +api.post("follows", {uri:$(this).attr('data')}, function (data) { +}); +} +$(this).toggleClass('follow_button'); +$(this).toggleClass('following_button'); +$(this).html('Following'); +return false; +}); +$(document).on('click','.following_button', function(e) { +e.stopPropagation(); +if ($(this).attr('mid') !== null) { +api.post('accounts/'+$(this).attr('mid')+'/unfollow', function (data) { +}); +} +$(this).toggleClass('following_button'); +$(this).toggleClass('follow_button'); +$(this).html('Follow'); +return false; +}); +$(document).on('click','.mute_button', function(e) { +if ($(this).attr('mid') !== null) { +api.post('accounts/'+$(this).attr('mid')+'/mute', function (data) { +}); +} +putMessage("You'll no longer receive notifications from this user"); +return false; +}); +$(document).on('click','.muting_button', function(e) { +if($(this).attr('mid')!=null) { +api.post('accounts/'+$(this).attr('mid')+'/unmute', function (data) { +}); +} +$(this).toggleClass('muting_button'); +$(this).toggleClass('follow_button'); +$(this).html('Follow'); +putMessage("Unmuted this user"); +return false; +}); +$(document).on('click','.block_button', function(e) { +if ($(this).attr('mid') !== null) { +api.post('accounts/'+$(this).attr('mid')+'/block', function (data) { +}); +} +putMessage("This user has been blocked"); +return false; +}); +$(document).on('click','.blocking_button', function(e) { +e.stopPropagation(); +if ($(this).attr('mid') !== null) { +api.post('accounts/'+$(this).attr('mid')+'/unblock', function (data) { +}); +} +$(this).toggleClass('blocking_button'); +$(this).toggleClass('follow_button'); +$(this).html('Follow'); +putMessage("Unblocked this user"); +return false; +}); +$(document).on('click','.boost_button', function(e) { +e.stopPropagation(); +if($(this).attr('reblogged') !== 'true'){ +api.post("statuses/"+$(this).attr('tid')+"/reblog", function (data) { +}); +$(this).attr('reblogged', "true"); +$(this).toggleClass('active'); +} else { +api.post("statuses/"+$(this).attr('tid')+"/unreblog", function (data) { +}); +$(this).attr('reblogged', "hold"); +$(this).toggleClass('active'); +$(this).mouseout(function(e) { +$(this).attr('reblogged', "null"); +}); +} +return false; +}); +$(document).on('click','.fav_button', function(e) { +e.stopPropagation(); +if($(this).attr('favourited') !== 'true'){ +api.post("statuses/"+$(this).attr('tid')+"/favourite", function (data) { +}); +$(this).attr('favourited', "true"); +$(this).toggleClass('active'); +} else { +api.post("statuses/"+$(this).attr('tid')+"/unfavourite", function (data) { +}); +$(this).attr('favourited', "hold"); +$(this).toggleClass('active'); +$(this).mouseout(function(e) { +$(this).attr('favourited', "null"); +}); +} +return false; +}); +$(document).on('click','.delete_button', function(e) { +const sid = $(this).attr('tid'); +api.delete("statuses/"+sid, function (data) { +$('.toot_entry[sid="'+sid+'"]').remove(); +putMessage("Your Toot has been deleted"); +}); +}); +$(document).on('click','.cw_button', function(e) { +e.stopPropagation(); +const article = $(this).parent(); +if ( article.hasClass('content_warning') ) { +$(this).text('SHOW LESS'); +article.removeClass('content_warning'); +} else { +$(this).text('SHOW MORE'); +article.addClass('content_warning'); +} +return false; +}); +$(document).on('click','.sensitive_alart', function(e) { +e.stopPropagation(); +$(this).toggleClass('invisible'); +return false; +}); +$(document).on('click','.header_account_avatar', function(e) { +e.stopPropagation(); +$(this).next('.header_my_account_nav').toggleClass('invisible'); +}); +$(document).on('click','.expand_button', function(e) { +e.stopPropagation(); +$(this).next('.expand_menu').toggleClass('invisible'); +return false; +}); +$(document).on('click','.status_form.ready .active_submit_button', function(e) { +e.stopImmediatePropagation() +return false; +}); +}); +$(function() { +$(document).on('click', function(e) { +$('.header_my_account_nav').addClass('invisible'); +$('.expand_menu').addClass('invisible'); +}); +}) +function mediaattachments_template(status) { +let media_views = ""; +if(status.media_attachments[0].remote_url != null) { +status.media_attachments[0].url = status.media_attachments[0].remote_url; +} +if ( status.media_attachments[0].url === "/files/original/missing.png" ) { +return ""; +} else if ( !status.sensitive ) { +media_views = `
`; +} else { +media_views = ` +
+
+Sensitive content +Click to view +
`; +} +if ( status.media_attachments[0].type === "video" | status.media_attachments[0].type === "gifv" ) { +media_views += (` +
+ +
`); +} else { +if ( status.media_attachments.length <= 2 ) { +for ( let i in status.media_attachments ) { +if(status.media_attachments[i].remote_url != null) { +status.media_attachments[i].url = status.media_attachments[i].remote_url; +} +media_views += (` +
+ +
`); +} +} else { +for ( let i in status.media_attachments ) { +if (Number(i) === 1) { +if(status.media_attachments[i].remote_url != null) { +status.media_attachments[i].url = status.media_attachments[i].remote_url; +} +media_views += (` +
+
+ +
`); +} else { +media_views += (` +
+ +
`); +} +} +media_views += "
"; +} +media_views += "
"; +} +return media_views; +} +function timeline_template(status) { +if (status.reblog === null) { +if ( +status.account.id !== JSON.parse(localStorage.getItem("what_to_follow_0")).id & +status.account.id !== JSON.parse(localStorage.getItem("what_to_follow_1")).id & +status.account.id !== JSON.parse(localStorage.getItem("what_to_follow_2")).id & +status.account.id !== current_id +) { +localStorage.setItem("what_to_follow_"+String(Math.floor(Math.random()*3)), JSON.stringify(status.account) ); +} +const status_account_link= getRelativeURL(status.account.url, status.account.id), +status_datetime= getRelativeDatetime(Date.now(), getConversionedDate(null, status.created_at)), +status_attr_datetime = getConversionedDate(null, status.created_at); +let alart_text= "", +article_option= "", +toot_reblogs_count= "", +toot_favourites_count = "", +media_views = ""; +if ( status.spoiler_text ) { +alart_text = ""+status.spoiler_text+"", +article_option = "content_warning"; +} +if (status.reblogs_count) { +toot_reblogs_count = status.reblogs_count; +} +if (status.favourites_count) { +toot_favourites_count = status.favourites_count; +} +if ( status.media_attachments.length ) { +media_views = mediaattachments_template(status); +} +const html=(` +
  • +
    + +
    + +
    +
    +
    +
    + + +
    +
    +${alart_text} + +${status.content} + +${media_views} +
    +
    +
    + +
    +
    + +
    +
    + +
    +
    +
    +
    +
  • `); +return $(html) +} else { +if ( +status.reblog.account.id !== JSON.parse(localStorage.getItem("what_to_follow_0")).id & +status.reblog.account.id !== JSON.parse(localStorage.getItem("what_to_follow_1")).id & +status.reblog.account.id !== JSON.parse(localStorage.getItem("what_to_follow_2")).id & +status.account.id!== current_id +) { +localStorage.setItem("what_to_follow_" + String(Math.floor(Math.random()*3)), JSON.stringify(status.reblog.account)); +} +const status_datetime= getRelativeDatetime(Date.now(), getConversionedDate(null, status.reblog.created_at)), +status_attr_datetime = getConversionedDate(null, status.reblog.created_at), +status_reblog_account_link = getRelativeURL(status.reblog.account.url, status.reblog.account.id), +status_account_link= getRelativeURL(status.account.url, status.account.id); +let alart_text= "", +article_option= "", +toot_reblogs_count= "", +toot_favourites_count = "", +media_views = ""; +if ( status.reblog.spoiler_text ) { +alart_text = ""+status.reblog.spoiler_text+"", +article_option = "content_warning"; +} +if (status.reblog.reblogs_count) { +toot_reblogs_count = status.reblog.reblogs_count; +} +if (status.reblog.favourites_count) { +toot_favourites_count = status.reblog.favourites_count; +} +if ( status.reblog.media_attachments.length ) { +media_views = mediaattachments_template(status.reblog); +} +const html = (` +
  • + +
    + +
    + +
    +
    +
    +
    + + +
    +
    +${alart_text} + +${status.reblog.content} + +${media_views} +
    +
    +
    + +
    +
    + +
    +
    + +
    +
    +
    +
    +
  • `); +return $(html) +} +} +function notifications_template(NotificationObj) { +const notice_author_link = getRelativeURL(NotificationObj.account.url, NotificationObj.account.id); +if ( NotificationObj.type === 'favourite' | NotificationObj.type === 'reblog' ) { +const toot_author_link = getRelativeURL(NotificationObj.status.account.url, NotificationObj.status.account.id), +toot_datetime= getRelativeDatetime(Date.now(), getConversionedDate(null, NotificationObj.status.created_at)), +toot_attr_datetime = getConversionedDate(null, NotificationObj.status.created_at); +if( NotificationObj.type=='favourite' ){ +const html = (` +
  • + +
    +
    +
    + +
    +
    +

    ${NotificationObj.status.content}

    +
    +
    +
    +
    +
  • `); +return $(html); +} else if ( NotificationObj.type === 'reblog' ) { +const sid= NotificationObj.status.id, +html = (` +
  • + +
    +
    +
    + +
    +
    +

    ${NotificationObj.status.content}

    +
    +
    +
    +
    +
  • `); +return $(html); +} +} else if ( NotificationObj.type === 'mention' ) { +const toot_author_link = getRelativeURL(NotificationObj.status.account.url, NotificationObj.status.account.id), +toot_datetime= getRelativeDatetime(Date.now(), getConversionedDate(null, NotificationObj.status.created_at)), +toot_attr_datetime = getConversionedDate(null, NotificationObj.status.created_at); +let alart_text= "", +article_option= "", +toot_reblogs_count= "", +toot_favourites_count = "", +media_views = ""; +if (NotificationObj.status.spoiler_text) { +alart_text = ''+NotificationObj.status.spoiler_text+'', +article_option = 'content_warning'; +} +if (NotificationObj.status.reblogs_count) { +toot_reblogs_count = NotificationObj.status.reblogs_count; +} +if (NotificationObj.status.favourites_count) { +toot_favourites_count = NotificationObj.status.favourites_count; +} +if (NotificationObj.status.media_attachments.length) { +media_views = mediaattachments_template(NotificationObj.status); +} +const html=(` +
  • +
    + +
    + +
    +
    +
    +
    + + +
    +
    +${alart_text} + +${NotificationObj.status.content} + +${media_views} +
    +
    +
    + +
    +
    + +
    +
    + +
    +
    +
    +
    +
  • `); +return $(html); +} else { +const html=(` +
  • + +
  • `); +return $(html); +} +} +function follows_template(AccountObj) { +const array = AccountObj.url.split('/'), +profile_link = '/'+array[array.length-1]+'@'+array[array.length-2]+'?mid='+AccountObj.id+'&'; +const html = (` +
    +
    + +
    +
    +
    + +
    + + +
    +

    ${AccountObj.note}

    +
    +
    +
    `); +return $(html) +} +function status_template(status, class_options) { +if ( status.reblog === null ) { +const status_account_link= getRelativeURL(status.account.url, status.account.id), +status_datetime= getConversionedDate(null, status.created_at), +status_attr_datetime = getConversionedDate(null, status.created_at); +let alart_text= "", +article_option= "", +toot_reblogs_count= "", +toot_favourites_count = "", +media_views = ""; +if (status.spoiler_text) { +alart_text = ''+status.spoiler_text+'', +article_option = 'content_warning'; +} +if (status.reblogs_count) { +toot_reblogs_count = status.reblogs_count; +} +if (status.favourites_count) { +toot_favourites_count = status.favourites_count; +} +if (status.media_attachments.length) { +media_views = mediaattachments_template(status); +} +const html=(` +
    +
    +
    +
    + +
    + + +${status.account.display_name} + + +@${status.account.acct} + + + +
    +
    +
    +${alart_text} + +${status.content} + +${media_views} +
    + +
    +
    +
    + +
    +
    + +
    +
    + +
    +
    +
    +
    +
    +
    + +
    +
    + +
    + +
    + +
    + + +
    +
    + +
    `); +history.pushState(null, null, getRelativeURL(status.account.url, status.account.id, '/status/'+status.id)); +return $(html) +} else { +const status_datetime= getConversionedDate(null, status.reblog.created_at), +status_attr_datetime = getConversionedDate(null, status.reblog.created_at), +status_reblog_account_link = getRelativeURL(status.reblog.account.url, status.reblog.account.id), +status_account_link= getRelativeURL(status.reblog.account.url, status.reblog.account.id); +let alart_text= "", +article_option= "", +toot_reblogs_count= "", +toot_favourites_count = "", +media_views = ""; +if (status.spoiler_text) { +alart_text = ''+status.reblog.spoiler_text+'', +article_option = 'content_warning'; +} +if (status.reblog.reblogs_count) { +toot_reblogs_count = status.reblog.reblogs_count; +} +if (status.reblog.favourites_count) { +toot_favourites_count = status.reblog.favourites_count; +} +if(status.reblog.media_attachments.length){ +media_views = mediaattachments_template(status.reblog); +} +const html=(` +
    +
    +
    +
    + +
    + + +${status.reblog.account.display_name} + + +@${status.reblog.account.acct} + + + +
    +
    +
    +${alart_text} + +${status.reblog.content} + +${media_views} +
    + +
    +
    +
    + +
    +
    + +
    +
    + +
    +
    +
    +
    +
    +
    + +
    +
    + +
    + +
    + +
    + + +
    +
    + +
    +`); +history.pushState(null, null, getRelativeURL(status.reblog.account.url, status.reblog.id, '/status/'+status.reblog.id)); +return $(html) +} +} +function media_template(status, mediaURL) { +if ( !status ) { +const html = (` +
    +
    + +
    +
    `); +return $(html) +} else { +const status_template = timeline_template(status).html(), +html = (` +
    +
    + +
    +
    +${status_template} +
    +
    `); +return $(html) +} +} +function context_template(status, class_options) { +if ( status.reblog === null ) { +const status_account_link= getRelativeURL(status.account.url, status.account.id), +status_datetime= getRelativeDatetime(Date.now(), getConversionedDate(null, status.created_at)), +status_attr_datetime = getConversionedDate(null, status.created_at); +let alart_text= "", +article_option= "", +toot_reblogs_count= "", +toot_favourites_count = "", +media_views = ""; +if ( status.spoiler_text ) { +alart_text = ''+status.spoiler_text+'', +article_option = 'content_warning'; +} +if (status.reblogs_count) { +toot_reblogs_count = status.reblogs_count; +} +if (status.favourites_count) { +toot_favourites_count = status.favourites_count; +} +if( status.media_attachments.length) { +media_views = mediaattachments_template(status); +} +const html=(` +
    +
    +
    + +
    +
    +
    + + +${status.account.display_name} + + +@${status.account.acct} + + + + +
    +
    +${alart_text} + +${status.content} + +${media_views} +
    +
    +
    + +
    +
    + +
    +
    + +
    +
    +
    +
    +
    `); +return $(html) +} else { +const status_datetime= getRelativeDatetime(Date.now(), getConversionedDate(null, status.reblog.created_at)), +status_attr_datetime = getConversionedDate(null, status.reblog.created_at), +status_reblog_account_link = getRelativeURL(status.reblog.account.url, status.reblog.account.id), +status_account_link= getRelativeURL(status.account.url, status.account.id); +let alart_text= "", +article_option= "", +toot_reblogs_count= "", +toot_favourites_count = "", +media_views = ""; +if ( status.spoiler_text ) { +alart_text = ''+status.reblog.spoiler_text+'', +article_option = 'content_warning'; +} +if (status.reblog.reblogs_count) { +toot_reblogs_count = status.reblog.reblogs_count; +} +if (status.reblog.favourites_count) { +toot_favourites_count = status.reblog.favourites_count; +} +if (status.reblog.media_attachments.length) { +media_views = mediaattachments_template(status.reblog); +} +const html=(` +
    + +
    +
    + +
    +
    +
    + + +${status.reblog.account.display_name} + + +@${status.reblog.account.acct} + + + + +
    +
    +${alart_text} + +${status.reblog.content} + +${media_views} +
    +
    +
    + +
    +
    + +
    +
    + +
    +
    +
    +
    +
    `); +return $(html) +} +} +function setTimeline(level,load_options) { +let isSyncing = true; +if ( load_options === undefined ) { +var load_options = []; +} +api.get(level, load_options, function(statuses) { +let reply_sources = {}; +for ( let i in statuses ) { +timeline_template(statuses[i]).appendTo("#js-timeline"); +if (statuses[i].in_reply_to_id && level === "timelines/home" | level === "timelines/public" ) { +if (!reply_sources[statuses[i].in_reply_to_id] & !$(".toot_entry[sid='"+statuses[i].in_reply_to_id+"']").length ) { +reply_sources[statuses[i].in_reply_to_id] = statuses[i].id; +api.get('statuses/'+statuses[i].in_reply_to_id, function(in_reply_statuses) { +$("#js-timeline .toot_entry[sid='"+reply_sources[in_reply_statuses.id]+"']").before(context_template(in_reply_statuses, 'ancestors_status default_padding')); +replace_emoji(); +}); +} +} +}; +links = getLinkFromXHRHeader(responce_headers); +replaceInternalLink(); +replace_emoji(); +if (!statuses.length) { +$('#js-timeline_footer > i').css({"display":"none"}); +} +isSyncing = false; +}); +$(window).scroll(function () { +if ( $(window).scrollTop()+window.innerHeight >= $(document).height()-700 ) { +if (!isSyncing) { +isSyncing = true; +load_options.unshift( {name:"max_id",data:links['next'].match(/max_id=(.+)&?/)[1]} ); +api.get(level, load_options, function(statuses) { +if (statuses.length) { +let reply_sources = {}; +for ( let i in statuses ) { +timeline_template(statuses[i]).appendTo("#js-timeline"); +if (statuses[i].in_reply_to_id && level === "timelines/home" | level === "timelines/public" ) { +if (!reply_sources[statuses[i].in_reply_to_id] & !$(".toot_entry[sid='"+statuses[i].in_reply_to_id+"']").length) { +reply_sources[statuses[i].in_reply_to_id] = statuses[i].id; +api.get('statuses/'+statuses[i].in_reply_to_id, function(in_reply_statuses) { +$("#js-timeline .toot_entry[sid='"+reply_sources[in_reply_statuses.id]+"']").before(context_template(in_reply_statuses, 'ancestors_status default_padding')); +replace_emoji(); +}); +} +} +}; +links = getLinkFromXHRHeader(responce_headers); +replaceInternalLink(); +replace_emoji(); +isSyncing = false; +} else { +$('.timeline_footer > i').css({"display":"none"}); +$('.timeline_footer').append(''); +isSyncing = true; +} +}); +load_options.shift(); +}; +}; +}); +$(function() { +if ( level === "timelines/home" ) { +var streamscope = "user", +scope = "home"; +} else if ( level === "timelines/public" & load_options.length) { +var streamscope = "public:local", +scope = "local"; +} else if ( level === "timelines/public" & !load_options.length) { +var streamscope = "public", +scope = "federated"; +} +let statuses = []; +const original_title = $('title').text(); +api.stream(streamscope, function(userstream) { +if (userstream.event === "update") { +const streaming_option = localStorage.getItem("setting_post_stream"); +if ( streaming_option === "manual" ) { +if ( !$('.toot_entry[sid="'+userstream.payload.id+'"]').length ) { +$('#js-stream_update').css({'display':'block','height':'auto','padding':'10px'}); +statuses.unshift(userstream.payload); +$('#js-stream_update > button > span').text(statuses.length); +$('title').text("("+statuses.length+") "+original_title); +$('#header .header_nav_list .'+scope+'_badge').removeClass('invisible'); +} +} else if ( streaming_option === "auto" ) { +if ( !$('.toot_entry[sid="'+userstream.payload.id+'"]').length ) { +timeline_template(userstream.payload).prependTo("#js-timeline"); +replaceInternalLink(); +replace_emoji(); +if ( level === "timelines/home" | level === "timelines/public" ) { +if (userstream.payload.in_reply_to_id & !$(".toot_entry[sid='"+userstream.in_reply_to_id+"']").length) { +let reply_source = userstream.payload.id; +api.get('statuses/'+userstream.payload.in_reply_to_id, function(in_reply_statuses) { +$("#js-timeline .toot_entry[sid='"+reply_source+"']").before(context_template(in_reply_statuses, 'ancestors_status default_padding')); +replaceInternalLink(); +replace_emoji(); +}); +} +} +} +} +} +}); +$(document).on('click','#js-stream_update', function(e) { +$('#header .header_nav_list .'+scope+'_badge').addClass('invisible'); +$('#js-stream_update').css({'display':'none','height':'0','padding':'0px'}); +statuses.reverse(); +for ( let i in statuses ) { +timeline_template(statuses[i]).prependTo("#js-timeline"); +replace_emoji(); +if ( level === "timelines/home" | level === "timelines/public" ) { +if (statuses[i].in_reply_to_id) { +const reply_source = statuses[i].id; +api.get('statuses/'+statuses[i].in_reply_to_id, function(in_reply_statuses) { +$("#js-timeline .toot_entry[sid='"+reply_source+"']").before(context_template(in_reply_statuses, 'ancestors_status default_padding')); +replace_emoji(); +}); +} +} +$('title').text(original_title); +}; +statuses = []; +}); +}); +}; +function setOtherTimeline(instance, load_options) { +let isSyncing = true; +if ( load_options === undefined ) { +var load_options = []; +} +const loadstatus = instance + "timelines/public" +api.getOther(loadstatus, load_options, function(statuses) { +let reply_sources = {}; +for ( let i in statuses ) { +timeline_template(statuses[i]).appendTo("#js-timeline"); +if (statuses[i].in_reply_to_id ) { +if (!reply_sources[statuses[i].in_reply_to_id]) { +reply_sources[statuses[i].in_reply_to_id] = statuses[i].id; +api.getOther(instance + 'statuses/'+statuses[i].in_reply_to_id, function(in_reply_statuses) { +$("#js-timeline .toot_entry[sid='"+reply_sources[in_reply_statuses.id]+"']").before(context_template(in_reply_statuses, 'ancestors_status default_padding')); +replace_emoji(); +}); +} +} +}; +$('.toot_entry .toot_footer').addClass('invisible'); +links = getLinkFromXHRHeader(responce_headers); +replaceInternalLink(); +replace_emoji(); +if (!statuses.length) { +$('#js-timeline_footer > i').css({"display":"none"}); +} +isSyncing = false; +}); +$(window).scroll(function () { +if ( $(window).scrollTop()+window.innerHeight >= $(document).height()-700 ) { +if (!isSyncing) { +isSyncing = true; +load_options.unshift( {name:"max_id",data:links['next'].match(/max_id=(.+)&?/)[1]} ); +api.getOther(loadstatus, load_options, function(statuses) { +if (statuses.length) { +let reply_sources = {}; +for ( let i in statuses ) { +timeline_template(statuses[i]).appendTo("#js-timeline"); +if (statuses[i].in_reply_to_id ) { +if (!reply_sources[statuses[i].in_reply_to_id]) { +reply_sources[statuses[i].in_reply_to_id] = statuses[i].id; +api.getOther(instance+'statuses/'+statuses[i].in_reply_to_id, function(in_reply_statuses) { +$("#js-timeline .toot_entry[sid='"+reply_sources[in_reply_statuses.id]+"']").before(context_template(in_reply_statuses, 'ancestors_status default_padding')); +replace_emoji(); +}); +} +} +}; +$('.toot_entry .toot_footer').addClass('invisible'); +links = getLinkFromXHRHeader(responce_headers); +replaceInternalLink(); +replace_emoji(); +isSyncing = false; +} else { +$('.timeline_footer > i').css({"display":"none"}); +$('.timeline_footer').append(''); +isSyncing = true; +} +}); +load_options.shift(); +}; +}; +}); +}; +function setNotifications(load_options) { +let isSyncing = true; +if (load_options === undefined) { +var load_options = []; +} +api.get('notifications', load_options, function(NotificationObj) { +for (let i in NotificationObj) { +notifications_template(NotificationObj[i]).appendTo("#js-timeline"); +}; +links = getLinkFromXHRHeader(responce_headers); +replaceInternalLink(); +replace_emoji(); +if (!NotificationObj.length) { +$('#js-timeline_footer > i').css({"display":"none"}); +} +isSyncing = false; +}); +$(window).scroll(function () { +if($(window).scrollTop() + window.innerHeight >= $(document).height()-700) { +if( !isSyncing ){ +isSyncing = true; +load_options.unshift( {name:"max_id",data:links['next'].match(/max_id=(.+)&?/)[1]} ); +api.get('notifications', load_options, function(NotificationObj) { +if (NotificationObj.length) { +for (let i in NotificationObj) { +notifications_template(NotificationObj[i]).appendTo("#js-timeline"); +}; +links = getLinkFromXHRHeader(responce_headers); +replaceInternalLink(); +replace_emoji(); +isSyncing = false; +} else { +$('.timeline_footer > i').css({"display":"none"}); +$('.timeline_footer').append(''); +isSyncing = true; +} +}); +load_options.shift(); +}; +}; +}); +api.stream("user", function(userstream) { +const original_title = $('title').text(); +if (userstream.event === "notification") { +const streaming_option = localStorage.getItem("setting_post_stream"); +if ( streaming_option === "manual" ) { +} else if ( streaming_option === "auto" ) { +notifications_template(userstream.payload).prependTo("#js-timeline"); +replaceInternalLink(); +replace_emoji(); +} +} +}); +} +function setFollows(mid, param, load_options) { +let isSyncing = true, +followsList = []; +api.get('accounts/'+mid+'/'+param, load_options, function(follows) { + +for (let i in follows) { +follows_template(follows[i]).appendTo("#js-follows_profile"); +followsList.unshift(follows[i].id); +}; +api.getArray('accounts/relationships', [{name:'id', data:followsList}], function(RelationshipsObj) { +for ( let i in RelationshipsObj ) { +if ( RelationshipsObj[i].following ) { +const button = $('#js-follows_profile .follow_button[mid="'+RelationshipsObj[i].id+'"]'); +button.removeClass("follow_button"); +button.addClass("following_button"); +button.text('Following'); +} +} +}); +links = getLinkFromXHRHeader(responce_headers); +replace_emoji(); +$("#js-follows_footer > i").css({"display":"none"}); +isSyncing = false; +}); +$(window).scroll(function () { +if ($(window).scrollTop() + window.innerHeight >= $(document).height()-700) { +if( !isSyncing ){ +isSyncing = true; +load_options.unshift( {name:"max_id",data:links['next'].match(/max_id=(.+)&?/)[1]} ); +api.get('accounts/'+mid+'/'+param, load_options, function(follows) { +let followsList = []; +if (follows.length) { +for(let i in follows) { +follows_template(follows[i]).appendTo("#js-follows_profile"); +followsList.unshift(follows[i].id); +}; +api.getArray('accounts/relationships', [{name:'id', data:followsList}], function(RelationshipsObj) { +for ( let i in RelationshipsObj ) { +if ( RelationshipsObj[i].following ) { +const button = $('#js-follows_profile .follow_button[mid="'+RelationshipsObj[i].id+'"]'); +button.removeClass("follow_button"); +button.addClass("following_button"); +button.text('Following'); +} +} +}); +links = getLinkFromXHRHeader(responce_headers); +replace_emoji(); +isSyncing = false; +} else { +isSyncing = true; +} +}); +load_options.shift(); +}; +}; +}); +}; +function setUserSearch(query) { +api.get('search', [{name:'q',data:query},{name:'resolve',data:'true'}], function(search) { +for(let i in search.accounts) { +follows_template(search.accounts[i]).appendTo("#js-follows_profile");; +} +$("#js-follows_footer > i").css({"display":"none"}); +replace_emoji(); +}); +}; +function setAccount(AccountObj) { +$("#js_header_image").attr('src', AccountObj.header); +$("#js_profile_image").attr('src', AccountObj.avatar); +$("#js_toots_count").text(AccountObj.statuses_count); +$("#js_following_count").text(AccountObj.following_count); +$("#js_followers_count").text(AccountObj.followers_count); +$("#js_profile_displayname").text(AccountObj.display_name); +$("#js_profile_username").text(AccountObj.acct); +$("#js_profile_bio").html(AccountObj.note); +if( AccountObj.id === current_id ) { +$(` +`).appendTo('.profile_button_box'); +$(` +

    FAVOURITES

    +Show +
    `).appendTo("#js-profile_nav_favourites"); +} else { +api.get('accounts/relationships', [{name:'id', data:String(AccountObj.id)}], function(RelationshipObj) { +if (RelationshipObj[0].followed_by) { +$('#main .profile_username .profile_followed_by').removeClass('invisible'); +} +if (RelationshipObj[0].blocking) { +$(``).appendTo('.profile_button_box'); +} else if (RelationshipObj[0].muting) { +$(``).appendTo('.profile_button_box'); +} else if (RelationshipObj[0].requested) { +$(` +`).appendTo('.profile_button_box'); +} else if(RelationshipObj[0].following){ +$(``).appendTo('.profile_button_box'); +} else { +$(``).appendTo('.profile_button_box'); +} +}); +}; +replace_emoji(); +} +function setRecentImages(mid) { +api.get("accounts/"+mid+"/statuses", [{name:'only_media',data:'true'},{name:'limit',data:'6'}], function(statuses) { +if ( statuses.length ) { +$('#js_profile_recent_images span').text(`${statuses[0].account.statuses_count} Photos and toots`); +$('#js_profile_recent_images a').attr('href', $("#media_link").attr('href')); +for ( i in statuses ) { +$(`
    + +
    `).appendTo('#js_profile_recent_images_box'); +}; +} +}); +}; +function badges_update(){ +let current_count = Number(localStorage.getItem("notification_count")); +if ( current_count ) { +$('#header .header_nav_list .notification_badge').removeClass('invisible'); +$('#header .header_nav_list .notification_badge').text( current_count ); +} +api.stream("user", function(userstream) { +if (userstream.event === "update" & location.pathname !== "/" ) { +$('#header .header_nav_list .home_badge').removeClass('invisible'); +} else if (userstream.event === "notification" & location.pathname !== "/notifications") { +current_count += 1; +localStorage.setItem("notification_count", current_count ); +$('#header .header_nav_list .notification_badge').text( current_count ); +if ( $('#header .header_nav_list .notification_badge').hasClass('invisible') ) { +$('#header .header_nav_list .notification_badge').removeClass('invisible') +} +} +}); +} +function setOverlayStatus(sid) { +if ( !window.getSelection().toString() ) { +$("#js-overlay_content .temporary_object").empty(); +$('#js-overlay_content_wrap').addClass('view'); +$('#js-overlay_content_wrap').addClass('black_05'); +api.get('statuses/'+sid+'/', function(status) { +$('
    ').appendTo("#js-overlay_content .temporary_object"); +status_template(status, 'main_status').appendTo('#js-overlay_content .toot_detail_wrap'); +replaceInternalLink(); +replace_emoji(); +api.get('statuses/'+sid+'/context', function(status) { +if (status.ancestors.length) { +status.ancestors.reverse(); +for ( let i in status.ancestors ) { +context_template(status.ancestors[i], 'ancestors_status').prependTo("#js-overlay_content .temporary_object .toot_detail_wrap"); +} +} +if (status.descendants.length) { +for ( let i in status.descendants) { +context_template(status.descendants[i], 'descendants_status').appendTo("#js-overlay_content .temporary_object .toot_detail_wrap"); +} +} +replaceInternalLink(); +replace_emoji(); +}); +}); +} +} +$(function() { +$(document).on('click','.toot_entry.ancestors_status, .toot_entry.descendants_status', function(e) { +$("#js-overlay_content .temporary_object").empty(); +}); +$(document).on('click','.toot_entry', function(e) { +setOverlayStatus($(this).attr('sid')); +}); +}) +function setOverlayMedia(sid,url) { +$("#js-overlay_content .temporary_object").empty(); +$('#js-overlay_content_wrap').addClass('view'); +$('#js-overlay_content_wrap').addClass('black_08'); +$('#js-overlay_content .temporary_object').addClass('visible'); +api.get("statuses/"+sid, function(status) { +if ( !status.reblog ) { +media_template(status, url).appendTo("#js-overlay_content .temporary_object"); +replaceInternalLink(); +replace_emoji(); +} else { +media_template(status.reblog, url).appendTo("#js-overlay_content .temporary_object"); +replaceInternalLink(); +replace_emoji(); +} +}); +} +$(function() { +$(document).on('click','.media_attachment[otype="image"]', function(e) { +e.stopPropagation(); +setOverlayMedia($(this).attr('sid'),$(this).attr('url')); +$('.media_detail .toot_entry .media_views').addClass('invisible'); +}); +}) +function setOverlayMediaWithoutStatus(url) { +$("#js-overlay_content .temporary_object").empty(); +$('#js-overlay_content_wrap').addClass('view'); +$('#js-overlay_content_wrap').addClass('black_05'); +media_template(null, url).appendTo("#js-overlay_content .temporary_object"); +} +$(function() { +$(document).on('click','img[mediaaccess="true"]', function(e) { +e.stopPropagation(); +setOverlayMediaWithoutStatus($(this).attr('src')); +}); +}) +$(function() { +$(document).on('click', '#creat_status', function(e) { +$('.overlay_status').removeClass('invisible'); +$("#js-overlay_content_wrap .temporary_object").empty(); +$('#js-overlay_content_wrap').addClass('view'); +$('#js-overlay_content_wrap').addClass('black_08'); +$('#overlay_status_form .status_textarea textarea').addClass('focus'); +$('.overlay_status .submit_status_label').addClass('active_submit_button'); +$('#overlay_status_form .status_textarea textarea').focus() +$('#overlay_status_form input[name="privacy_option"]').val([localStorage.getItem("setting_post_privacy")]); +$('#overlay_status_form .expand_privacy_menu_button > i').attr('class', "fa " + localStorage.getItem("setting_post_privacy")); +}); +$(document).on('change keyup','#overlay_status_form textarea, #overlay_status_form .status_spoiler', function(e) { +if ( +e.keyCode !== 224 & +e.keyCode !== 17& +e.keyCode !== undefined +) { +const textCount = $('#overlay_status_form textarea').val().length + $('#overlay_status_form .status_spoiler').val().length; +let textLen = ( 500 - textCount ); +if ( textLen <= -1 ) { +$('#overlay_status_form .character_count').addClass('red'); +$('#overlay_status_form').addClass('ready'); +} else if ( textLen === 500 ) { +$('#overlay_status_form').addClass('ready'); +} else { +$('#overlay_status_form .character_count').removeClass('red'); +$('#overlay_status_form').removeClass('ready'); +} +$(this).val(replaced_emoji_return($(this).val())); +$('#overlay_status_form .character_count').text(textLen); +} +}); +$(document).on('click','#overlay_status_form .status_CW', function(e) { +$('#overlay_status_form .status_spoiler').toggleClass('invisible'); +}); +$(document).on('click','#overlay_status_form .expand_privacy_menu_button', function(e) { +$('#overlay_status_form .expand_privacy_menu').removeClass('invisible'); +}); +$(document).on('click','#overlay_status_form .status_privacy.select_privacy', function(e) { +e.stopPropagation(); +$('#overlay_status_form .expand_privacy_menu_button > i').attr('class', $(this).attr('privacyicon')); +$('#overlay_status_form .expand_privacy_menu').addClass('invisible'); +}); +$(document).on('change','#overlay_status_media_atta', function(e) { +$('#overlay_status_form .media_attachments_preview_area').empty(); +$('#overlay_status_form .status_textarea .media_attachments_preview_area').removeClass('invisible'); +for ( let i = 0, f; f = e.target.files[i]; i++ ) { +let reader= new FileReader(); +reader.readAsDataURL(f); +reader.onloadend = (function() { +return function (e) { +const html = (`
    + +
    `); +$(html).appendTo('#overlay_status_form .media_attachments_preview_area'); +} +})(f); +} +}); +$(document).on('click','#overlay_status_form .status_NSFW', function(e) { +$('#overlay_status_form .media_attachments_preview_area').toggleClass('nsfw'); +}); +$(document).on('click','#overlay_status_form .submit_status_label', function(e) { +$('#overlay_status_form').addClass('ready'); +$('#overlay_status_form .status_textarea').addClass('disallow_select'); +$('#overlay_status_form .character_count').html(''); +const form = document.forms.overlay_status_form; +if ( !$('#overlay_status_media_atta')[0].files.length ) { +const params = { +status : form.status_textarea.value, +sensitive: form.status_nsfw.checked, +spoiler_text : form.status_spoiler.value, +visibility : form.privacy_option.value +} +api.post("statuses", params, function (data) { +$('#overlay_status_form .media_attachments_preview_area').empty(); +$('#overlay_status_form .status_spoiler').addClass('invisible'); +$('#overlay_status_form .status_textarea .media_attachments_preview_area').addClass('invisible'); +form.reset(); +$('#overlay_status_form').removeClass('ready'); +$('#overlay_status_form .status_textarea').removeClass('disallow_select'); +$('#overlay_status_form .character_count').html('500'); +$('.overlay_status .submit_status_label').removeClass('active_submit_button'); +$('.overlay_status').addClass('invisible'); +$('#js-overlay_content_wrap').removeClass('view'); +$('#js-overlay_content_wrap').removeClass('black_05'); +putMessage('Your Toot was posted!'); +}); +} else { +const dummy_form= $('
    ').append($('#overlay_status_media_atta')), +files = dummy_form[0][0].files, +filesLen= files.length -1; +let media_array = []; +$("#overlay_status_form .status_bottom").append($('')); +for (let i=0; i i').attr('class', $(this).attr('privacyicon')); +$('#header_status_form .expand_privacy_menu').addClass('invisible'); +}); +$(document).on('click','#header_status_form', function(e) { +if(!$('#header_status_form .status_textarea textarea').hasClass('focus')) { +$('#header_status_form input[name="privacy_option"]').val([localStorage.getItem("setting_post_privacy")]); +$('#header_status_form .expand_privacy_menu_button > i').attr('class', "fa " + localStorage.getItem("setting_post_privacy")); +$('#header_status_form .status_textarea textarea').addClass('focus'); +$('#header_status_form .status_bottom').removeClass('invisible'); +$('#header_status_form .submit_status_label').addClass('active_submit_button'); +} +}); +$(document).on('change','#header_status_media_atta', function(e) { +$('#header_status_form .media_attachments_preview_area').empty(); +$('#header_status_form .status_textarea .media_attachments_preview_area').removeClass('invisible'); +for ( let i = 0, f; f = e.target.files[i]; i++ ) { +let reader= new FileReader(); +reader.readAsDataURL(f); +reader.onloadend = (function() { +return function (e) { +const html = (`
    + +
    `); +$(html).appendTo('#header_status_form .media_attachments_preview_area'); +} +})(f); +} +}); +$(document).on('click','#header_status_form .status_NSFW', function(e) { +$('#header_status_form .media_attachments_preview_area').toggleClass('nsfw'); +}); +$(document).on('click','#header_status_form .submit_status_label', function(e) { +$('#header_status_form').addClass('ready'); +$('#header_status_form .status_textarea').addClass('disallow_select'); +$('#header_status_form .character_count').html(''); +const form = document.forms.header_status_form; +if ( !$('#header_status_media_atta')[0].files.length ) { +const params = { +status : form.status_textarea.value, +sensitive: form.status_nsfw.checked, +spoiler_text : form.status_spoiler.value, +visibility : form.privacy_option.value +} +api.post("statuses", params, function (data) { +$('#header_status_form .media_attachments_preview_area').empty(); +$('#header_status_form .status_spoiler').addClass('invisible'); +$('#header_status_form .status_textarea .media_attachments_preview_area').addClass('invisible'); +form.reset(); +$('#header_status_form').removeClass('ready'); +$('#header_status_form .status_textarea').removeClass('disallow_select'); +$('#header_status_form .character_count').html('500'); +}); +} else { +const dummy_form = $('
    ').append($('#header_status_media_atta')), +files= dummy_form[0][0].files, +filesLen = files.length -1; +let media_array = []; +$("#header_status_form .status_bottom").append($('')); +for (let i=0; i i').attr('class', "fa " + localStorage.getItem("setting_post_privacy")); +} +}); +$(document).on('change keyup','#reply_status_form textarea, #reply_status_form .status_spoiler', function(e) { +if ( +e.keyCode !== 224 & +e.keyCode !== 17& +e.keyCode !== undefined +) { +const textCount = $('#reply_status_form textarea').val().length + $('#reply_status_form .status_spoiler').val().length; +let textLen = ( 500 - textCount ); +if ( textLen <= -1 ) { +$('#reply_status_form .character_count').addClass('red'); +$('#reply_status_form').addClass('ready'); +} else if ( textLen === 500 ) { +$('#reply_status_form').addClass('ready'); +} else { +$('#reply_status_form .character_count').removeClass('red'); +$('#reply_status_form').removeClass('ready'); +} +$(this).val(replaced_emoji_return($(this).val())); +$('#reply_status_form .character_count').text(textLen); +} +}); +$(document).on('click','#reply_status_form .status_CW', function(e) { +$('#reply_status_form .status_spoiler').toggleClass('invisible'); +}); +$(document).on('click','#reply_status_form .expand_privacy_menu_button', function(e) { +$('#reply_status_form .expand_privacy_menu').removeClass('invisible'); +}); +$(document).on('click','#reply_status_form .status_privacy.select_privacy', function(e) { +e.stopPropagation(); +$('#reply_status_form .expand_privacy_menu_button > i').attr('class', $(this).attr('privacyicon')); +$('#reply_status_form .expand_privacy_menu').addClass('invisible'); +}); +$(document).on('change','#reply_status_media_atta', function(e) { +$('#reply_status_form .media_attachments_preview_area').empty(); +$('#reply_status_form .status_textarea .media_attachments_preview_area').removeClass('invisible'); +for ( let i = 0, f; f = e.target.files[i]; i++ ) { +let reader= new FileReader(); +reader.readAsDataURL(f); +reader.onloadend = (function() { +return function (e) { +const html = (`
    + +
    `); +$(html).appendTo('#reply_status_form .media_attachments_preview_area'); +} +})(f); +} +}); +$(document).on('click','#reply_status_form .status_NSFW', function(e) { +$('#reply_status_form .media_attachments_preview_area').toggleClass('nsfw'); +}); +$(document).on('click','#reply_status_form .submit_status_label', function(e) { +$('#reply_status_form').addClass('ready'); +$('#reply_status_form .status_textarea').addClass('disallow_select'); +$('#reply_status_form .character_count').html(''); +let form = document.forms.reply_status_form; +if ( !$('#reply_status_media_atta')[0].files.length ) { +const params = { +status : form.status_textarea.value, +sensitive: form.status_nsfw.checked, +spoiler_text : form.status_spoiler.value, +visibility : form.privacy_option.value, +in_reply_to_id : $('#reply_status_form').attr('sid') +} +api.post("statuses", params, function (data) { +$('#reply_status_form .media_attachments_preview_area').empty(); +$('#reply_status_form .status_spoiler').addClass('invisible'); +$('#reply_status_form .status_textarea .media_attachments_preview_area').addClass('invisible'); +form.reset(); +$('#reply_status_form').removeClass('ready'); +$('#reply_status_form .status_textarea').removeClass('disallow_select'); +$('#reply_status_form .character_count').html('500'); +$('.reply_status .submit_status_label').removeClass('active_submit_button'); +context_template(data, 'descendants_status').appendTo("#js-overlay_content .temporary_object .toot_detail_wrap"); +replace_emoji(); +putMessage('Your Toot was posted!'); +}); +} else { +const dummy_form = $('
    ').append($('#reply_status_media_atta')), +files= dummy_form[0][0].files, +filesLen = files.length -1; +let media_array = []; +$('#reply_status_form .status_bottom').append($('')); +for (let i=0; i i').attr('class', "fa " + localStorage.getItem("setting_post_privacy")); +$('#single_reply_status_form').attr('tid',sid); +$('.single_reply_status .single_reply_status_header span').text("Reply to "+display_name); +$('#single_reply_status_form textarea').val(acct+" "); +api.get('statuses/'+sid+'/', function(status) { +timeline_template(status).appendTo(".single_reply_status .status_preview"); +replace_emoji(); +}); +return false; +}); +$(document).on('change keyup','#single_reply_status_form textarea, #single_reply_status_form .status_spoiler', function(e) { +if ( +e.keyCode !== 224 & +e.keyCode !== 17& +e.keyCode !== undefined +) { +const textCount = $('#single_reply_status_form textarea').val().length + $('#single_reply_status_form .status_spoiler').val().length; +let textLen = ( 500 - textCount ); +if ( textLen <= -1 ) { +$('#single_reply_status_form .character_count').addClass('red'); +$('#single_reply_status_form').addClass('ready'); +} else if ( textLen === 500 ) { +$('#single_reply_status_form').addClass('ready'); +} else { +$('#single_reply_status_form .character_count').removeClass('red'); +$('#single_reply_status_form').removeClass('ready'); +} +$(this).val(replaced_emoji_return($(this).val())); +$('#single_reply_status_form .character_count').text(textLen); +} +}); +$(document).on('click','#single_reply_status_form .status_CW', function(e) { +$('#single_reply_status_form .status_spoiler').toggleClass('invisible'); +}); +$(document).on('click','#single_reply_status_form .expand_privacy_menu_button', function(e) { +$('#single_reply_status_form .expand_privacy_menu').removeClass('invisible'); +}); +$(document).on('click','#single_reply_status_form .status_privacy.select_privacy', function(e) { +e.stopPropagation(); +$('#single_reply_status_form .expand_privacy_menu_button > i').attr('class', $(this).attr('privacyicon')); +$('#single_reply_status_form .expand_privacy_menu').addClass('invisible'); +}); +$(document).on('change','#single_reply_status_media_atta', function(e) { +$('#single_reply_status_form .media_attachments_preview_area').empty(); +$('#single_reply_status_form .status_textarea .media_attachments_preview_area').removeClass('invisible'); +for ( let i = 0, f; f = e.target.files[i]; i++ ) { +let reader= new FileReader(); +reader.readAsDataURL(f); +reader.onloadend = (function() { +return function (e) { +const html = (`
    + +
    `); +$(html).appendTo('#single_reply_status_form .media_attachments_preview_area'); +} +})(f); +} +}); +$(document).on('click','#single_reply_status_form .status_NSFW', function(e) { +$('#single_reply_status_form .media_attachments_preview_area').toggleClass('nsfw'); +}); +$(document).on('click','#single_reply_status_form .submit_status_label', function(e) { +$('#single_reply_status_form').addClass('ready'); +$('#single_reply_status_form .status_textarea').addClass('disallow_select'); +$('#single_reply_status_form .character_count').html(''); +let form = document.forms.single_reply_status_form; +if ( !$('#single_reply_status_media_atta')[0].files.length ) { +const params = { +status : form.status_textarea.value, +sensitive: form.status_nsfw.checked, +spoiler_text : form.status_spoiler.value, +visibility : form.privacy_option.value, +in_reply_to_id : $('#single_reply_status_form').attr('tid') +} +api.post("statuses", params, function (data) { +$('#single_reply_status_form .media_attachments_preview_area').empty(); +$('#single_reply_status_form .status_spoiler').addClass('invisible'); +$('#single_reply_status_form .status_textarea .media_attachments_preview_area').addClass('invisible'); +form.reset(); +$('#single_reply_status_form').removeClass('ready'); +$('#single_reply_status_form .status_textarea').removeClass('disallow_select'); +$('#single_reply_status_form .character_count').html('500'); +$('.single_reply_status .submit_status_label').removeClass('active_submit_button'); +$('.single_reply_status').addClass('invisible'); +$('#js-overlay_content_wrap').removeClass('view'); +$('#js-overlay_content_wrap').removeClass('black_05'); +$("#js-overlay_content_wrap .single_reply_status .status_preview").empty(); +putMessage('Your Reply was posted!'); +}); +} else { +const dummy_form= $('
    ').append($('#single_reply_status_media_atta')), +files = dummy_form[0][0].files, +filesLen= files.length -1; +let media_array = []; +$("#single_reply_status_form .status_bottom").append($('')); +for (let i=0; i *, .parmanent_object > *', function(e) { +e.stopPropagation(); +}); +$(document).on('click','#js-overlay_content_wrap', function(e) { +$(this).removeClass('view'); +$("#js-overlay_content_wrap .temporary_object").empty(); +$("#js-overlay_content_wrap .single_reply_status .status_preview").empty(); +$('#js-overlay_content_wrap .overlay_status').addClass('invisible'); +$('#js-overlay_content_wrap .single_reply_status').addClass('invisible'); +$('#js-overlay_content_wrap .overlay_copy_link').addClass('invisible'); +$('#js-overlay_content .temporary_object, #js-overlay_content .parmanent_object').removeClass('visible'); +$('#js-overlay_content_wrap .overlay_status.submit_status_label').removeClass('active_submit_button'); +$('#js-overlay_content_wrap .single_reply_status .submit_status_label').removeClass('active_submit_button'); +$('#js-overlay_content_wrap #reply_status_form .submit_status_label').removeClass('active_submit_button'); +$('#js-overlay_content_wrap #header_status_form.submit_status_label').removeClass('active_submit_button'); +$('#js-overlay_content_wrap').removeClass('black_05'); +$('#js-overlay_content_wrap').removeClass('black_08'); +if ( current_file === "/user" ) { +history.pushState(null, null, "/"+location.pathname.split("/")[1]+location.search); +} else { +history.pushState(null, null, current_file); +} +}); +}) +$(function () { +$(document).on('click','.side_widget.stream_options .form_title button', function(e) { +$(this).parent().next('.pulldown_form').toggleClass('view'); +if ( $(this).text() === "SHOW" ) { +$(this).text("HIDE"); +} else { +$(this).text("SHOW"); +} +const html_post_steraming = $(``) +const html_post_privacy = $(``) +const html_local_instance = $(``) +const html_search_filter = $(``) +html_post_steraming.val(localStorage.getItem("setting_post_stream")); +html_post_privacy.val(localStorage.getItem("setting_post_privacy")); +html_local_instance.val(localStorage.getItem("setting_local_instance")); +html_search_filter.val(localStorage.getItem("setting_search_filter")); +$('.post_steraming_wrap').html(html_post_steraming) +$('.post_privacy_wrap').html(html_post_privacy); +$('.local_instance_wrap').html(html_local_instance); +$('.search_filter_wrap').html(html_search_filter); +return false; +}); +$(document).on('change',".post_steraming_wrap select[name='post_steraming']", function(e) { +localStorage.setItem("setting_post_stream", $(this).val() ); +putMessage("Changed setting to "+$(this).val() ); +}); +$(document).on('change', ".post_privacy_wrap select[name='post_privacy']", function(e) { +localStorage.setItem("setting_post_privacy", $(this).val() ); +putMessage("Changed setting to "+$(this).val() ); +}); +$(document).on('change',".search_filter_wrap select[name='search_filter']", function(e) { +localStorage.setItem("setting_search_filter", $(this).val() ); +putMessage("Changed setting to "+$(this).val() ); +}); +$(document).on('focus',".local_instance_wrap input[name='local_instance']", function(e) { +$(this).attr("placeholder","https://"+current_instance); +}); +$(document).on('change',".local_instance_wrap input[name='local_instance']", function(e) { +if ( $(this).val() ) { +localStorage.setItem("setting_local_instance", $(this).val() ); +} else { +localStorage.setItem("setting_local_instance", "default" ); +} +putMessage("Changed setting to "+$(this).val() ); +}); +}) +$(function() { +shortcut.add("n",function() { +$("#creat_status").click(); +},{ + "disable_in_input":true, +}); +shortcut.add("/",function() { +$("#search_form").focus(); +},{ +"disable_in_input":true, +'keycode':191 +}); +shortcut.add("Meta+Enter",function() { +$(".active_submit_button").click(); +}); +shortcut.add("Ctrl+Enter",function() { +$(".active_submit_button").click(); +}); +shortcut.add(".",function() { +$("#js-stream_update").click(); +},{ + "disable_in_input":true, +}); +shortcut.add("Shift+h",function() { +location.href="/home"; +},{ +"disable_in_input":true, +}); +shortcut.add("Shift+l",function() { +location.href="/local"; +},{ +"disable_in_input":true, +}); +shortcut.add("Shift+f",function() { +location.href="/federated"; +},{ +"disable_in_input":true, +}); +shortcut.add("Shift+n",function() { +location.href="/notifications"; +},{ +"disable_in_input":true, +}); +shortcut.add("Shift+p",function() { +location.href=current_url; +},{ +"disable_in_input":true, +}); +shortcut.add("Shift+v",function() { +location.href=current_favourites_link; +},{ +"disable_in_input":true, +}); +shortcut.add("esc",function() { +$("#js-overlay_content_wrap").click(); +}); +}); \ No newline at end of file diff --git a/public_html/assets/js/jquery-cookie/MIT-LICENSE.txt b/assets/js/jquery-cookie/MIT-LICENSE.txt similarity index 100% rename from public_html/assets/js/jquery-cookie/MIT-LICENSE.txt rename to assets/js/jquery-cookie/MIT-LICENSE.txt diff --git a/assets/js/jquery-cookie/src/jquery.cookie.js b/assets/js/jquery-cookie/src/jquery.cookie.js new file mode 100644 index 0000000..c8f6260 --- /dev/null +++ b/assets/js/jquery-cookie/src/jquery.cookie.js @@ -0,0 +1,78 @@ +/*! + * jQuery Cookie Plugin v1.4.1 + * https://github.com/carhartl/jquery-cookie + * + * Copyright 2006, 2014 Klaus Hartl + * Released under the MIT license + */ +(function (factory) { +if (typeof define === 'function' && define.amd) { +define(['jquery'], factory); +} else if (typeof exports === 'object') { +module.exports = factory(require('jquery')); +} else { +factory(jQuery); +} +}(function ($) { +var pluses = /\+/g; +function encode(s) { +return config.raw ? s : encodeURIComponent(s); +} +function decode(s) { +return config.raw ? s : decodeURIComponent(s); +} +function stringifyCookieValue(value) { +return encode(config.json ? JSON.stringify(value) : String(value)); +} +function parseCookieValue(s) { +if (s.indexOf('"') === 0) { +s = s.slice(1, -1).replace(/\\"/g, '"').replace(/\\\\/g, '\\'); +} +try { +s = decodeURIComponent(s.replace(pluses, ' ')); +return config.json ? JSON.parse(s) : s; +} catch(e) {} +} +function read(s, converter) { +var value = config.raw ? s : parseCookieValue(s); +return $.isFunction(converter) ? converter(value) : value; +} +var config = $.cookie = function (key, value, options) { +if (arguments.length > 1 && !$.isFunction(value)) { +options = $.extend({}, config.defaults, options); +if (typeof options.expires === 'number') { +var days = options.expires, t = options.expires = new Date(); +t.setMilliseconds(t.getMilliseconds() + days * 864e+5); +} +return (document.cookie = [ +encode(key), '=', stringifyCookieValue(value), +options.expires ? '; expires=' + options.expires.toUTCString() : '', +options.path ? '; path=' + options.path : '', +options.domain ? '; domain=' + options.domain : '', +options.secure ? '; secure' : '' +].join('')); +} +var result = key ? undefined : {}, +cookies = document.cookie ? document.cookie.split('; ') : [], +i = 0, +l = cookies.length; +for (; i < l; i++) { +var parts = cookies[i].split('='), +name = decode(parts.shift()), +cookie = parts.join('='); +if (key === name) { +result = read(cookie, value); +break; +} +if (!key && (cookie = read(cookie)) !== undefined) { +result[name] = cookie; +} +} +return result; +}; +config.defaults = {}; +$.removeCookie = function (key, options) { +$.cookie(key, '', $.extend({}, options, { expires: -1 })); +return !$.cookie(key); +}; +})); \ No newline at end of file diff --git a/public_html/assets/js/mastodon.js/LICENSE b/assets/js/mastodon.js/LICENSE similarity index 100% rename from public_html/assets/js/mastodon.js/LICENSE rename to assets/js/mastodon.js/LICENSE diff --git a/assets/js/mastodon.js/mastodon.js b/assets/js/mastodon.js/mastodon.js new file mode 100644 index 0000000..e609d8e --- /dev/null +++ b/assets/js/mastodon.js/mastodon.js @@ -0,0 +1,207 @@ +// mastodon javascript lib +// by @kirschn@pleasehug.me 2017 +// no fucking copyright +// do whatever you want with it +// but please don't hurt it (and keep this header) +var MastodonAPI = function(config) { +var apiBase = config.instance + "/api/v1/"; +return { +setConfig: function (key, value) { +config[key] = value; +}, +getConfig: function(key) { +return config[key]; +}, +get: function (endpoint) { +var queryData, callback, +queryStringAppend = "?"; +if (typeof arguments[1] === "function") { +queryData = {}; +callback = arguments[1]; +} else { +queryData = arguments[1]; +callback = arguments[2]; +} +for (var i in queryData) { +if (queryData.hasOwnProperty(i)) { +if (typeof queryData[i] === "string") { +queryStringAppend += queryData[i] + "&"; +} else if (typeof queryData[i] === "object") { +queryStringAppend += queryData[i].name + "="+ queryData[i].data + "&"; +} +} +} +$.ajax({ +url: apiBase + endpoint + queryStringAppend, +type: "GET", +headers: {"Authorization": "Bearer " + config.api_user_token}, +success: function(data, textStatus, xhr) { +console.log("Successful GET API request to " +apiBase+endpoint); +responce_headers = xhr.getAllResponseHeaders(); +callback(data,textStatus); +}, +error: function(xhr, textStatus, errorThrown) { +putMessage(`[${xhr.status}] ${xhr.responseJSON['error']}`); +if ( xhr.status === 401 ) { +location.href = "/logout" +} +} +}); +}, +getArray: function (endpoint) { +var queryData, callback, +queryStringAppend = "?"; +if (typeof arguments[1] === "function") { +queryData = {}; +callback = arguments[1]; +} else { +queryData = arguments[1]; +callback = arguments[2]; +} +for (var i in queryData) { +if (queryData.hasOwnProperty(i)) { +if (typeof queryData[i] === "string") { +queryStringAppend += queryData[i] + "&"; +} else if (typeof queryData[i] === "object") { +for ( var j in queryData[i].data ){ +queryStringAppend += queryData[i].name + "[]="+ queryData[i].data[j] + "&"; +} +} +} +} +$.ajax({ +url: apiBase + endpoint + queryStringAppend, +type: "GET", +headers: {"Authorization": "Bearer " + config.api_user_token}, +success: function(data, textStatus, xhr) { +console.log("Successful GET API request to " +apiBase+endpoint); +responce_headers = xhr.getAllResponseHeaders(); +callback(data,textStatus); +}, +error: function(xhr, textStatus, errorThrown) { +putMessage(`[${xhr.status}] ${xhr.responseJSON['error']}`); +if ( xhr.status === 401 ) { +location.href = "/logout" +} +} +}); +}, +getOther: function (domainAndEndpoint) { +var queryData, callback, +queryStringAppend = "?"; +if (typeof arguments[1] === "function") { +queryData = {}; +callback = arguments[1]; +} else { +queryData = arguments[1]; +callback = arguments[2]; +} +for (var i in queryData) { +if (queryData.hasOwnProperty(i)) { +if (typeof queryData[i] === "string") { +queryStringAppend += queryData[i] + "&"; +} else if (typeof queryData[i] === "object") { +queryStringAppend += queryData[i].name + "="+ queryData[i].data + "&"; +} +} +} +$.ajax({ +url: domainAndEndpoint + queryStringAppend, +type: "GET", +success: function(data, textStatus, xhr) { +console.log("Successful GET API request to " +domainAndEndpoint); +responce_headers = xhr.getAllResponseHeaders(); +callback(data,textStatus); +}, +error: function(xhr, textStatus, errorThrown) { +putMessage(`[${xhr.status}] ${xhr.responseJSON['error']}`); +if ( xhr.status === 401 ) { +location.href = "/logout" +} +} +}); +}, +post: function (endpoint) { +var postData, callback; +if (typeof arguments[1] === "function") { +postData = {}; +callback = arguments[1]; +} else { +postData = arguments[1]; +callback = arguments[2]; +} +$.ajax({ +url: apiBase + endpoint, +type: "POST", +data: postData, +headers: {"Authorization": "Bearer " + config.api_user_token}, +success: function(data, textStatus) { +console.log("Successful POST API request to " +apiBase+endpoint); +callback(data,textStatus) +}, +error: function(xhr, textStatus, errorThrown) { +putMessage(`[${xhr.status}] ${xhr.responseJSON['error']}`); +if ( xhr.status === 401 ) { +location.href = "/logout" +} +} +}); +}, +postMedia: function (endpoint) { +var postData, callback; +if (typeof arguments[1] === "function") { +postData = {}; +callback = arguments[1]; +} else { +postData = arguments[1]; +callback = arguments[2]; +} +$.ajax({ +url: apiBase + endpoint, +type: "POST", +data: postData, +contentType: false, +processData: false, +headers: {"Authorization": "Bearer " + config.api_user_token}, +success: function(data, textStatus) { +console.log("Successful POST API request to " +apiBase+endpoint); +callback(data,textStatus) +}, +error: function(xhr, textStatus, errorThrown) { +putMessage(`[${xhr.status}] ${xhr.responseJSON['error']}`); +if ( xhr.status === 401 ) { +location.href = "/logout" +} +} +}); +}, +delete: function (endpoint, callback) { +$.ajax({ +url: apiBase + endpoint, +type: "DELETE", +headers: {"Authorization": "Bearer " + config.api_user_token}, +success: function(data, textStatus) { +console.log("Successful DELETE API request to " +apiBase+endpoint); +callback(data,textStatus) +}, +error: function(xhr, textStatus, errorThrown) { +putMessage(`[${xhr.status}] ${xhr.responseJSON['error']}`); +if ( xhr.status === 401 ) { +location.href = "/logout" +} +} +}); +}, +stream: function (streamType, onData) { +var es = new WebSocket("wss://" + apiBase.substr(8) ++"streaming?access_token=" + config.api_user_token + "&stream=" + streamType); +var listener = function (event) { +console.log("Got Data from Stream " + streamType); +event = JSON.parse(event.data); +event.payload = JSON.parse(event.payload); +onData(event); +}; +es.onmessage = listener; +} +}; +}; \ No newline at end of file diff --git a/assets/js/replace_emoji.js b/assets/js/replace_emoji.js new file mode 100644 index 0000000..ca35b51 --- /dev/null +++ b/assets/js/replace_emoji.js @@ -0,0 +1,3473 @@ +const emoji_dict = {":hash:": "#⃣", +":zero:": "0⃣", +":one:": "1⃣", +":two:": "2⃣", +":three:": "3⃣", +":four:": "4⃣", +":five:": "5⃣", +":six:": "6⃣", +":seven:": "7⃣", +":eight:": "8⃣", +":nine:": "9⃣", +":copyright:": "©", +":registered:": "®", +":bangbang:": "‼", +":interrobang:": "⁉", +":tm:": "™", +":information_source:": "ℹ", +":left_right_arrow:": "↔", +":arrow_up_down:": "↕", +":arrow_upper_left:": "↖", +":third_place:": "🥉", +":third_place_medal:": "🥉", +":arrow_upper_right:": "↗", +":arrow_lower_right:": "↘", +":arrow_lower_left:": "↙", +":second_place:": "🥈", +":second_place_medal:": "🥈", +":leftwards_arrow_with_hook:": "↩", +":arrow_right_hook:": "↪", +":watch:": "⌚", +":hourglass:": "⌛", +":fast_forward:": "⏩", +":rewind:": "⏪", +":arrow_double_up:": "⏫", +":arrow_double_down:": "⏬", +":alarm_clock:": "⏰", +":hourglass_flowing_sand:": "⏳", +":m:": "Ⓜ", +":black_small_square:": "▪", +":white_small_square:": "▫", +":arrow_forward:": "▶", +":arrow_backward:": "◀", +":white_medium_square:": "◻", +":black_medium_square:": "◼", +":white_medium_small_square:": "◽", +":black_medium_small_square:": "◾", +":sunny:": "☀", +":cloud:": "☁", +":telephone:": "☎", +":ballot_box_with_check:": "☑", +":umbrella:": "☔", +":coffee:": "☕", +":point_up:": "☝", +":relaxed:": "☺", +":aries:": "♈", +":first_place:": "🥇", +":first_place_medal:": "🥇", +":taurus:": "♉", +":fencer:": "🤺", +":fencing:": "🤺", +":gemini:": "♊", +":cancer:": "♋", +":goal:": "🥅", +":goal_net:": "🥅", +":leo:": "♌", +":asterisk_symbol:": "*", +":virgo:": "♍", +":handball:": "🤾", +":libra:": "♎", +":regional_indicator_z:": "🇿", +":water_polo:": "🤽", +":scorpius:": "♏", +":sagittarius:": "♐", +":martial_arts_uniform:": "🥋", +":karate_uniform:": "🥋", +":capricorn:": "♑", +":boxing_glove:": "🥊", +":boxing_gloves:": "🥊", +":aquarius:": "♒", +":wrestlers:": "🤼", +":wrestling:": "🤼", +":pisces:": "♓", +":spades:": "♠", +":clubs:": "♣", +":hearts:": "♥", +":diamonds:": "♦", +":hotsprings:": "♨", +":recycle:": "♻", +":juggling:": "🤹", +":juggler:": "🤹", +":wheelchair:": "♿", +":anchor:": "⚓", +":warning:": "⚠", +":zap:": "⚡", +":white_circle:": "⚪", +":black_circle:": "⚫", +":soccer:": "⚽", +":baseball:": "⚾", +":snowman:": "⛄", +":partly_sunny:": "⛅", +":ophiuchus:": "⛎", +":cartwheel:": "🤸", +":person_doing_cartwheel:": "🤸", +":no_entry:": "⛔", +":church:": "⛪", +":fountain:": "⛲", +":canoe:": "🛶", +":kayak:": "🛶", +":golf:": "⛳", +":sailboat:": "⛵", +":tent:": "⛺", +":fuelpump:": "⛽", +":scissors:": "✂", +":white_check_mark:": "✅", +":airplane:": "✈", +":envelope:": "✉", +":fist:": "✊", +":raised_hand:": "✋", +":v:": "✌", +":pencil2:": "✏", +":black_nib:": "✒", +":heavy_check_mark:": "✔", +":heavy_multiplication_x:": "✖", +":sparkles:": "✨", +":eight_spoked_asterisk:": "✳", +":eight_pointed_black_star:": "✴", +":snowflake:": "❄", +":sparkle:": "❇", +":x:": "❌", +":negative_squared_cross_mark:": "❎", +":question:": "❓", +":grey_question:": "❔", +":motor_scooter:": "🛵", +":motorbike:": "🛵", +":grey_exclamation:": "❕", +":exclamation:": "❗", +":heart:": "❤", +":heavy_plus_sign:": "➕", +":heavy_minus_sign:": "➖", +":heavy_division_sign:": "➗", +":arrow_right:": "➡", +":curly_loop:": "➰", +":arrow_heading_up:": "⤴", +":arrow_heading_down:": "⤵", +":arrow_left:": "⬅", +":arrow_up:": "⬆", +":scooter:": "🛴", +":arrow_down:": "⬇", +":black_large_square:": "⬛", +":white_large_square:": "⬜", +":star:": "⭐", +":o:": "⭕", +":wavy_dash:": "〰", +":part_alternation_mark:": "〽", +":congratulations:": "㊗", +":shopping_cart:": "🛒", +":shopping_trolley:": "🛒", +":secret:": "㊙", +":mahjong:": "🀄", +":black_joker:": "🃏", +":a:": "🅰", +":b:": "🅱", +":o2:": "🅾", +":parking:": "🅿", +":octagonal_sign:": "🛑", +":stop_sign:": "🛑", +":ab:": "🆎", +":cl:": "🆑", +":regional_indicator_y:": "🇾", +":cool:": "🆒", +":free:": "🆓", +":id:": "🆔", +":new:": "🆕", +":ng:": "🆖", +":ok:": "🆗", +":sos:": "🆘", +":spoon:": "🥄", +":up:": "🆙", +":vs:": "🆚", +":flag_cn:": "🇨🇳", +":cn:": "🇨🇳", +":flag_de:": "🇩🇪", +":de:": "🇩🇪", +":flag_es:": "🇪🇸", +":es:": "🇪🇸", +":flag_fr:": "🇫🇷", +":fr:": "🇫🇷", +":flag_gb:": "🇬🇧", +":gb:": "🇬🇧", +":champagne_glass:": "🥂", +":clinking_glass:": "🥂", +":tumbler_glass:": "🥃", +":whisky:": "🥃", +":flag_it:": "🇮🇹", +":it:": "🇮🇹", +":flag_jp:": "🇯🇵", +":jp:": "🇯🇵", +":flag_kr:": "🇰🇷", +":kr:": "🇰🇷", +":flag_us:": "🇺🇸", +":us:": "🇺🇸", +":flag_ru:": "🇷🇺", +":ru:": "🇷🇺", +":koko:": "🈁", +":sa:": "🈂", +":u7121:": "🈚", +":u6307:": "🈯", +":stuffed_flatbread:": "🥙", +":stuffed_pita:": "🥙", +":u7981:": "🈲", +":u7a7a:": "🈳", +":u5408:": "🈴", +":u6e80:": "🈵", +":u6709:": "🈶", +":shallow_pan_of_food:": "🥘", +":paella:": "🥘", +":u6708:": "🈷", +":u7533:": "🈸", +":u5272:": "🈹", +":salad:": "🥗", +":green_salad:": "🥗", +":u55b6:": "🈺", +":ideograph_advantage:": "🉐", +":accept:": "🉑", +":cyclone:": "🌀", +":french_bread:": "🥖", +":baguette_bread:": "🥖", +":foggy:": "🌁", +":closed_umbrella:": "🌂", +":night_with_stars:": "🌃", +":sunrise_over_mountains:": "🌄", +":sunrise:": "🌅", +":city_dusk:": "🌆", +":carrot:": "🥕", +":city_sunset:": "🌇", +":city_sunrise:": "🌇", +":rainbow:": "🌈", +":potato:": "🥔", +":bridge_at_night:": "🌉", +":ocean:": "🌊", +":volcano:": "🌋", +":milky_way:": "🌌", +":earth_asia:": "🌏", +":new_moon:": "🌑", +":bacon:": "🥓", +":first_quarter_moon:": "🌓", +":waxing_gibbous_moon:": "🌔", +":full_moon:": "🌕", +":crescent_moon:": "🌙", +":first_quarter_moon_with_face:": "🌛", +":star2:": "🌟", +":cucumber:": "🥒", +":stars:": "🌠", +":chestnut:": "🌰", +":avocado:": "🥑", +":seedling:": "🌱", +":palm_tree:": "🌴", +":cactus:": "🌵", +":tulip:": "🌷", +":cherry_blossom:": "🌸", +":rose:": "🌹", +":hibiscus:": "🌺", +":sunflower:": "🌻", +":blossom:": "🌼", +":corn:": "🌽", +":croissant:": "🥐", +":ear_of_rice:": "🌾", +":herb:": "🌿", +":four_leaf_clover:": "🍀", +":maple_leaf:": "🍁", +":fallen_leaf:": "🍂", +":leaves:": "🍃", +":mushroom:": "🍄", +":tomato:": "🍅", +":eggplant:": "🍆", +":grapes:": "🍇", +":melon:": "🍈", +":watermelon:": "🍉", +":tangerine:": "🍊", +":wilted_rose:": "🥀", +":wilted_flower:": "🥀", +":banana:": "🍌", +":pineapple:": "🍍", +":apple:": "🍎", +":green_apple:": "🍏", +":peach:": "🍑", +":cherries:": "🍒", +":strawberry:": "🍓", +":rhino:": "🦏", +":rhinoceros:": "🦏", +":hamburger:": "🍔", +":pizza:": "🍕", +":meat_on_bone:": "🍖", +":lizard:": "🦎", +":poultry_leg:": "🍗", +":rice_cracker:": "🍘", +":rice_ball:": "🍙", +":gorilla:": "🦍", +":rice:": "🍚", +":curry:": "🍛", +":deer:": "🦌", +":ramen:": "🍜", +":spaghetti:": "🍝", +":bread:": "🍞", +":fries:": "🍟", +":butterfly:": "🦋", +":sweet_potato:": "🍠", +":dango:": "🍡", +":fox:": "🦊", +":fox_face:": "🦊", +":oden:": "🍢", +":sushi:": "🍣", +":owl:": "🦉", +":fried_shrimp:": "🍤", +":fish_cake:": "🍥", +":shark:": "🦈", +":icecream:": "🍦", +":bat:": "🦇", +":shaved_ice:": "🍧", +":regional_indicator_x:": "🇽", +":ice_cream:": "🍨", +":duck:": "🦆", +":doughnut:": "🍩", +":eagle:": "🦅", +":cookie:": "🍪", +":black_heart:": "🖤", +":chocolate_bar:": "🍫", +":candy:": "🍬", +":lollipop:": "🍭", +":custard:": "🍮", +":pudding:": "🍮", +":flan:": "🍮", +":honey_pot:": "🍯", +":fingers_crossed:": "🤞", +":hand_with_index_and_middle_finger_crossed:": "🤞", +":cake:": "🍰", +":bento:": "🍱", +":stew:": "🍲", +":handshake:": "🤝", +":shaking_hands:": "🤝", +":cooking:": "🍳", +":fork_and_knife:": "🍴", +":tea:": "🍵", +":sake:": "🍶", +":wine_glass:": "🍷", +":cocktail:": "🍸", +":tropical_drink:": "🍹", +":beer:": "🍺", +":beers:": "🍻", +":ribbon:": "🎀", +":gift:": "🎁", +":birthday:": "🎂", +":jack_o_lantern:": "🎃", +":left_facing_fist:": "🤛", +":left_fist:": "🤛", +":right_facing_fist:": "🤜", +":right_fist:": "🤜", +":christmas_tree:": "🎄", +":santa:": "🎅", +":fireworks:": "🎆", +":raised_back_of_hand:": "🤚", +":back_of_hand:": "🤚", +":sparkler:": "🎇", +":balloon:": "🎈", +":tada:": "🎉", +":confetti_ball:": "🎊", +":tanabata_tree:": "🎋", +":crossed_flags:": "🎌", +":call_me:": "🤙", +":call_me_hand:": "🤙", +":bamboo:": "🎍", +":man_dancing:": "🕺", +":male_dancer:": "🕺", +":dolls:": "🎎", +":selfie:": "🤳", +":flags:": "🎏", +":pregnant_woman:": "🤰", +":expecting_woman:": "🤰", +":wind_chime:": "🎐", +":face_palm:": "🤦", +":facepalm:": "🤦", +":shrug:": "🤷", +":rice_scene:": "🎑", +":school_satchel:": "🎒", +":mortar_board:": "🎓", +":carousel_horse:": "🎠", +":ferris_wheel:": "🎡", +":roller_coaster:": "🎢", +":fishing_pole_and_fish:": "🎣", +":microphone:": "🎤", +":pound_symbol:": "#", +":movie_camera:": "🎥", +":cinema:": "🎦", +":headphones:": "🎧", +":mrs_claus:": "🤶", +":mother_christmas:": "🤶", +":art:": "🎨", +":man_in_tuxedo:": "🤵", +":tophat:": "🎩", +":circus_tent:": "🎪", +":prince:": "🤴", +":ticket:": "🎫", +":clapper:": "🎬", +":performing_arts:": "🎭", +":sneezing_face:": "🤧", +":sneeze:": "🤧", +":video_game:": "🎮", +":dart:": "🎯", +":slot_machine:": "🎰", +":8ball:": "🎱", +":game_die:": "🎲", +":bowling:": "🎳", +":flower_playing_cards:": "🎴", +":lying_face:": "🤥", +":liar:": "🤥", +":musical_note:": "🎵", +":notes:": "🎶", +":saxophone:": "🎷", +":drooling_face:": "🤤", +":drool:": "🤤", +":guitar:": "🎸", +":musical_keyboard:": "🎹", +":trumpet:": "🎺", +":rofl:": "🤣", +":rolling_on_the_floor_laughing:": "🤣", +":violin:": "🎻", +":musical_score:": "🎼", +":running_shirt_with_sash:": "🎽", +":nauseated_face:": "🤢", +":sick:": "🤢", +":tennis:": "🎾", +":ski:": "🎿", +":basketball:": "🏀", +":checkered_flag:": "🏁", +":clown:": "🤡", +":clown_face:": "🤡", +":snowboarder:": "🏂", +":runner:": "🏃", +":surfer:": "🏄", +":trophy:": "🏆", +":football:": "🏈", +":swimmer:": "🏊", +":house:": "🏠", +":house_with_garden:": "🏡", +":office:": "🏢", +":post_office:": "🏣", +":hospital:": "🏥", +":bank:": "🏦", +":atm:": "🏧", +":hotel:": "🏨", +":love_hotel:": "🏩", +":convenience_store:": "🏪", +":school:": "🏫", +":department_store:": "🏬", +":cowboy:": "🤠", +":face_with_cowboy_hat:": "🤠", +":factory:": "🏭", +":izakaya_lantern:": "🏮", +":japanese_castle:": "🏯", +":european_castle:": "🏰", +":snail:": "🐌", +":snake:": "🐍", +":racehorse:": "🐎", +":sheep:": "🐑", +":monkey:": "🐒", +":chicken:": "🐔", +":boar:": "🐗", +":elephant:": "🐘", +":octopus:": "🐙", +":shell:": "🐚", +":prince_tone1:": "🤴🏻", +":bug:": "🐛", +":ant:": "🐜", +":bee:": "🐝", +":beetle:": "🐞", +":fish:": "🐟", +":tropical_fish:": "🐠", +":blowfish:": "🐡", +":turtle:": "🐢", +":hatching_chick:": "🐣", +":baby_chick:": "🐤", +":hatched_chick:": "🐥", +":bird:": "🐦", +":penguin:": "🐧", +":koala:": "🐨", +":poodle:": "🐩", +":camel:": "🐫", +":dolphin:": "🐬", +":mouse:": "🐭", +":cow:": "🐮", +":tiger:": "🐯", +":rabbit:": "🐰", +":cat:": "🐱", +":dragon_face:": "🐲", +":whale:": "🐳", +":horse:": "🐴", +":monkey_face:": "🐵", +":dog:": "🐶", +":pig:": "🐷", +":frog:": "🐸", +":hamster:": "🐹", +":wolf:": "🐺", +":bear:": "🐻", +":panda_face:": "🐼", +":pig_nose:": "🐽", +":feet:": "🐾", +":paw_prints:": "🐾", +":prince_tone2:": "🤴🏼", +":eyes:": "👀", +":ear:": "👂", +":nose:": "👃", +":lips:": "👄", +":tongue:": "👅", +":prince_tone3:": "🤴🏽", +":point_up_2:": "👆", +":point_down:": "👇", +":point_left:": "👈", +":point_right:": "👉", +":punch:": "👊", +":wave:": "👋", +":ok_hand:": "👌", +":thumbsup:": "👍", +":+1:": "👍", +":thumbup:": "👍", +":thumbsdown:": "👎", +":1:": "👎", +":thumbdown:": "👎", +":clap:": "👏", +":open_hands:": "👐", +":crown:": "👑", +":womans_hat:": "👒", +":eyeglasses:": "👓", +":necktie:": "👔", +":shirt:": "👕", +":prince_tone4:": "🤴🏾", +":jeans:": "👖", +":dress:": "👗", +":kimono:": "👘", +":prince_tone5:": "🤴🏿", +":bikini:": "👙", +":womans_clothes:": "👚", +":purse:": "👛", +":handbag:": "👜", +":pouch:": "👝", +":mans_shoe:": "👞", +":athletic_shoe:": "👟", +":high_heel:": "👠", +":sandal:": "👡", +":boot:": "👢", +":footprints:": "👣", +":bust_in_silhouette:": "👤", +":mrs_claus_tone1:": "🤶🏻", +":mother_christmas_tone1:": "🤶🏻", +":boy:": "👦", +":girl:": "👧", +":man:": "👨", +":woman:": "👩", +":family:": "👪", +":couple:": "👫", +":cop:": "👮", +":dancers:": "👯", +":bride_with_veil:": "👰", +":person_with_blond_hair:": "👱", +":man_with_gua_pi_mao:": "👲", +":man_with_turban:": "👳", +":older_man:": "👴", +":older_woman:": "👵", +":grandma:": "👵", +":baby:": "👶", +":construction_worker:": "👷", +":princess:": "👸", +":japanese_ogre:": "👹", +":mrs_claus_tone2:": "🤶🏼", +":mother_christmas_tone2:": "🤶🏼", +":japanese_goblin:": "👺", +":ghost:": "👻", +":angel:": "👼", +":alien:": "👽", +":space_invader:": "👾", +":mrs_claus_tone3:": "🤶🏽", +":mother_christmas_tone3:": "🤶🏽", +":imp:": "👿", +":skull:": "💀", +":skeleton:": "💀", +":card_index:": "📇", +":information_desk_person:": "💁", +":guardsman:": "💂", +":dancer:": "💃", +":lipstick:": "💄", +":nail_care:": "💅", +":ledger:": "📒", +":massage:": "💆", +":notebook:": "📓", +":haircut:": "💇", +":notebook_with_decorative_cover:": "📔", +":barber:": "💈", +":closed_book:": "📕", +":syringe:": "💉", +":book:": "📖", +":pill:": "💊", +":green_book:": "📗", +":kiss:": "💋", +":blue_book:": "📘", +":love_letter:": "💌", +":orange_book:": "📙", +":ring:": "💍", +":books:": "📚", +":gem:": "💎", +":mrs_claus_tone4:": "🤶🏾", +":mother_christmas_tone4:": "🤶🏾", +":name_badge:": "📛", +":couplekiss:": "💏", +":scroll:": "📜", +":bouquet:": "💐", +":pencil:": "📝", +":mrs_claus_tone5:": "🤶🏿", +":mother_christmas_tone5:": "🤶🏿", +":couple_with_heart:": "💑", +":telephone_receiver:": "📞", +":wedding:": "💒", +":pager:": "📟", +":fax:": "📠", +":heartbeat:": "💓", +":satellite:": "📡", +":loudspeaker:": "📢", +":man_in_tuxedo_tone1:": "🤵🏻", +":tuxedo_tone1:": "🤵🏻", +":broken_heart:": "💔", +":mega:": "📣", +":outbox_tray:": "📤", +":two_hearts:": "💕", +":inbox_tray:": "📥", +":package:": "📦", +":man_in_tuxedo_tone2:": "🤵🏼", +":tuxedo_tone2:": "🤵🏼", +":sparkling_heart:": "💖", +":email:": "📧", +":incoming_envelope:": "📨", +":heartpulse:": "💗", +":man_in_tuxedo_tone3:": "🤵🏽", +":tuxedo_tone3:": "🤵🏽", +":envelope_with_arrow:": "📩", +":mailbox_closed:": "📪", +":cupid:": "💘", +":mailbox:": "📫", +":man_in_tuxedo_tone4:": "🤵🏾", +":tuxedo_tone4:": "🤵🏾", +":postbox:": "📮", +":blue_heart:": "💙", +":newspaper:": "📰", +":man_in_tuxedo_tone5:": "🤵🏿", +":tuxedo_tone5:": "🤵🏿", +":iphone:": "📱", +":green_heart:": "💚", +":shrug_tone1:": "🤷🏻", +":calling:": "📲", +":vibration_mode:": "📳", +":yellow_heart:": "💛", +":shrug_tone2:": "🤷🏼", +":mobile_phone_off:": "📴", +":signal_strength:": "📶", +":shrug_tone3:": "🤷🏽", +":purple_heart:": "💜", +":shrug_tone4:": "🤷🏾", +":camera:": "📷", +":video_camera:": "📹", +":gift_heart:": "💝", +":tv:": "📺", +":shrug_tone5:": "🤷🏿", +":radio:": "📻", +":revolving_hearts:": "💞", +":vhs:": "📼", +":face_palm_tone1:": "🤦🏻", +":facepalm_tone1:": "🤦🏻", +":arrows_clockwise:": "🔃", +":heart_decoration:": "💟", +":loud_sound:": "🔊", +":battery:": "🔋", +":diamond_shape_with_a_dot_inside:": "💠", +":electric_plug:": "🔌", +":mag:": "🔍", +":face_palm_tone2:": "🤦🏼", +":facepalm_tone2:": "🤦🏼", +":bulb:": "💡", +":mag_right:": "🔎", +":lock_with_ink_pen:": "🔏", +":anger:": "💢", +":closed_lock_with_key:": "🔐", +":key:": "🔑", +":bomb:": "💣", +":lock:": "🔒", +":unlock:": "🔓", +":zzz:": "💤", +":bell:": "🔔", +":bookmark:": "🔖", +":boom:": "💥", +":face_palm_tone3:": "🤦🏽", +":facepalm_tone3:": "🤦🏽", +":link:": "🔗", +":radio_button:": "🔘", +":sweat_drops:": "💦", +":back:": "🔙", +":end:": "🔚", +":droplet:": "💧", +":face_palm_tone4:": "🤦🏾", +":facepalm_tone4:": "🤦🏾", +":on:": "🔛", +":soon:": "🔜", +":dash:": "💨", +":top:": "🔝", +":underage:": "🔞", +":poop:": "💩", +":shit:": "💩", + ":hankey:": "💩", +":poo:": "💩", +":keycap_ten:": "🔟", +":muscle:": "💪", +":capital_abcd:": "🔠", +":abcd:": "🔡", +":dizzy:": "💫", +":face_palm_tone5:": "🤦🏿", +":facepalm_tone5:": "🤦🏿", +":1234:": "🔢", +":symbols:": "🔣", +":speech_balloon:": "💬", +":abc:": "🔤", +":fire:": "🔥", +":flame:": "🔥", +":white_flower:": "💮", +":flashlight:": "🔦", +":wrench:": "🔧", +":100:": "💯", +":hammer:": "🔨", +":nut_and_bolt:": "🔩", +":moneybag:": "💰", +":knife:": "🔪", +":gun:": "🔫", +":currency_exchange:": "💱", +":pregnant_woman_tone1:": "🤰🏻", +":expecting_woman_tone1:": "🤰🏻", +":crystal_ball:": "🔮", +":heavy_dollar_sign:": "💲", +":six_pointed_star:": "🔯", +":credit_card:": "💳", +":beginner:": "🔰", +":trident:": "🔱", +":yen:": "💴", +":pregnant_woman_tone2:": "🤰🏼", +":expecting_woman_tone2:": "🤰🏼", +":black_square_button:": "🔲", +":white_square_button:": "🔳", +":dollar:": "💵", +":red_circle:": "🔴", +":blue_circle:": "🔵", +":money_with_wings:": "💸", +":large_orange_diamond:": "🔶", +":large_blue_diamond:": "🔷", +":chart:": "💹", +":pregnant_woman_tone3:": "🤰🏽", +":expecting_woman_tone3:": "🤰🏽", +":small_orange_diamond:": "🔸", +":small_blue_diamond:": "🔹", +":seat:": "💺", +":small_red_triangle:": "🔺", +":small_red_triangle_down:": "🔻", +":computer:": "💻", +":arrow_up_small:": "🔼", +":briefcase:": "💼", +":arrow_down_small:": "🔽", +":clock1:": "🕐", +":minidisc:": "💽", +":clock2:": "🕑", +":floppy_disk:": "💾", +":pregnant_woman_tone4:": "🤰🏾", +":expecting_woman_tone4:": "🤰🏾", +":clock3:": "🕒", +":cd:": "💿", +":clock4:": "🕓", +":dvd:": "📀", +":clock5:": "🕔", +":clock6:": "🕕", +":file_folder:": "📁", +":clock7:": "🕖", +":clock8:": "🕗", +":open_file_folder:": "📂", +":clock9:": "🕘", +":clock10:": "🕙", +":page_with_curl:": "📃", +":clock11:": "🕚", +":clock12:": "🕛", +":page_facing_up:": "📄", +":mount_fuji:": "🗻", +":tokyo_tower:": "🗼", +":date:": "📅", +":statue_of_liberty:": "🗽", +":japan:": "🗾", +":calendar:": "📆", +":moyai:": "🗿", +":grin:": "😁", +":joy:": "😂", +":smiley:": "😃", +":chart_with_upwards_trend:": "📈", +":smile:": "😄", +":sweat_smile:": "😅", +":chart_with_downwards_trend:": "📉", +":laughing:": "😆", +":satisfied:": "😆", +":wink:": "😉", +":bar_chart:": "📊", +":blush:": "😊", +":yum:": "😋", +":clipboard:": "📋", +":relieved:": "😌", +":heart_eyes:": "😍", +":pushpin:": "📌", +":smirk:": "😏", +":unamused:": "😒", +":round_pushpin:": "📍", +":sweat:": "😓", +":pensive:": "😔", +":paperclip:": "📎", +":confounded:": "😖", +":kissing_heart:": "😘", +":pregnant_woman_tone5:": "🤰🏿", +":expecting_woman_tone5:": "🤰🏿", +":straight_ruler:": "📏", +":kissing_closed_eyes:": "😚", +":stuck_out_tongue_winking_eye:": "😜", +":triangular_ruler:": "📐", +":stuck_out_tongue_closed_eyes:": "😝", +":disappointed:": "😞", +":bookmark_tabs:": "📑", +":angry:": "😠", +":rage:": "😡", +":cry:": "😢", +":persevere:": "😣", +":triumph:": "😤", +":disappointed_relieved:": "😥", +":fearful:": "😨", +":weary:": "😩", +":sleepy:": "😪", +":tired_face:": "😫", +":sob:": "😭", +":cold_sweat:": "😰", +":scream:": "😱", +":astonished:": "😲", +":flushed:": "😳", +":dizzy_face:": "😵", +":mask:": "😷", +":smile_cat:": "😸", +":joy_cat:": "😹", +":smiley_cat:": "😺", +":heart_eyes_cat:": "😻", +":smirk_cat:": "😼", +":kissing_cat:": "😽", +":pouting_cat:": "😾", +":crying_cat_face:": "😿", +":scream_cat:": "🙀", +":no_good:": "🙅", +":ok_woman:": "🙆", +":bow:": "🙇", +":see_no_evil:": "🙈", +":man_dancing_tone1:": "🕺🏻", +":male_dancer_tone1:": "🕺🏻", +":hear_no_evil:": "🙉", +":speak_no_evil:": "🙊", +":man_dancing_tone2:": "🕺🏼", +":male_dancer_tone2:": "🕺🏼", +":raising_hand:": "🙋", +":raised_hands:": "🙌", +":person_frowning:": "🙍", +":person_with_pouting_face:": "🙎", +":pray:": "🙏", +":rocket:": "🚀", +":railway_car:": "🚃", +":bullettrain_side:": "🚄", +":bullettrain_front:": "🚅", +":metro:": "🚇", +":station:": "🚉", +":bus:": "🚌", +":busstop:": "🚏", +":ambulance:": "🚑", +":fire_engine:": "🚒", +":police_car:": "🚓", +":taxi:": "🚕", +":red_car:": "🚗", +":blue_car:": "🚙", +":truck:": "🚚", +":ship:": "🚢", +":speedboat:": "🚤", +":traffic_light:": "🚥", +":construction:": "🚧", +":rotating_light:": "🚨", +":triangular_flag_on_post:": "🚩", +":door:": "🚪", +":man_dancing_tone3:": "🕺🏽", +":male_dancer_tone3:": "🕺🏽", +":no_entry_sign:": "🚫", +":smoking:": "🚬", +":no_smoking:": "🚭", +":bike:": "🚲", +":walking:": "🚶", +":mens:": "🚹", +":womens:": "🚺", +":man_dancing_tone4:": "🕺🏾", +":male_dancer_tone4:": "🕺🏾", +":restroom:": "🚻", +":baby_symbol:": "🚼", +":man_dancing_tone5:": "🕺🏿", +":male_dancer_tone5:": "🕺🏿", +":toilet:": "🚽", +":wc:": "🚾", +":selfie_tone1:": "🤳🏻", +":bath:": "🛀", +":metal:": "🤘", +":sign_of_the_horns:": "🤘", +":grinning:": "😀", +":innocent:": "😇", +":smiling_imp:": "😈", +":sunglasses:": "😎", +":neutral_face:": "😐", +":expressionless:": "😑", +":confused:": "😕", +":kissing:": "😗", +":selfie_tone2:": "🤳🏼", +":kissing_smiling_eyes:": "😙", +":stuck_out_tongue:": "😛", +":worried:": "😟", +":frowning:": "😦", +":anguished:": "😧", +":grimacing:": "😬", +":open_mouth:": "😮", +":hushed:": "😯", +":sleeping:": "😴", +":no_mouth:": "😶", +":helicopter:": "🚁", +":steam_locomotive:": "🚂", +":train2:": "🚆", +":light_rail:": "🚈", +":tram:": "🚊", +":oncoming_bus:": "🚍", +":trolleybus:": "🚎", +":minibus:": "🚐", +":oncoming_police_car:": "🚔", +":oncoming_taxi:": "🚖", +":oncoming_automobile:": "🚘", +":articulated_lorry:": "🚛", +":selfie_tone3:": "🤳🏽", +":tractor:": "🚜", +":monorail:": "🚝", +":mountain_railway:": "🚞", +":suspension_railway:": "🚟", +":mountain_cableway:": "🚠", +":aerial_tramway:": "🚡", +":rowboat:": "🚣", +":vertical_traffic_light:": "🚦", +":selfie_tone4:": "🤳🏾", +":put_litter_in_its_place:": "🚮", +":do_not_litter:": "🚯", +":selfie_tone5:": "🤳🏿", +":potable_water:": "🚰", +":nonpotable_water:": "🚱", +":no_bicycles:": "🚳", +":fingers_crossed_tone1:": "🤞🏻", +":hand_with_index_and_middle_fingers_crossed_tone1:": "🤞🏻", +":bicyclist:": "🚴", +":mountain_bicyclist:": "🚵", +":no_pedestrians:": "🚷", +":children_crossing:": "🚸", +":shower:": "🚿", +":bathtub:": "🛁", +":passport_control:": "🛂", +":fingers_crossed_tone2:": "🤞🏼", +":hand_with_index_and_middle_fingers_crossed_tone2:": "🤞🏼", +":customs:": "🛃", +":baggage_claim:": "🛄", +":fingers_crossed_tone3:": "🤞🏽", +":hand_with_index_and_middle_fingers_crossed_tone3:": "🤞🏽", +":left_luggage:": "🛅", +":earth_africa:": "🌍", +":earth_americas:": "🌎", +":globe_with_meridians:": "🌐", +":waxing_crescent_moon:": "🌒", +":waning_gibbous_moon:": "🌖", +":last_quarter_moon:": "🌗", +":waning_crescent_moon:": "🌘", +":new_moon_with_face:": "🌚", +":last_quarter_moon_with_face:": "🌜", +":full_moon_with_face:": "🌝", +":sun_with_face:": "🌞", +":evergreen_tree:": "🌲", +":deciduous_tree:": "🌳", +":lemon:": "🍋", +":fingers_crossed_tone4:": "🤞🏾", +":hand_with_index_and_middle_fingers_crossed_tone4:": "🤞🏾", +":pear:": "🍐", +":baby_bottle:": "🍼", +":horse_racing:": "🏇", +":rugby_football:": "🏉", +":european_post_office:": "🏤", +":rat:": "🐀", +":mouse2:": "🐁", +":ox:": "🐂", +":water_buffalo:": "🐃", +":cow2:": "🐄", +":tiger2:": "🐅", +":leopard:": "🐆", +":rabbit2:": "🐇", +":cat2:": "🐈", +":dragon:": "🐉", +":crocodile:": "🐊", +":whale2:": "🐋", +":ram:": "🐏", +":goat:": "🐐", +":rooster:": "🐓", +":dog2:": "🐕", +":pig2:": "🐖", +":fingers_crossed_tone5:": "🤞🏿", +":hand_with_index_and_middle_fingers_crossed_tone5:": "🤞🏿", +":dromedary_camel:": "🐪", +":busts_in_silhouette:": "👥", +":two_men_holding_hands:": "👬", +":two_women_holding_hands:": "👭", +":thought_balloon:": "💭", +":euro:": "💶", +":call_me_tone1:": "🤙🏻", +":call_me_hand_tone1:": "🤙🏻", +":pound:": "💷", +":mailbox_with_mail:": "📬", +":mailbox_with_no_mail:": "📭", +":call_me_tone2:": "🤙🏼", +":call_me_hand_tone2:": "🤙🏼", +":postal_horn:": "📯", +":no_mobile_phones:": "📵", +":twisted_rightwards_arrows:": "🔀", +":repeat:": "🔁", +":repeat_one:": "🔂", +":arrows_counterclockwise:": "🔄", +":call_me_tone3:": "🤙🏽", +":call_me_hand_tone3:": "🤙🏽", +":low_brightness:": "🔅", +":high_brightness:": "🔆", +":mute:": "🔇", +":sound:": "🔉", +":no_bell:": "🔕", +":microscope:": "🔬", +":telescope:": "🔭", +":clock130:": "🕜", +":clock230:": "🕝", +":clock330:": "🕞", +":clock430:": "🕟", +":clock530:": "🕠", +":clock630:": "🕡", +":clock730:": "🕢", +":clock830:": "🕣", +":clock930:": "🕤", +":clock1030:": "🕥", +":clock1130:": "🕦", +":clock1230:": "🕧", +":speaker:": "🔈", +":train:": "🚋", +":loop:": "➿", +":flag_af:": "🇦🇫", +":af:": "🇦🇫", +":flag_al:": "🇦🇱", +":al:": "🇦🇱", +":flag_dz:": "🇩🇿", +":dz:": "🇩🇿", +":flag_ad:": "🇦🇩", +":ad:": "🇦🇩", +":flag_ao:": "🇦🇴", +":ao:": "🇦🇴", +":flag_ag:": "🇦🇬", +":ag:": "🇦🇬", +":flag_ar:": "🇦🇷", +":ar:": "🇦🇷", +":flag_am:": "🇦🇲", +":am:": "🇦🇲", +":flag_au:": "🇦🇺", +":au:": "🇦🇺", +":flag_at:": "🇦🇹", +":at:": "🇦🇹", +":flag_az:": "🇦🇿", +":az:": "🇦🇿", +":flag_bs:": "🇧🇸", +":bs:": "🇧🇸", +":flag_bh:": "🇧🇭", +":bh:": "🇧🇭", +":flag_bd:": "🇧🇩", +":bd:": "🇧🇩", +":flag_bb:": "🇧🇧", +":bb:": "🇧🇧", +":flag_by:": "🇧🇾", +":by:": "🇧🇾", +":flag_be:": "🇧🇪", +":be:": "🇧🇪", +":flag_bz:": "🇧🇿", +":bz:": "🇧🇿", +":flag_bj:": "🇧🇯", +":bj:": "🇧🇯", +":flag_bt:": "🇧🇹", +":bt:": "🇧🇹", +":flag_bo:": "🇧🇴", +":bo:": "🇧🇴", +":flag_ba:": "🇧🇦", +":ba:": "🇧🇦", +":flag_bw:": "🇧🇼", +":bw:": "🇧🇼", +":flag_br:": "🇧🇷", +":br:": "🇧🇷", +":flag_bn:": "🇧🇳", +":bn:": "🇧🇳", +":flag_bg:": "🇧🇬", +":bg:": "🇧🇬", +":flag_bf:": "🇧🇫", +":bf:": "🇧🇫", +":flag_bi:": "🇧🇮", +":bi:": "🇧🇮", +":flag_kh:": "🇰🇭", +":kh:": "🇰🇭", +":flag_cm:": "🇨🇲", +":cm:": "🇨🇲", +":flag_ca:": "🇨🇦", +":ca:": "🇨🇦", +":flag_cv:": "🇨🇻", +":cv:": "🇨🇻", +":call_me_tone4:": "🤙🏾", +":call_me_hand_tone4:": "🤙🏾", +":flag_cf:": "🇨🇫", +":cf:": "🇨🇫", +":flag_td:": "🇹🇩", +":td:": "🇹🇩", +":flag_cl:": "🇨🇱", +":chile:": "🇨🇱", +":flag_co:": "🇨🇴", +":co:": "🇨🇴", +":flag_km:": "🇰🇲", +":km:": "🇰🇲", +":flag_cr:": "🇨🇷", +":cr:": "🇨🇷", +":flag_ci:": "🇨🇮", +":ci:": "🇨🇮", +":flag_hr:": "🇭🇷", +":hr:": "🇭🇷", +":flag_cu:": "🇨🇺", +":cu:": "🇨🇺", +":flag_cy:": "🇨🇾", +":cy:": "🇨🇾", +":flag_cz:": "🇨🇿", +":cz:": "🇨🇿", +":call_me_tone5:": "🤙🏿", +":call_me_hand_tone5:": "🤙🏿", +":flag_cd:": "🇨🇩", +":congo:": "🇨🇩", +":left_facing_fist_tone1:": "🤛🏻", +":left_fist_tone1:": "🤛🏻", +":flag_dk:": "🇩🇰", +":dk:": "🇩🇰", +":flag_dj:": "🇩🇯", +":dj:": "🇩🇯", +":flag_dm:": "🇩🇲", +":dm:": "🇩🇲", +":flag_do:": "🇩🇴", +":do:": "🇩🇴", +":flag_tl:": "🇹🇱", +":tl:": "🇹🇱", +":flag_ec:": "🇪🇨", +":ec:": "🇪🇨", +":flag_eg:": "🇪🇬", +":eg:": "🇪🇬", +":flag_sv:": "🇸🇻", +":sv:": "🇸🇻", +":flag_gq:": "🇬🇶", +":gq:": "🇬🇶", +":flag_er:": "🇪🇷", +":er:": "🇪🇷", +":flag_ee:": "🇪🇪", +":ee:": "🇪🇪", +":flag_et:": "🇪🇹", +":et:": "🇪🇹", +":left_facing_fist_tone2:": "🤛🏼", +":left_fist_tone2:": "🤛🏼", +":flag_fj:": "🇫🇯", +":fj:": "🇫🇯", +":flag_fi:": "🇫🇮", +":fi:": "🇫🇮", +":flag_ga:": "🇬🇦", +":ga:": "🇬🇦", +":flag_gm:": "🇬🇲", +":gm:": "🇬🇲", +":flag_ge:": "🇬🇪", +":ge:": "🇬🇪", +":flag_gh:": "🇬🇭", +":gh:": "🇬🇭", +":flag_gr:": "🇬🇷", +":gr:": "🇬🇷", +":flag_gd:": "🇬🇩", +":gd:": "🇬🇩", +":flag_gt:": "🇬🇹", +":gt:": "🇬🇹", +":flag_gn:": "🇬🇳", +":gn:": "🇬🇳", +":flag_gw:": "🇬🇼", +":gw:": "🇬🇼", +":flag_gy:": "🇬🇾", +":gy:": "🇬🇾", +":flag_ht:": "🇭🇹", +":ht:": "🇭🇹", +":flag_hn:": "🇭🇳", +":hn:": "🇭🇳", +":flag_hu:": "🇭🇺", +":hu:": "🇭🇺", +":flag_is:": "🇮🇸", +":is:": "🇮🇸", +":flag_in:": "🇮🇳", +":in:": "🇮🇳", +":flag_id:": "🇮🇩", +":indonesia:": "🇮🇩", +":flag_ir:": "🇮🇷", +":ir:": "🇮🇷", +":flag_iq:": "🇮🇶", +":iq:": "🇮🇶", +":flag_ie:": "🇮🇪", +":ie:": "🇮🇪", +":flag_il:": "🇮🇱", +":il:": "🇮🇱", +":flag_jm:": "🇯🇲", +":jm:": "🇯🇲", +":flag_jo:": "🇯🇴", +":jo:": "🇯🇴", +":flag_kz:": "🇰🇿", +":kz:": "🇰🇿", +":flag_ke:": "🇰🇪", +":ke:": "🇰🇪", +":flag_ki:": "🇰🇮", +":ki:": "🇰🇮", +":flag_xk:": "🇽🇰", +":xk:": "🇽🇰", +":flag_kw:": "🇰🇼", +":kw:": "🇰🇼", +":flag_kg:": "🇰🇬", +":kg:": "🇰🇬", +":left_facing_fist_tone3:": "🤛🏽", +":left_fist_tone3:": "🤛🏽", +":flag_la:": "🇱🇦", +":la:": "🇱🇦", +":flag_lv:": "🇱🇻", +":lv:": "🇱🇻", +":flag_lb:": "🇱🇧", +":lb:": "🇱🇧", +":flag_ls:": "🇱🇸", +":ls:": "🇱🇸", +":flag_lr:": "🇱🇷", +":lr:": "🇱🇷", +":flag_ly:": "🇱🇾", +":ly:": "🇱🇾", +":flag_li:": "🇱🇮", +":li:": "🇱🇮", +":flag_lt:": "🇱🇹", +":lt:": "🇱🇹", +":flag_lu:": "🇱🇺", +":lu:": "🇱🇺", +":flag_mk:": "🇲🇰", +":mk:": "🇲🇰", +":flag_mg:": "🇲🇬", +":mg:": "🇲🇬", +":flag_mw:": "🇲🇼", +":mw:": "🇲🇼", +":flag_my:": "🇲🇾", +":my:": "🇲🇾", +":flag_mv:": "🇲🇻", +":mv:": "🇲🇻", +":flag_ml:": "🇲🇱", +":ml:": "🇲🇱", +":flag_mt:": "🇲🇹", +":mt:": "🇲🇹", +":flag_mh:": "🇲🇭", +":mh:": "🇲🇭", +":flag_mr:": "🇲🇷", +":mr:": "🇲🇷", +":flag_mu:": "🇲🇺", +":mu:": "🇲🇺", +":flag_mx:": "🇲🇽", +":mx:": "🇲🇽", +":flag_fm:": "🇫🇲", +":fm:": "🇫🇲", +":flag_md:": "🇲🇩", +":md:": "🇲🇩", +":flag_mc:": "🇲🇨", +":mc:": "🇲🇨", +":flag_mn:": "🇲🇳", +":mn:": "🇲🇳", +":flag_me:": "🇲🇪", +":me:": "🇲🇪", +":flag_ma:": "🇲🇦", +":ma:": "🇲🇦", +":flag_mz:": "🇲🇿", +":mz:": "🇲🇿", +":flag_mm:": "🇲🇲", +":mm:": "🇲🇲", +":flag_na:": "🇳🇦", +":na:": "🇳🇦", +":flag_nr:": "🇳🇷", +":nr:": "🇳🇷", +":flag_np:": "🇳🇵", +":np:": "🇳🇵", +":flag_nl:": "🇳🇱", +":nl:": "🇳🇱", +":flag_nz:": "🇳🇿", +":nz:": "🇳🇿", +":flag_ni:": "🇳🇮", +":ni:": "🇳🇮", +":flag_ne:": "🇳🇪", +":ne:": "🇳🇪", +":flag_ng:": "🇳🇬", +":nigeria:": "🇳🇬", +":flag_kp:": "🇰🇵", +":kp:": "🇰🇵", +":flag_no:": "🇳🇴", +":no:": "🇳🇴", +":flag_om:": "🇴🇲", +":om:": "🇴🇲", +":flag_pk:": "🇵🇰", +":pk:": "🇵🇰", +":flag_pw:": "🇵🇼", +":pw:": "🇵🇼", +":flag_pa:": "🇵🇦", +":pa:": "🇵🇦", +":flag_pg:": "🇵🇬", +":pg:": "🇵🇬", +":left_facing_fist_tone4:": "🤛🏾", +":left_fist_tone4:": "🤛🏾", +":flag_py:": "🇵🇾", +":py:": "🇵🇾", +":flag_pe:": "🇵🇪", +":pe:": "🇵🇪", +":flag_ph:": "🇵🇭", +":ph:": "🇵🇭", +":flag_pl:": "🇵🇱", +":pl:": "🇵🇱", +":flag_pt:": "🇵🇹", +":pt:": "🇵🇹", +":flag_qa:": "🇶🇦", +":qa:": "🇶🇦", +":flag_tw:": "🇹🇼", +":tw:": "🇹🇼", +":flag_cg:": "🇨🇬", +":cg:": "🇨🇬", +":flag_ro:": "🇷🇴", +":ro:": "🇷🇴", +":flag_rw:": "🇷🇼", +":rw:": "🇷🇼", +":flag_kn:": "🇰🇳", +":kn:": "🇰🇳", +":flag_lc:": "🇱🇨", +":lc:": "🇱🇨", +":flag_vc:": "🇻🇨", +":vc:": "🇻🇨", +":flag_ws:": "🇼🇸", +":ws:": "🇼🇸", +":flag_sm:": "🇸🇲", +":sm:": "🇸🇲", +":flag_st:": "🇸🇹", +":st:": "🇸🇹", +":flag_sa:": "🇸🇦", +":saudiarabia:": "🇸🇦", +":saudi:": "🇸🇦", +":left_facing_fist_tone5:": "🤛🏿", +":left_fist_tone5:": "🤛🏿", +":flag_sn:": "🇸🇳", +":sn:": "🇸🇳", +":flag_rs:": "🇷🇸", +":rs:": "🇷🇸", +":flag_sc:": "🇸🇨", +":sc:": "🇸🇨", +":flag_sl:": "🇸🇱", +":sl:": "🇸🇱", +":flag_sg:": "🇸🇬", +":sg:": "🇸🇬", +":flag_sk:": "🇸🇰", +":sk:": "🇸🇰", +":flag_si:": "🇸🇮", +":si:": "🇸🇮", +":flag_sb:": "🇸🇧", +":sb:": "🇸🇧", +":flag_so:": "🇸🇴", +":so:": "🇸🇴", +":flag_za:": "🇿🇦", +":za:": "🇿🇦", +":flag_lk:": "🇱🇰", +":lk:": "🇱🇰", +":flag_sd:": "🇸🇩", +":sd:": "🇸🇩", +":flag_sr:": "🇸🇷", +":sr:": "🇸🇷", +":flag_sz:": "🇸🇿", +":sz:": "🇸🇿", +":flag_se:": "🇸🇪", +":se:": "🇸🇪", +":flag_ch:": "🇨🇭", +":ch:": "🇨🇭", +":flag_sy:": "🇸🇾", +":sy:": "🇸🇾", +":flag_tj:": "🇹🇯", +":tj:": "🇹🇯", +":flag_tz:": "🇹🇿", +":tz:": "🇹🇿", +":flag_th:": "🇹🇭", +":th:": "🇹🇭", +":flag_tg:": "🇹🇬", +":tg:": "🇹🇬", +":flag_to:": "🇹🇴", +":to:": "🇹🇴", +":flag_tt:": "🇹🇹", +":tt:": "🇹🇹", +":flag_tn:": "🇹🇳", +":tn:": "🇹🇳", +":flag_tr:": "🇹🇷", +":tr:": "🇹🇷", +":flag_tm:": "🇹🇲", +":turkmenistan:": "🇹🇲", +":flag_tv:": "🇹🇻", +":tuvalu:": "🇹🇻", +":flag_ug:": "🇺🇬", +":ug:": "🇺🇬", +":flag_ua:": "🇺🇦", +":ua:": "🇺🇦", +":flag_ae:": "🇦🇪", +":ae:": "🇦🇪", +":flag_uy:": "🇺🇾", +":uy:": "🇺🇾", +":flag_uz:": "🇺🇿", +":uz:": "🇺🇿", +":flag_vu:": "🇻🇺", +":vu:": "🇻🇺", +":flag_va:": "🇻🇦", +":va:": "🇻🇦", +":flag_ve:": "🇻🇪", +":ve:": "🇻🇪", +":flag_vn:": "🇻🇳", +":vn:": "🇻🇳", +":flag_eh:": "🇪🇭", +":eh:": "🇪🇭", +":right_facing_fist_tone1:": "🤜🏻", +":right_fist_tone1:": "🤜🏻", +":flag_ye:": "🇾🇪", +":ye:": "🇾🇪", +":flag_zm:": "🇿🇲", +":zm:": "🇿🇲", +":flag_zw:": "🇿🇼", +":zw:": "🇿🇼", +":flag_pr:": "🇵🇷", +":pr:": "🇵🇷", +":flag_ky:": "🇰🇾", +":ky:": "🇰🇾", +":flag_bm:": "🇧🇲", +":bm:": "🇧🇲", +":flag_pf:": "🇵🇫", +":pf:": "🇵🇫", +":flag_ps:": "🇵🇸", +":ps:": "🇵🇸", +":flag_nc:": "🇳🇨", +":nc:": "🇳🇨", +":right_facing_fist_tone2:": "🤜🏼", +":right_fist_tone2:": "🤜🏼", +":flag_sh:": "🇸🇭", +":sh:": "🇸🇭", +":flag_aw:": "🇦🇼", +":aw:": "🇦🇼", +":flag_vi:": "🇻🇮", +":vi:": "🇻🇮", +":flag_hk:": "🇭🇰", +":hk:": "🇭🇰", +":flag_ac:": "🇦🇨", +":ac:": "🇦🇨", +":flag_ms:": "🇲🇸", +":ms:": "🇲🇸", +":flag_gu:": "🇬🇺", +":gu:": "🇬🇺", +":flag_gl:": "🇬🇱", +":gl:": "🇬🇱", +":flag_nu:": "🇳🇺", +":nu:": "🇳🇺", +":flag_wf:": "🇼🇫", +":wf:": "🇼🇫", +":flag_mo:": "🇲🇴", +":mo:": "🇲🇴", +":right_facing_fist_tone3:": "🤜🏽", +":right_fist_tone3:": "🤜🏽", +":flag_fo:": "🇫🇴", +":fo:": "🇫🇴", +":flag_fk:": "🇫🇰", +":fk:": "🇫🇰", +":flag_je:": "🇯🇪", +":je:": "🇯🇪", +":flag_ai:": "🇦🇮", +":ai:": "🇦🇮", +":flag_gi:": "🇬🇮", +":gi:": "🇬🇮", +":film_frames:": "🎞", +":tickets:": "🎟", +":admission_tickets:": "🎟", +":medal:": "🏅", +":sports_medal:": "🏅", +":lifter:": "🏋", +":weight_lifter:": "🏋", +":golfer:": "🏌", +":motorcycle:": "🏍", +":racing_motorcycle:": "🏍", +":race_car:": "🏎", +":racing_car:": "🏎", +":military_medal:": "🎖", +":reminder_ribbon:": "🎗", +":hot_pepper:": "🌶", +":right_facing_fist_tone4:": "🤜🏾", +":right_fist_tone4:": "🤜🏾", +":cloud_rain:": "🌧", +":cloud_with_rain:": "🌧", +":cloud_snow:": "🌨", +":cloud_with_snow:": "🌨", +":cloud_lightning:": "🌩", +":cloud_with_lightning:": "🌩", +":cloud_tornado:": "🌪", +":cloud_with_tornado:": "🌪", +":fog:": "🌫", +":wind_blowing_face:": "🌬", +":chipmunk:": "🐿", +":spider:": "🕷", +":spider_web:": "🕸", +":thermometer:": "🌡", +":microphone2:": "🎙", +":studio_microphone:": "🎙", +":level_slider:": "🎚", +":control_knobs:": "🎛", +":flag_white:": "🏳", +":waving_white_flag:": "🏳", +":flag_black:": "🏴", +":waving_black_flag:": "🏴", +":rosette:": "🏵", +":label:": "🏷", +":camera_with_flash:": "📸", +":projector:": "📽", +":film_projector:": "📽", +":cross:": "✝", +":latin_cross:": "✝", +":om_symbol:": "🕉", +":dove:": "🕊", +":dove_of_peace:": "🕊", +":candle:": "🕯", +":clock:": "🕰", +":mantlepiece_clock:": "🕰", +":hole:": "🕳", +":dark_sunglasses:": "🕶", +":joystick:": "🕹", +":paperclips:": "🖇", +":linked_paperclips:": "🖇", +":pen_ballpoint:": "🖊", +":lower_left_ballpoint_pen:": "🖊", +":pen_fountain:": "🖋", +":lower_left_fountain_pen:": "🖋", +":paintbrush:": "🖌", +":lower_left_paintbrush:": "🖌", +":crayon:": "🖍", +":lower_left_crayon:": "🖍", +":desktop:": "🖥", +":desktop_computer:": "🖥", +":printer:": "🖨", +":right_facing_fist_tone5:": "🤜🏿", +":right_fist_tone5:": "🤜🏿", +":keyboard:": "⌨", +":trackball:": "🖲", +":raised_back_of_hand_tone1:": "🤚🏻", +":back_of_hand_tone1:": "🤚🏻", +":frame_photo:": "🖼", +":frame_with_picture:": "🖼", +":dividers:": "🗂", +":card_index_dividers:": "🗂", +":card_box:": "🗃", +":card_file_box:": "🗃", +":file_cabinet:": "🗄", +":wastebasket:": "🗑", +":notepad_spiral:": "🗒", +":spiral_note_pad:": "🗒", +":calendar_spiral:": "🗓", +":spiral_calendar_pad:": "🗓", +":compression:": "🗜", +":key2:": "🗝", +":old_key:": "🗝", +":newspaper2:": "🗞", +":rolled_up_newspaper:": "🗞", +":dagger:": "🗡", +":dagger_knife:": "🗡", +":speaking_head:": "🗣", +":speaking_head_in_silhouette:": "🗣", +":speech_left:": "🗨", +":left_speech_bubble:": "🗨", +":raised_back_of_hand_tone2:": "🤚🏼", +":back_of_hand_tone2:": "🤚🏼", +":anger_right:": "🗯", +":right_anger_bubble:": "🗯", +":raised_back_of_hand_tone3:": "🤚🏽", +":back_of_hand_tone3:": "🤚🏽", +":ballot_box:": "🗳", +":ballot_box_with_ballot:": "🗳", +":map:": "🗺", +":world_map:": "🗺", +":sleeping_accommodation:": "🛌", +":tools:": "🛠", +":hammer_and_wrench:": "🛠", +":shield:": "🛡", +":oil:": "🛢", +":oil_drum:": "🛢", +":satellite_orbital:": "🛰", +":fork_knife_plate:": "🍽", +":fork_and_knife_with_plate:": "🍽", +":eye:": "👁", +":levitate:": "🕴", +":man_in_business_suit_levitating:": "🕴", +":spy:": "🕵", +":sleuth_or_spy:": "🕵", +":writing_hand:": "✍", +":hand_splayed:": "🖐", +":raised_hand_with_fingers_splayed:": "🖐", +":middle_finger:": "🖕", +":reversed_hand_with_middle_finger_extended:": "🖕", +":vulcan:": "🖖", +":raised_hand_with_part_between_middle_and_ring_fingers:": "🖖", +":slight_frown:": "🙁", +":slightly_frowning_face:": "🙁", +":slight_smile:": "🙂", +":slightly_smiling_face:": "🙂", +":mountain_snow:": "🏔", +":snow_capped_mountain:": "🏔", +":camping:": "🏕", +":beach:": "🏖", +":beach_with_umbrella:": "🏖", +":construction_site:": "🏗", +":building_construction:": "🏗", +":homes:": "🏘", +":house_buildings:": "🏘", +":cityscape:": "🏙", +":house_abandoned:": "🏚", +":derelict_house_building:": "🏚", +":classical_building:": "🏛", +":desert:": "🏜", +":island:": "🏝", +":desert_island:": "🏝", +":park:": "🏞", +":national_park:": "🏞", +":stadium:": "🏟", +":couch:": "🛋", +":couch_and_lamp:": "🛋", +":raised_back_of_hand_tone4:": "🤚🏾", +":back_of_hand_tone4:": "🤚🏾", +":shopping_bags:": "🛍", +":bellhop:": "🛎", +":bellhop_bell:": "🛎", +":bed:": "🛏", +":motorway:": "🛣", +":railway_track:": "🛤", +":railroad_track:": "🛤", +":motorboat:": "🛥", +":airplane_small:": "🛩", +":small_airplane:": "🛩", +":airplane_departure:": "🛫", +":airplane_arriving:": "🛬", +":cruise_ship:": "🛳", +":passenger_ship:": "🛳", +":baby_tone1:": "👶🏻", +":baby_tone2:": "👶🏼", +":baby_tone3:": "👶🏽", +":baby_tone4:": "👶🏾", +":baby_tone5:": "👶🏿", +":boy_tone1:": "👦🏻", +":boy_tone2:": "👦🏼", +":boy_tone3:": "👦🏽", +":boy_tone4:": "👦🏾", +":boy_tone5:": "👦🏿", +":girl_tone1:": "👧🏻", +":girl_tone2:": "👧🏼", +":girl_tone3:": "👧🏽", +":girl_tone4:": "👧🏾", +":girl_tone5:": "👧🏿", +":man_tone1:": "👨🏻", +":man_tone2:": "👨🏼", +":man_tone3:": "👨🏽", +":man_tone4:": "👨🏾", +":man_tone5:": "👨🏿", +":woman_tone1:": "👩🏻", +":woman_tone2:": "👩🏼", +":woman_tone3:": "👩🏽", +":woman_tone4:": "👩🏾", +":woman_tone5:": "👩🏿", +":bride_with_veil_tone1:": "👰🏻", +":bride_with_veil_tone2:": "👰🏼", +":raised_back_of_hand_tone5:": "🤚🏿", +":back_of_hand_tone5:": "🤚🏿", +":bride_with_veil_tone3:": "👰🏽", +":bride_with_veil_tone4:": "👰🏾", +":bride_with_veil_tone5:": "👰🏿", +":person_with_blond_hair_tone1:": "👱🏻", +":person_with_blond_hair_tone2:": "👱🏼", +":person_with_blond_hair_tone3:": "👱🏽", +":person_with_blond_hair_tone4:": "👱🏾", +":person_with_blond_hair_tone5:": "👱🏿", +":man_with_gua_pi_mao_tone1:": "👲🏻", +":man_with_gua_pi_mao_tone2:": "👲🏼", +":man_with_gua_pi_mao_tone3:": "👲🏽", +":man_with_gua_pi_mao_tone4:": "👲🏾", +":man_with_gua_pi_mao_tone5:": "👲🏿", +":man_with_turban_tone1:": "👳🏻", +":man_with_turban_tone2:": "👳🏼", +":man_with_turban_tone3:": "👳🏽", +":man_with_turban_tone4:": "👳🏾", +":man_with_turban_tone5:": "👳🏿", +":older_man_tone1:": "👴🏻", +":older_man_tone2:": "👴🏼", +":older_man_tone3:": "👴🏽", +":older_man_tone4:": "👴🏾", +":older_man_tone5:": "👴🏿", +":older_woman_tone1:": "👵🏻", +":grandma_tone1:": "👵🏻", +":older_woman_tone2:": "👵🏼", +":grandma_tone2:": "👵🏼", +":older_woman_tone3:": "👵🏽", +":grandma_tone3:": "👵🏽", +":older_woman_tone4:": "👵🏾", +":grandma_tone4:": "👵🏾", +":older_woman_tone5:": "👵🏿", +":grandma_tone5:": "👵🏿", +":cop_tone1:": "👮🏻", +":cop_tone2:": "👮🏼", +":cop_tone3:": "👮🏽", +":cop_tone4:": "👮🏾", +":cop_tone5:": "👮🏿", +":construction_worker_tone1:": "👷🏻", +":construction_worker_tone2:": "👷🏼", +":construction_worker_tone3:": "👷🏽", +":construction_worker_tone4:": "👷🏾", +":construction_worker_tone5:": "👷🏿", +":princess_tone1:": "👸🏻", +":princess_tone2:": "👸🏼", +":princess_tone3:": "👸🏽", +":princess_tone4:": "👸🏾", +":cartwheel_tone1:": "🤸🏻", +":person_doing_cartwheel_tone1:": "🤸🏻", +":princess_tone5:": "👸🏿", +":guardsman_tone1:": "💂🏻", +":guardsman_tone2:": "💂🏼", +":cartwheel_tone2:": "🤸🏼", +":person_doing_cartwheel_tone2:": "🤸🏼", +":guardsman_tone3:": "💂🏽", +":guardsman_tone4:": "💂🏾", +":guardsman_tone5:": "💂🏿", +":cartwheel_tone3:": "🤸🏽", +":person_doing_cartwheel_tone3:": "🤸🏽", +":angel_tone1:": "👼🏻", +":angel_tone2:": "👼🏼", +":angel_tone3:": "👼🏽", +":angel_tone4:": "👼🏾", +":angel_tone5:": "👼🏿", +":bow_tone1:": "🙇🏻", +":bow_tone2:": "🙇🏼", +":bow_tone3:": "🙇🏽", +":bow_tone4:": "🙇🏾", +":bow_tone5:": "🙇🏿", +":information_desk_person_tone1:": "💁🏻", +":information_desk_person_tone2:": "💁🏼", +":information_desk_person_tone3:": "💁🏽", +":cartwheel_tone4:": "🤸🏾", +":person_doing_cartwheel_tone4:": "🤸🏾", +":information_desk_person_tone4:": "💁🏾", +":information_desk_person_tone5:": "💁🏿", +":no_good_tone1:": "🙅🏻", +":cartwheel_tone5:": "🤸🏿", +":person_doing_cartwheel_tone5:": "🤸🏿", +":no_good_tone2:": "🙅🏼", +":no_good_tone3:": "🙅🏽", +":no_good_tone4:": "🙅🏾", +":no_good_tone5:": "🙅🏿", +":ok_woman_tone1:": "🙆🏻", +":ok_woman_tone2:": "🙆🏼", +":ok_woman_tone3:": "🙆🏽", +":ok_woman_tone4:": "🙆🏾", +":ok_woman_tone5:": "🙆🏿", +":raising_hand_tone1:": "🙋🏻", +":raising_hand_tone2:": "🙋🏼", +":raising_hand_tone3:": "🙋🏽", +":raising_hand_tone4:": "🙋🏾", +":raising_hand_tone5:": "🙋🏿", +":person_with_pouting_face_tone1:": "🙎🏻", +":person_with_pouting_face_tone2:": "🙎🏼", +":person_with_pouting_face_tone3:": "🙎🏽", +":person_with_pouting_face_tone4:": "🙎🏾", +":person_with_pouting_face_tone5:": "🙎🏿", +":person_frowning_tone1:": "🙍🏻", +":person_frowning_tone2:": "🙍🏼", +":person_frowning_tone3:": "🙍🏽", +":person_frowning_tone4:": "🙍🏾", +":person_frowning_tone5:": "🙍🏿", +":massage_tone1:": "💆🏻", +":massage_tone2:": "💆🏼", +":massage_tone3:": "💆🏽", +":massage_tone4:": "💆🏾", +":massage_tone5:": "💆🏿", +":haircut_tone1:": "💇🏻", +":haircut_tone2:": "💇🏼", +":haircut_tone3:": "💇🏽", +":haircut_tone4:": "💇🏾", +":haircut_tone5:": "💇🏿", +":raised_hands_tone1:": "🙌🏻", +":raised_hands_tone2:": "🙌🏼", +":raised_hands_tone3:": "🙌🏽", +":raised_hands_tone4:": "🙌🏾", +":raised_hands_tone5:": "🙌🏿", +":clap_tone1:": "👏🏻", +":clap_tone2:": "👏🏼", +":clap_tone3:": "👏🏽", +":water_polo_tone1:": "🤽🏻", +":clap_tone4:": "👏🏾", +":clap_tone5:": "👏🏿", +":water_polo_tone2:": "🤽🏼", +":ear_tone1:": "👂🏻", +":ear_tone2:": "👂🏼", +":ear_tone3:": "👂🏽", +":ear_tone4:": "👂🏾", +":ear_tone5:": "👂🏿", +":nose_tone1:": "👃🏻", +":nose_tone2:": "👃🏼", +":nose_tone3:": "👃🏽", +":nose_tone4:": "👃🏾", +":nose_tone5:": "👃🏿", +":nail_care_tone1:": "💅🏻", +":nail_care_tone2:": "💅🏼", +":nail_care_tone3:": "💅🏽", +":nail_care_tone4:": "💅🏾", +":nail_care_tone5:": "💅🏿", +":wave_tone1:": "👋🏻", +":wave_tone2:": "👋🏼", +":wave_tone3:": "👋🏽", +":wave_tone4:": "👋🏾", +":wave_tone5:": "👋🏿", +":thumbsup_tone1:": "👍🏻", +":+1_tone1:": "👍🏻", +":thumbup_tone1:": "👍🏻", +":thumbsup_tone2:": "👍🏼", +":+1_tone2:": "👍🏼", +":thumbup_tone2:": "👍🏼", +":thumbsup_tone3:": "👍🏽", +":+1_tone3:": "👍🏽", +":thumbup_tone3:": "👍🏽", +":thumbsup_tone4:": "👍🏾", +":+1_tone4:": "👍🏾", +":thumbup_tone4:": "👍🏾", +":thumbsup_tone5:": "👍🏿", +":+1_tone5:": "👍🏿", +":thumbup_tone5:": "👍🏿", +":thumbsdown_tone1:": "👎🏻", +":1_tone1:": "👎🏻", +":thumbdown_tone1:": "👎🏻", +":thumbsdown_tone2:": "👎🏼", +":1_tone2:": "👎🏼", +":thumbdown_tone2:": "👎🏼", +":thumbsdown_tone3:": "👎🏽", +":1_tone3:": "👎🏽", +":thumbdown_tone3:": "👎🏽", +":thumbsdown_tone4:": "👎🏾", +":1_tone4:": "👎🏾", +":thumbdown_tone4:": "👎🏾", +":thumbsdown_tone5:": "👎🏿", +":1_tone5:": "👎🏿", +":thumbdown_tone5:": "👎🏿", +":point_up_tone1:": "☝🏻", +":point_up_tone2:": "☝🏼", +":point_up_tone3:": "☝🏽", +":point_up_tone4:": "☝🏾", +":point_up_tone5:": "☝🏿", +":point_up_2_tone1:": "👆🏻", +":point_up_2_tone2:": "👆🏼", +":point_up_2_tone3:": "👆🏽", +":point_up_2_tone4:": "👆🏾", +":point_up_2_tone5:": "👆🏿", +":point_down_tone1:": "👇🏻", +":point_down_tone2:": "👇🏼", +":point_down_tone3:": "👇🏽", +":point_down_tone4:": "👇🏾", +":point_down_tone5:": "👇🏿", +":point_left_tone1:": "👈🏻", +":point_left_tone2:": "👈🏼", +":point_left_tone3:": "👈🏽", +":point_left_tone4:": "👈🏾", +":point_left_tone5:": "👈🏿", +":point_right_tone1:": "👉🏻", +":point_right_tone2:": "👉🏼", +":point_right_tone3:": "👉🏽", +":point_right_tone4:": "👉🏾", +":point_right_tone5:": "👉🏿", +":ok_hand_tone1:": "👌🏻", +":ok_hand_tone2:": "👌🏼", +":water_polo_tone3:": "🤽🏽", +":ok_hand_tone3:": "👌🏽", +":ok_hand_tone4:": "👌🏾", +":water_polo_tone4:": "🤽🏾", +":ok_hand_tone5:": "👌🏿", +":v_tone1:": "✌🏻", +":v_tone2:": "✌🏼", +":v_tone3:": "✌🏽", +":v_tone4:": "✌🏾", +":v_tone5:": "✌🏿", +":punch_tone1:": "👊🏻", +":punch_tone2:": "👊🏼", +":punch_tone3:": "👊🏽", +":punch_tone4:": "👊🏾", +":punch_tone5:": "👊🏿", +":fist_tone1:": "✊🏻", +":fist_tone2:": "✊🏼", +":fist_tone3:": "✊🏽", +":fist_tone4:": "✊🏾", +":fist_tone5:": "✊🏿", +":raised_hand_tone1:": "✋🏻", +":raised_hand_tone2:": "✋🏼", +":raised_hand_tone3:": "✋🏽", +":raised_hand_tone4:": "✋🏾", +":raised_hand_tone5:": "✋🏿", +":muscle_tone1:": "💪🏻", +":muscle_tone2:": "💪🏼", +":muscle_tone3:": "💪🏽", +":muscle_tone4:": "💪🏾", +":muscle_tone5:": "💪🏿", +":open_hands_tone1:": "👐🏻", +":open_hands_tone2:": "👐🏼", +":open_hands_tone3:": "👐🏽", +":open_hands_tone4:": "👐🏾", +":open_hands_tone5:": "👐🏿", +":pray_tone1:": "🙏🏻", +":water_polo_tone5:": "🤽🏿", +":pray_tone2:": "🙏🏼", +":pray_tone3:": "🙏🏽", +":handball_tone1:": "🤾🏻", +":pray_tone4:": "🙏🏾", +":pray_tone5:": "🙏🏿", +":handball_tone2:": "🤾🏼", +":runner_tone1:": "🏃🏻", +":runner_tone2:": "🏃🏼", +":runner_tone3:": "🏃🏽", +":runner_tone4:": "🏃🏾", +":handball_tone3:": "🤾🏽", +":runner_tone5:": "🏃🏿", +":walking_tone1:": "🚶🏻", +":walking_tone2:": "🚶🏼", +":walking_tone3:": "🚶🏽", +":walking_tone4:": "🚶🏾", +":walking_tone5:": "🚶🏿", +":dancer_tone1:": "💃🏻", +":handball_tone4:": "🤾🏾", +":dancer_tone2:": "💃🏼", +":dancer_tone3:": "💃🏽", +":handball_tone5:": "🤾🏿", +":dancer_tone4:": "💃🏾", +":dancer_tone5:": "💃🏿", +":juggling_tone1:": "🤹🏻", +":juggler_tone1:": "🤹🏻", +":rowboat_tone1:": "🚣🏻", +":rowboat_tone2:": "🚣🏼", +":rowboat_tone3:": "🚣🏽", +":rowboat_tone4:": "🚣🏾", +":rowboat_tone5:": "🚣🏿", +":swimmer_tone1:": "🏊🏻", +":swimmer_tone2:": "🏊🏼", +":juggling_tone2:": "🤹🏼", +":juggler_tone2:": "🤹🏼", +":swimmer_tone3:": "🏊🏽", +":swimmer_tone4:": "🏊🏾", +":swimmer_tone5:": "🏊🏿", +":juggling_tone3:": "🤹🏽", +":juggler_tone3:": "🤹🏽", +":surfer_tone1:": "🏄🏻", +":surfer_tone2:": "🏄🏼", +":surfer_tone3:": "🏄🏽", +":surfer_tone4:": "🏄🏾", +":surfer_tone5:": "🏄🏿", +":bath_tone1:": "🛀🏻", +":bath_tone2:": "🛀🏼", +":juggling_tone4:": "🤹🏾", +":juggler_tone4:": "🤹🏾", +":bath_tone3:": "🛀🏽", +":bath_tone4:": "🛀🏾", +":bath_tone5:": "🛀🏿", +":juggling_tone5:": "🤹🏿", +":juggler_tone5:": "🤹🏿", +":bicyclist_tone1:": "🚴🏻", +":bicyclist_tone2:": "🚴🏼", +":bicyclist_tone3:": "🚴🏽", +":rainbow_flag:": "🏳🌈", +":gay_pride_flag:": "🏳🌈", +":bicyclist_tone4:": "🚴🏾", +":bicyclist_tone5:": "🚴🏿", +":mountain_bicyclist_tone1:": "🚵🏻", +":mountain_bicyclist_tone2:": "🚵🏼", +":mountain_bicyclist_tone3:": "🚵🏽", +":mountain_bicyclist_tone4:": "🚵🏾", +":mountain_bicyclist_tone5:": "🚵🏿", +":horse_racing_tone1:": "🏇🏻", +":horse_racing_tone2:": "🏇🏼", +":horse_racing_tone3:": "🏇🏽", +":horse_racing_tone4:": "🏇🏾", +":horse_racing_tone5:": "🏇🏿", +":writing_hand_tone1:": "✍🏻", +":writing_hand_tone2:": "✍🏼", +":writing_hand_tone3:": "✍🏽", +":writing_hand_tone4:": "✍🏾", +":writing_hand_tone5:": "✍🏿", +":hand_splayed_tone1:": "🖐🏻", +":raised_hand_with_fingers_splayed_tone1:": "🖐🏻", +":hand_splayed_tone2:": "🖐🏼", +":raised_hand_with_fingers_splayed_tone2:": "🖐🏼", +":hand_splayed_tone3:": "🖐🏽", +":raised_hand_with_fingers_splayed_tone3:": "🖐🏽", +":hand_splayed_tone4:": "🖐🏾", +":raised_hand_with_fingers_splayed_tone4:": "🖐🏾", +":hand_splayed_tone5:": "🖐🏿", +":raised_hand_with_fingers_splayed_tone5:": "🖐🏿", +":middle_finger_tone1:": "🖕🏻", +":reversed_hand_with_middle_finger_extended_tone1:": "🖕🏻", +":middle_finger_tone2:": "🖕🏼", +":reversed_hand_with_middle_finger_extended_tone2:": "🖕🏼", +":middle_finger_tone3:": "🖕🏽", +":reversed_hand_with_middle_finger_extended_tone3:": "🖕🏽", +":middle_finger_tone4:": "🖕🏾", +":reversed_hand_with_middle_finger_extended_tone4:": "🖕🏾", +":middle_finger_tone5:": "🖕🏿", +":reversed_hand_with_middle_finger_extended_tone5:": "🖕🏿", +":vulcan_tone1:": "🖖🏻", +":raised_hand_with_part_between_middle_and_ring_fingers_tone1:": "🖖🏻", +":vulcan_tone2:": "🖖🏼", +":raised_hand_with_part_between_middle_and_ring_fingers_tone2:": "🖖🏼", +":vulcan_tone3:": "🖖🏽", +":raised_hand_with_part_between_middle_and_ring_fingers_tone3:": "🖖🏽", +":vulcan_tone4:": "🖖🏾", +":raised_hand_with_part_between_middle_and_ring_fingers_tone4:": "🖖🏾", +":vulcan_tone5:": "🖖🏿", +":raised_hand_with_part_between_middle_and_ring_fingers_tone5:": "🖖🏿", +":family_mmb:": "👨‍👨‍👦", +":family_mmbb:": "👨‍👨‍👦‍👦", +":family_mmg:": "👨‍👨‍👧", +":family_mmgb:": "👨‍👨‍👧‍👦", +":family_mmgg:": "👨‍👨‍👧‍👧", +":family_mwbb:": "👨‍👩‍👧‍👦", +":family_mwg:": "👨‍👩‍👧", +":family_mwgb:": "👨‍👩‍👧‍👦", +":family_mwgg:": "👨‍👩‍👧‍👧", +":family_wwb:": "👩‍👩‍👦", +":family_wwbb:": "👩‍👩‍👦‍👦", +":family_wwg:": "👩‍👩‍👧", +":family_wwgb:": "👩‍👩‍👧‍👦", +":family_wwgg:": "👩‍👩‍👧‍👧", +":couple_ww:": "👭", +":couple_with_heart_ww:": "👩‍❤️‍👩", +":couple_mm:": "👬", +":couple_with_heart_mm:": "👨‍❤️‍👨", +":kiss_ww:": "👩‍❤️‍💋‍👩", +":couplekiss_ww:": "👩‍❤️‍💋‍👩", +":kiss_mm:": "👨‍❤️‍💋‍👨", +":couplekiss_mm:": "👨‍❤️‍💋‍👨", +":tone1:": "🏻", +":tone2:": "🏼", +":tone3:": "🏽", +":tone4:": "🏾", +":tone5:": "🏿", +":asterisk:": "ℍ", +":keycap_asterisk:": "ℍ", +":eject:": "⏏", +":eject_symbol:": "⏏", +":track_next:": "⏭", +":next_track:": "⏭", +":track_previous:": "⏮", +":previous_track:": "⏮", +":play_pause:": "⏯", +":eye_in_speech_bubble:": "👁🗨", +":stopwatch:": "⏱", +":timer:": "⏲", +":timer_clock:": "⏲", +":pause_button:": "⏸", +":double_vertical_bar:": "⏸", +":stop_button:": "⏹", +":record_button:": "⏺", +":umbrella2:": "☂", +":snowman2:": "☃", +":comet:": "☄", +":shamrock:": "☘", +":skull_crossbones:": "☠", +":skull_and_crossbones:": "☠", +":radioactive:": "☢", +":radioactive_sign:": "☢", +":biohazard:": "☣", +":biohazard_sign:": "☣", +":orthodox_cross:": "☦", +":star_and_crescent:": "☪", +":peace:": "☮", +":peace_symbol:": "☮", +":yin_yang:": "☯", +":wheel_of_dharma:": "☸", +":frowning2:": "☹", +":white_frowning_face:": "☹", +":hammer_pick:": "⚒", +":hammer_and_pick:": "⚒", +":crossed_swords:": "⚔", +":scales:": "⚖", +":alembic:": "⚗", +":gear:": "⚙", +":atom:": "⚛", +":atom_symbol:": "⚛", +":fleurdelis:": "⚜", +":coffin:": "⚰", +":urn:": "⚱", +":funeral_urn:": "⚱", +":thunder_cloud_rain:": "⛈", +":thunder_cloud_and_rain:": "⛈", +":pick:": "⛏", +":helmet_with_cross:": "⛑", +":helmet_with_white_cross:": "⛑", +":chains:": "⛓", +":shinto_shrine:": "⛩", +":mountain:": "⛰", +":beach_umbrella:": "⛱", +":umbrella_on_ground:": "⛱", +":ferry:": "⛴", +":skier:": "⛷", +":ice_skate:": "⛸", +":basketball_player:": "⛹", +":person_with_ball:": "⛹", +":star_of_david:": "✡", +":heart_exclamation:": "❣", +":heavy_heart_exclamation_mark_ornament:": "❣", +":white_sun_small_cloud:": "🌤", +":white_sun_with_small_cloud:": "🌤", +":white_sun_cloud:": "🌥", +":white_sun_behind_cloud:": "🌥", +":white_sun_rain_cloud:": "🌦", +":white_sun_behind_cloud_with_rain:": "🌦", +":mouse_three_button:": "🖱", +":three_button_mouse:": "🖱", +":santa_tone1:": "🎅🏻", +":santa_tone2:": "🎅🏼", +":santa_tone3:": "🎅🏽", +":santa_tone4:": "🎅🏾", +":santa_tone5:": "🎅🏿", +":metal_tone1:": "🤘🏻", +":sign_of_the_horns_tone1:": "🤘🏻", +":metal_tone2:": "🤘🏼", +":sign_of_the_horns_tone2:": "🤘🏼", +":metal_tone3:": "🤘🏽", +":sign_of_the_horns_tone3:": "🤘🏽", +":metal_tone4:": "🤘🏾", +":sign_of_the_horns_tone4:": "🤘🏾", +":metal_tone5:": "🤘🏿", +":sign_of_the_horns_tone5:": "🤘🏿", +":lifter_tone1:": "🏋🏻", +":weight_lifter_tone1:": "🏋🏻", +":lifter_tone2:": "🏋🏼", +":weight_lifter_tone2:": "🏋🏼", +":lifter_tone3:": "🏋🏽", +":weight_lifter_tone3:": "🏋🏽", +":lifter_tone4:": "🏋🏾", +":weight_lifter_tone4:": "🏋🏾", +":lifter_tone5:": "🏋🏿", +":weight_lifter_tone5:": "🏋🏿", +":basketball_player_tone1:": "⛹🏻", +":person_with_ball_tone1:": "⛹🏻", +":basketball_player_tone2:": "⛹🏼", +":person_with_ball_tone2:": "⛹🏼", +":basketball_player_tone3:": "⛹🏽", +":person_with_ball_tone3:": "⛹🏽", +":basketball_player_tone4:": "⛹🏾", +":person_with_ball_tone4:": "⛹🏾", +":basketball_player_tone5:": "⛹🏿", +":person_with_ball_tone5:": "⛹🏿", +":upside_down:": "🙃", +":upside_down_face:": "🙃", +":money_mouth:": "🤑", +":money_mouth_face:": "🤑", +":nerd:": "🤓", +":nerd_face:": "🤓", +":hugging:": "🤗", +":hugging_face:": "🤗", +":rolling_eyes:": "🙄", +":face_with_rolling_eyes:": "🙄", +":thinking:": "🤔", +":thinking_face:": "🤔", +":zipper_mouth:": "🤐", +":zipper_mouth_face:": "🤐", +":thermometer_face:": "🤒", +":face_with_thermometer:": "🤒", +":head_bandage:": "🤕", +":face_with_head_bandage:": "🤕", +":robot:": "🤖", +":robot_face:": "🤖", +":lion_face:": "🦁", +":lion:": "🦁", +":unicorn:": "🦄", +":unicorn_face:": "🦄", +":scorpion:": "🦂", +":crab:": "🦀", +":turkey:": "🦃", +":cheese:": "🧀", +":cheese_wedge:": "🧀", +":hotdog:": "🌭", +":hot_dog:": "🌭", +":taco:": "🌮", +":burrito:": "🌯", +":popcorn:": "🍿", +":champagne:": "🍾", +":bottle_with_popping_cork:": "🍾", +":bow_and_arrow:": "🏹", +":archery:": "🏹", +":amphora:": "🏺", +":place_of_worship:": "🛐", +":worship_symbol:": "🛐", +":kaaba:": "🕋", +":mosque:": "🕌", +":synagogue:": "🕍", +":menorah:": "🕎", +":prayer_beads:": "📿", +":cricket:": "🏏", +":cricket_bat_ball:": "🏏", +":volleyball:": "🏐", +":field_hockey:": "🏑", +":hockey:": "🏒", +":ping_pong:": "🏓", +":table_tennis:": "🏓", +":badminton:": "🏸", +":flag_ax:": "🇦🇽", +":ax:": "🇦🇽", +":flag_ta:": "🇹🇦", +":ta:": "🇹🇦", +":flag_io:": "🇮🇴", +":io:": "🇮🇴", +":flag_bq:": "🇧🇶", +":bq:": "🇧🇶", +":flag_cx:": "🇨🇽", +":cx:": "🇨🇽", +":flag_cc:": "🇨🇨", +":cc:": "🇨🇨", +":flag_gg:": "🇬🇬", +":gg:": "🇬🇬", +":flag_im:": "🇮🇲", +":im:": "🇮🇲", +":flag_yt:": "🇾🇹", +":yt:": "🇾🇹", +":flag_nf:": "🇳🇫", +":nf:": "🇳🇫", +":flag_pn:": "🇵🇳", +":pn:": "🇵🇳", +":flag_bl:": "🇧🇱", +":bl:": "🇧🇱", +":flag_pm:": "🇵🇲", +":pm:": "🇵🇲", +":flag_gs:": "🇬🇸", +":gs:": "🇬🇸", +":flag_tk:": "🇹🇰", +":tk:": "🇹🇰", +":flag_bv:": "🇧🇻", +":bv:": "🇧🇻", +":flag_hm:": "🇭🇲", +":hm:": "🇭🇲", +":flag_sj:": "🇸🇯", +":sj:": "🇸🇯", +":flag_um:": "🇺🇲", +":um:": "🇺🇲", +":flag_ic:": "🇮🇨", +":ic:": "🇮🇨", +":flag_ea:": "🇪🇦", +":ea:": "🇪🇦", +":flag_cp:": "🇨🇵", +":cp:": "🇨🇵", +":flag_dg:": "🇩🇬", +":dg:": "🇩🇬", +":flag_as:": "🇦🇸", +":as:": "🇦🇸", +":flag_aq:": "🇦🇶", +":aq:": "🇦🇶", +":flag_vg:": "🇻🇬", +":vg:": "🇻🇬", +":flag_ck:": "🇨🇰", +":ck:": "🇨🇰", +":flag_cw:": "🇨🇼", +":cw:": "🇨🇼", +":flag_eu:": "🇪🇺", +":eu:": "🇪🇺", +":flag_gf:": "🇬🇫", +":gf:": "🇬🇫", +":flag_tf:": "🇹🇫", +":tf:": "🇹🇫", +":flag_gp:": "🇬🇵", +":gp:": "🇬🇵", +":flag_mq:": "🇲🇶", +":mq:": "🇲🇶", +":flag_mp:": "🇲🇵", +":mp:": "🇲🇵", +":flag_re:": "🇷🇪", +":re:": "🇷🇪", +":flag_sx:": "🇸🇽", +":sx:": "🇸🇽", +":flag_ss:": "🇸🇸", +":ss:": "🇸🇸", +":flag_tc:": "🇹🇨", +":tc:": "🇹🇨", +":flag_mf:": "🇲🇫", +":mf:": "🇲🇫", +":spy_tone1:": "🕵🏻", +":sleuth_or_spy_tone1:": "🕵🏻", +":spy_tone2:": "🕵🏼", +":sleuth_or_spy_tone2:": "🕵🏼", +":spy_tone3:": "🕵🏽", +":sleuth_or_spy_tone3:": "🕵🏽", +":spy_tone4:": "🕵🏾", +":sleuth_or_spy_tone4:": "🕵🏾", +":spy_tone5:": "🕵🏿", +":sleuth_or_spy_tone5:": "🕵🏿", +":drum:": "🥁", +":drum_with_drumsticks:": "🥁", +":shrimp:": "🦐", +":squid:": "🦑", +":egg:": "🥚", +":milk:": "🥛", +":glass_of_milk:": "🥛", +":peanuts:": "🥜", +":shelled_peanut:": "🥜", +":kiwi:": "🥝", +":kiwifruit:": "🥝", +":pancakes:": "🥞", +":regional_indicator_w:": "🇼", +":regional_indicator_v:": "🇻", +":regional_indicator_u:": "🇺", +":regional_indicator_t:": "🇹", +":regional_indicator_s:": "🇸", +":regional_indicator_r:": "🇷", +":regional_indicator_q:": "🇶", +":regional_indicator_p:": "🇵", +":regional_indicator_o:": "🇴", +":regional_indicator_n:": "🇳", +":regional_indicator_m:": "🇲", +":regional_indicator_l:": "🇱", +":regional_indicator_k:": "🇰", +":regional_indicator_j:": "🇯", +":regional_indicator_i:": "🇮", +":regional_indicator_h:": "🇭", +":regional_indicator_g:": "🇬", +":regional_indicator_f:": "🇫", +":regional_indicator_e:": "🇪", +":regional_indicator_d:": "🇩", +":regional_indicator_c:": "🇨", +":regional_indicator_b:": "🇧", +":regional_indicator_a:": "🇦", +":digit_nine:": "9", +":digit_eight:": "8", +":digit_seven:": "7", +":digit_six:": "6", +":digit_five:": "5", +":digit_four:": "4", +":digit_three:": "3", +":digit_two:": "2", +":digit_one:": "1", +":digit_zero:": "0", +":men_with_bunny_ears_partying:": "👯", +":women_with_bunny_ears_partying:": "👯", +":snowboarder_tone1:": "🏂🏻", +":snowboarder_light_skin_tone:": "🏂🏻", +":man_golfing:": "🏌", +":man_golfing_tone1:": "🏌🏻", +":man_golfing_light_skin_tone:": "🏌🏻", +":man_golfing_tone2:": "🏌🏼", +":man_golfing_medium_light_skin_tone:": "🏌🏼", +":man_golfing_tone3:": "🏌🏽", +":man_golfing_medium_skin_tone:": "🏌🏽", +":man_golfing_tone4:": "🏌🏾", +":man_golfing_medium_dark_skin_tone:": "🏌🏾", +":man_golfing_tone5:": "🏌🏿", +":man_golfing_dark_skin_tone:": "🏌🏿", +":woman_golfing:": "🏌", +":woman_golfing_tone1:": "🏌🏻", +":woman_golfing_light_skin_tone:": "🏌🏻", +":woman_golfing_tone2:": "🏌🏼", +":woman_golfing_medium_light_skin_tone:": "🏌🏼", +":woman_golfing_tone3:": "🏌🏽", +":woman_golfing_medium_skin_tone:": "🏌🏽", +":woman_golfing_tone4:": "🏌🏾", +":woman_golfing_medium_dark_skin_tone:": "🏌🏾", +":woman_golfing_tone5:": "🏌🏿", +":woman_golfing_dark_skin_tone:": "🏌🏿", +":men_wrestling:": "🤼", +":women_wrestling:": "🤼", +":man_juggling_tone5:": "🤹🏿", +":man_juggling_dark_skin_tone:": "🤹🏿", +":man_juggling_tone4:": "🤹🏾", +":man_juggling_medium_dark_skin_tone:": "🤹🏾", +":man_juggling_tone3:": "🤹🏽", +":man_juggling_medium_skin_tone:": "🤹🏽", +":man_juggling_tone2:": "🤹🏼", +":man_juggling_medium_light_skin_tone:": "🤹🏼", +":man_juggling_tone1:": "🤹🏻", +":man_juggling_light_skin_tone:": "🤹🏻", +":man_juggling:": "🤹", +":woman_juggling_tone5:": "🤹🏿", +":woman_juggling_dark_skin_tone:": "🤹🏿", +":woman_juggling_tone4:": "🤹🏾", +":woman_juggling_medium_dark_skin_tone:": "🤹🏾", +":woman_juggling_tone3:": "🤹🏽", +":woman_juggling_medium_skin_tone:": "🤹🏽", +":woman_juggling_tone2:": "🤹🏼", +":woman_juggling_medium_light_skin_tone:": "🤹🏼", +":woman_juggling_tone1:": "🤹🏻", +":woman_juggling_light_skin_tone:": "🤹🏻", +":woman_juggling:": "🤹", +":man_playing_handball_tone5:": "🤾🏿", +":man_playing_handball_dark_skin_tone:": "🤾🏿", +":man_playing_handball_tone4:": "🤾🏾", +":man_playing_handball_medium_dark_skin_tone:": "🤾🏾", +":man_playing_handball_tone3:": "🤾🏽", +":man_playing_handball_medium_skin_tone:": "🤾🏽", +":man_playing_handball_tone2:": "🤾🏼", +":man_playing_handball_medium_light_skin_tone:": "🤾🏼", +":man_playing_handball_tone1:": "🤾🏻", +":man_playing_handball_light_skin_tone:": "🤾🏻", +":man_playing_handball:": "🤾", +":woman_playing_handball_tone5:": "🤾🏿", +":woman_playing_handball_dark_skin_tone:": "🤾🏿", +":woman_playing_handball_tone4:": "🤾🏾", +":woman_playing_handball_medium_dark_skin_tone:": "🤾🏾", +":woman_playing_handball_tone3:": "🤾🏽", +":woman_playing_handball_medium_skin_tone:": "🤾🏽", +":woman_playing_handball_tone2:": "🤾🏼", +":woman_playing_handball_medium_light_skin_tone:": "🤾🏼", +":woman_playing_handball_tone1:": "🤾🏻", +":woman_playing_handball_light_skin_tone:": "🤾🏻", +":woman_playing_handball:": "🤾", +":man_playing_water_polo_tone5:": "🤽🏿", +":man_playing_water_polo_dark_skin_tone:": "🤽🏿", +":man_playing_water_polo_tone4:": "🤽🏾", +":man_playing_water_polo_medium_dark_skin_tone:": "🤽🏾", +":man_playing_water_polo_tone3:": "🤽🏽", +":man_playing_water_polo_medium_skin_tone:": "🤽🏽", +":man_playing_water_polo_tone2:": "🤽🏼", +":man_playing_water_polo_medium_light_skin_tone:": "🤽🏼", +":man_playing_water_polo_tone1:": "🤽🏻", +":man_playing_water_polo_light_skin_tone:": "🤽🏻", +":man_playing_water_polo:": "🤽", +":woman_playing_water_polo_tone5:": "🤽🏿", +":woman_playing_water_polo_dark_skin_tone:": "🤽🏿", +":woman_playing_water_polo_tone4:": "🤽🏾", +":woman_playing_water_polo_medium_dark_skin_tone:": "🤽🏾", +":woman_playing_water_polo_tone3:": "🤽🏽", +":woman_playing_water_polo_medium_skin_tone:": "🤽🏽", +":woman_playing_water_polo_tone2:": "🤽🏼", +":woman_playing_water_polo_medium_light_skin_tone:": "🤽🏼", +":woman_playing_water_polo_tone1:": "🤽🏻", +":woman_playing_water_polo_light_skin_tone:": "🤽🏻", +":woman_playing_water_polo:": "🤽", +":man_cartwheeling_tone5:": "🤸🏿", +":man_cartwheeling_dark_skin_tone:": "🤸🏿", +":man_cartwheeling_tone4:": "🤸🏾", +":man_cartwheeling_medium_dark_skin_tone:": "🤸🏾", +":man_cartwheeling_tone3:": "🤸🏽", +":man_cartwheeling_medium_skin_tone:": "🤸🏽", +":man_cartwheeling_tone2:": "🤸🏼", +":man_cartwheeling_medium_light_skin_tone:": "🤸🏼", +":man_cartwheeling_tone1:": "🤸🏻", +":man_cartwheeling_light_skin_tone:": "🤸🏻", +":man_cartwheeling:": "🤸", +":woman_cartwheeling_tone5:": "🤸🏿", +":woman_cartwheeling_dark_skin_tone:": "🤸🏿", +":woman_cartwheeling_tone4:": "🤸🏾", +":woman_cartwheeling_medium_dark_skin_tone:": "🤸🏾", +":woman_cartwheeling_tone3:": "🤸🏽", +":woman_cartwheeling_medium_skin_tone:": "🤸🏽", +":woman_cartwheeling_tone2:": "🤸🏼", +":woman_cartwheeling_medium_light_skin_tone:": "🤸🏼", +":woman_cartwheeling_tone1:": "🤸🏻", +":woman_cartwheeling_light_skin_tone:": "🤸🏻", +":woman_cartwheeling:": "🤸", +":man_walking_tone5:": "🚶🏿", +":man_walking_dark_skin_tone:": "🚶🏿", +":man_walking_tone4:": "🚶🏾", +":man_walking_medium_dark_skin_tone:": "🚶🏾", +":man_walking_tone3:": "🚶🏽", +":man_walking_medium_skin_tone:": "🚶🏽", +":man_walking_tone2:": "🚶🏼", +":man_walking_medium_light_skin_tone:": "🚶🏼", +":man_walking_tone1:": "🚶🏻", +":man_walking_light_skin_tone:": "🚶🏻", +":man_walking:": "🚶", +":woman_walking_tone5:": "🚶🏿", +":woman_walking_dark_skin_tone:": "🚶🏿", +":woman_walking_tone4:": "🚶🏾", +":woman_walking_medium_dark_skin_tone:": "🚶🏾", +":woman_walking_tone3:": "🚶🏽", +":woman_walking_medium_skin_tone:": "🚶🏽", +":woman_walking_tone2:": "🚶🏼", +":woman_walking_medium_light_skin_tone:": "🚶🏼", +":woman_walking_tone1:": "🚶🏻", +":woman_walking_light_skin_tone:": "🚶🏻", +":woman_walking:": "🚶", +":man_mountain_biking_tone5:": "🚵🏿", +":man_mountain_biking_dark_skin_tone:": "🚵🏿", +":man_mountain_biking_tone4:": "🚵🏾", +":man_mountain_biking_medium_dark_skin_tone:": "🚵🏾", +":man_mountain_biking_tone3:": "🚵🏽", +":man_mountain_biking_medium_skin_tone:": "🚵🏽", +":man_mountain_biking_tone2:": "🚵🏼", +":man_mountain_biking_medium_light_skin_tone:": "🚵🏼", +":man_mountain_biking_tone1:": "🚵🏻", +":man_mountain_biking_light_skin_tone:": "🚵🏻", +":man_mountain_biking:": "🚵", +":woman_mountain_biking_tone5:": "🚵🏿", +":woman_mountain_biking_dark_skin_tone:": "🚵🏿", +":woman_mountain_biking_tone4:": "🚵🏾", +":woman_mountain_biking_medium_dark_skin_tone:": "🚵🏾", +":woman_mountain_biking_tone3:": "🚵🏽", +":woman_mountain_biking_medium_skin_tone:": "🚵🏽", +":woman_mountain_biking_tone2:": "🚵🏼", +":woman_mountain_biking_medium_light_skin_tone:": "🚵🏼", +":woman_mountain_biking_tone1:": "🚵🏻", +":woman_mountain_biking_light_skin_tone:": "🚵🏻", +":woman_mountain_biking:": "🚵", +":man_biking_tone5:": "🚴🏿", +":man_biking_dark_skin_tone:": "🚴🏿", +":man_biking_tone4:": "🚴🏾", +":man_biking_medium_dark_skin_tone:": "🚴🏾", +":man_biking_tone3:": "🚴🏽", +":man_biking_medium_skin_tone:": "🚴🏽", +":man_biking_tone2:": "🚴🏼", +":man_biking_medium_light_skin_tone:": "🚴🏼", +":man_biking_tone1:": "🚴🏻", +":man_biking_light_skin_tone:": "🚴🏻", +":man_biking:": "🚴", +":woman_biking_tone5:": "🚴🏿", +":woman_biking_dark_skin_tone:": "🚴🏿", +":woman_biking_tone4:": "🚴🏾", +":woman_biking_medium_dark_skin_tone:": "🚴🏾", +":woman_biking_tone3:": "🚴🏽", +":woman_biking_medium_skin_tone:": "🚴🏽", +":woman_biking_tone2:": "🚴🏼", +":woman_biking_medium_light_skin_tone:": "🚴🏼", +":woman_biking_tone1:": "🚴🏻", +":woman_biking_light_skin_tone:": "🚴🏻", +":woman_biking:": "🚴", +":man_rowing_boat_tone5:": "🚣🏿", +":man_rowing_boat_dark_skin_tone:": "🚣🏿", +":man_rowing_boat_tone4:": "🚣🏾", +":man_rowing_boat_medium_dark_skin_tone:": "🚣🏾", +":man_rowing_boat_tone3:": "🚣🏽", +":man_rowing_boat_medium_skin_tone:": "🚣🏽", +":man_rowing_boat_tone2:": "🚣🏼", +":man_rowing_boat_medium_light_skin_tone:": "🚣🏼", +":man_rowing_boat_tone1:": "🚣🏻", +":man_rowing_boat_light_skin_tone:": "🚣🏻", +":man_rowing_boat:": "🚣", +":woman_rowing_boat_tone5:": "🚣🏿", +":woman_rowing_boat_dark_skin_tone:": "🚣🏿", +":woman_rowing_boat_tone4:": "🚣🏾", +":woman_rowing_boat_medium_dark_skin_tone:": "🚣🏾", +":woman_rowing_boat_tone3:": "🚣🏽", +":woman_rowing_boat_medium_skin_tone:": "🚣🏽", +":woman_rowing_boat_tone2:": "🚣🏼", +":woman_rowing_boat_medium_light_skin_tone:": "🚣🏼", +":woman_rowing_boat_tone1:": "🚣🏻", +":woman_rowing_boat_light_skin_tone:": "🚣🏻", +":woman_rowing_boat:": "🚣", +":man_lifting_weights_tone5:": "🏋🏿", +":man_lifting_weights_dark_skin_tone:": "🏋🏿", +":man_lifting_weights_tone4:": "🏋🏾", +":man_lifting_weights_medium_dark_skin_tone:": "🏋🏾", +":man_lifting_weights_tone3:": "🏋🏽", +":man_lifting_weights_medium_skin_tone:": "🏋🏽", +":man_lifting_weights_tone2:": "🏋🏼", +":man_lifting_weights_medium_light_skin_tone:": "🏋🏼", +":man_lifting_weights_tone1:": "🏋🏻", +":man_lifting_weights_light_skin_tone:": "🏋🏻", +":man_lifting_weights:": "🏋", +":woman_lifting_weights_tone5:": "🏋🏿", +":woman_lifting_weights_dark_skin_tone:": "🏋🏿", +":woman_lifting_weights_tone4:": "🏋🏾", +":woman_lifting_weights_medium_dark_skin_tone:": "🏋🏾", +":woman_lifting_weights_tone3:": "🏋🏽", +":woman_lifting_weights_medium_skin_tone:": "🏋🏽", +":woman_lifting_weights_tone2:": "🏋🏼", +":woman_lifting_weights_medium_light_skin_tone:": "🏋🏼", +":woman_lifting_weights_tone1:": "🏋🏻", +":woman_lifting_weights_light_skin_tone:": "🏋🏻", +":woman_lifting_weights:": "🏋", +":man_swimming_tone5:": "🏊🏿", +":man_swimming_dark_skin_tone:": "🏊🏿", +":man_swimming_tone4:": "🏊🏾", +":man_swimming_medium_dark_skin_tone:": "🏊🏾", +":man_swimming_tone3:": "🏊🏽", +":man_swimming_medium_skin_tone:": "🏊🏽", +":man_swimming_tone2:": "🏊🏼", +":man_swimming_medium_light_skin_tone:": "🏊🏼", +":man_swimming_tone1:": "🏊🏻", +":man_swimming_light_skin_tone:": "🏊🏻", +":man_swimming:": "🏊", +":woman_swimming_tone5:": "🏊🏿", +":woman_swimming_dark_skin_tone:": "🏊🏿", +":woman_swimming_tone4:": "🏊🏾", +":woman_swimming_medium_dark_skin_tone:": "🏊🏾", +":woman_swimming_tone3:": "🏊🏽", +":woman_swimming_medium_skin_tone:": "🏊🏽", +":woman_swimming_tone2:": "🏊🏼", +":woman_swimming_medium_light_skin_tone:": "🏊🏼", +":woman_swimming_tone1:": "🏊🏻", +":woman_swimming_light_skin_tone:": "🏊🏻", +":woman_swimming:": "🏊", +":man_surfing_tone5:": "🏄🏿", +":man_surfing_dark_skin_tone:": "🏄🏿", +":man_surfing_tone4:": "🏄🏾", +":man_surfing_medium_dark_skin_tone:": "🏄🏾", +":man_surfing_tone3:": "🏄🏽", +":man_surfing_medium_skin_tone:": "🏄🏽", +":man_surfing_tone2:": "🏄🏼", +":man_surfing_medium_light_skin_tone:": "🏄🏼", +":man_surfing_tone1:": "🏄🏻", +":man_surfing_light_skin_tone:": "🏄🏻", +":man_surfing:": "🏄", +":woman_surfing_tone5:": "🏄🏿", +":woman_surfing_dark_skin_tone:": "🏄🏿", +":woman_surfing_tone4:": "🏄🏾", +":woman_surfing_medium_dark_skin_tone:": "🏄🏾", +":woman_surfing_tone3:": "🏄🏽", +":woman_surfing_medium_skin_tone:": "🏄🏽", +":woman_surfing_tone2:": "🏄🏼", +":woman_surfing_medium_light_skin_tone:": "🏄🏼", +":woman_surfing_tone1:": "🏄🏻", +":woman_surfing_light_skin_tone:": "🏄🏻", +":woman_surfing:": "🏄", +":man_running_tone5:": "🏃🏿", +":man_running_dark_skin_tone:": "🏃🏿", +":man_running_tone4:": "🏃🏾", +":man_running_medium_dark_skin_tone:": "🏃🏾", +":man_running_tone3:": "🏃🏽", +":man_running_medium_skin_tone:": "🏃🏽", +":man_running_tone2:": "🏃🏼", +":man_running_medium_light_skin_tone:": "🏃🏼", +":man_running_tone1:": "🏃🏻", +":man_running_light_skin_tone:": "🏃🏻", +":man_running:": "🏃", +":woman_running_tone5:": "🏃🏿", +":woman_running_dark_skin_tone:": "🏃🏿", +":woman_running_tone4:": "🏃🏾", +":woman_running_medium_dark_skin_tone:": "🏃🏾", +":woman_running_tone3:": "🏃🏽", +":woman_running_medium_skin_tone:": "🏃🏽", +":woman_running_tone2:": "🏃🏼", +":woman_running_medium_light_skin_tone:": "🏃🏼", +":woman_running_tone1:": "🏃🏻", +":woman_running_light_skin_tone:": "🏃🏻", +":woman_running:": "🏃", +":man_bouncing_ball_tone5:": "𓢞", +":man_bouncing_ball_dark_skin_tone:": "𓢞", +":man_bouncing_ball_tone4:": "𒢞", +":man_bouncing_ball_medium_dark_skin_tone:": "𒢞", +":man_bouncing_ball_tone3:": "𑢞", +":man_bouncing_ball_medium_skin_tone:": "𑢞", +":man_bouncing_ball_tone2:": "𐢞", +":man_bouncing_ball_medium_light_skin_tone:": "𐢞", +":man_bouncing_ball_tone1:": "", +":man_bouncing_ball_light_skin_tone:": "", +":man_bouncing_ball:": "䴻", +":woman_bouncing_ball_tone5:": "𓢜", +":woman_bouncing_ball_dark_skin_tone:": "𓢜", +":woman_bouncing_ball_tone4:": "𒢜", +":woman_bouncing_ball_medium_dark_skin_tone:": "𒢜", +":woman_bouncing_ball_tone3:": "𑢜", +":woman_bouncing_ball_medium_skin_tone:": "𑢜", +":woman_bouncing_ball_tone2:": "𐢜", +":woman_bouncing_ball_medium_light_skin_tone:": "𐢜", +":woman_bouncing_ball_tone1:": "", +":woman_bouncing_ball_light_skin_tone:": "", +":woman_bouncing_ball:": "䴹", +":man_shrugging_tone5:": "🤷🏿", +":man_shrugging_dark_skin_tone:": "🤷🏿", +":man_shrugging_tone4:": "🤷🏾", +":man_shrugging_medium_dark_skin_tone:": "🤷🏾", +":man_shrugging_tone3:": "🤷🏽", +":man_shrugging_medium_skin_tone:": "🤷🏽", +":man_shrugging_tone2:": "🤷🏼", +":man_shrugging_medium_light_skin_tone:": "🤷🏼", +":man_shrugging_tone1:": "🤷🏻", +":man_shrugging_light_skin_tone:": "🤷🏻", +":man_shrugging:": "🤷", +":woman_shrugging_tone5:": "🤷🏿", +":woman_shrugging_dark_skin_tone:": "🤷🏿", +":woman_shrugging_tone4:": "🤷🏾", +":woman_shrugging_medium_dark_skin_tone:": "🤷🏾", +":woman_shrugging_tone3:": "🤷🏽", +":woman_shrugging_medium_skin_tone:": "🤷🏽", +":woman_shrugging_tone2:": "🤷🏼", +":woman_shrugging_medium_light_skin_tone:": "🤷🏼", +":woman_shrugging_tone1:": "🤷🏻", +":woman_shrugging_light_skin_tone:": "🤷🏻", +":woman_shrugging:": "🤷", +":man_facepalming_tone5:": "🤦🏿", +":man_facepalming_dark_skin_tone:": "🤦🏿", +":man_facepalming_tone4:": "🤦🏾", +":man_facepalming_medium_dark_skin_tone:": "🤦🏾", +":man_facepalming_tone3:": "🤦🏽", +":man_facepalming_medium_skin_tone:": "🤦🏽", +":man_facepalming_tone2:": "🤦🏼", +":man_facepalming_medium_light_skin_tone:": "🤦🏼", +":man_facepalming_tone1:": "🤦🏻", +":man_facepalming_light_skin_tone:": "🤦🏻", +":man_facepalming:": "🤦", +":woman_facepalming_tone5:": "🤦🏿", +":woman_facepalming_dark_skin_tone:": "🤦🏿", +":woman_facepalming_tone4:": "🤦🏾", +":woman_facepalming_medium_dark_skin_tone:": "🤦🏾", +":woman_facepalming_tone3:": "🤦🏽", +":woman_facepalming_medium_skin_tone:": "🤦🏽", +":woman_facepalming_tone2:": "🤦🏼", +":woman_facepalming_medium_light_skin_tone:": "🤦🏼", +":woman_facepalming_tone1:": "🤦🏻", +":woman_facepalming_light_skin_tone:": "🤦🏻", +":woman_facepalming:": "🤦", +":man_pouting_tone5:": "🙎🏿", +":man_pouting_dark_skin_tone:": "🙎🏿", +":man_pouting_tone4:": "🙎🏾", +":man_pouting_medium_dark_skin_tone:": "🙎🏾", +":man_pouting_tone3:": "🙎🏽", +":man_pouting_medium_skin_tone:": "🙎🏽", +":man_pouting_tone2:": "🙎🏼", +":man_pouting_medium_light_skin_tone:": "🙎🏼", +":man_pouting_tone1:": "🙎🏻", +":man_pouting_light_skin_tone:": "🙎🏻", +":man_pouting:": "🙎", +":woman_pouting_tone5:": "🙎🏿", +":woman_pouting_dark_skin_tone:": "🙎🏿", +":woman_pouting_tone4:": "🙎🏾", +":woman_pouting_medium_dark_skin_tone:": "🙎🏾", +":woman_pouting_tone3:": "🙎🏽", +":woman_pouting_medium_skin_tone:": "🙎🏽", +":woman_pouting_tone2:": "🙎🏼", +":woman_pouting_medium_light_skin_tone:": "🙎🏼", +":woman_pouting_tone1:": "🙎🏻", +":woman_pouting_light_skin_tone:": "🙎🏻", +":woman_pouting:": "🙎", +":man_frowning_tone5:": "🙍🏿", +":man_frowning_dark_skin_tone:": "🙍🏿", +":man_frowning_tone4:": "🙍🏾", +":man_frowning_medium_dark_skin_tone:": "🙍🏾", +":man_frowning_tone3:": "🙍🏽", +":man_frowning_medium_skin_tone:": "🙍🏽", +":man_frowning_tone2:": "🙍🏼", +":man_frowning_medium_light_skin_tone:": "🙍🏼", +":man_frowning_tone1:": "🙍🏻", +":man_frowning_light_skin_tone:": "🙍🏻", +":man_frowning:": "🙍", +":woman_frowning_tone5:": "🙍🏿", +":woman_frowning_dark_skin_tone:": "🙍🏿", +":woman_frowning_tone4:": "🙍🏾", +":woman_frowning_medium_dark_skin_tone:": "🙍🏾", +":woman_frowning_tone3:": "🙍🏽", +":woman_frowning_medium_skin_tone:": "🙍🏽", +":woman_frowning_tone2:": "🙍🏼", +":woman_frowning_medium_light_skin_tone:": "🙍🏼", +":woman_frowning_tone1:": "🙍🏻", +":woman_frowning_light_skin_tone:": "🙍🏻", +":woman_frowning:": "🙍", +":man_raising_hand_tone5:": "🙋🏿", +":man_raising_hand_dark_skin_tone:": "🙋🏿", +":man_raising_hand_tone4:": "🙋🏾", +":man_raising_hand_medium_dark_skin_tone:": "🙋🏾", +":man_raising_hand_tone3:": "🙋🏽", +":man_raising_hand_medium_skin_tone:": "🙋🏽", +":man_raising_hand_tone2:": "🙋🏼", +":man_raising_hand_medium_light_skin_tone:": "🙋🏼", +":man_raising_hand_tone1:": "🙋🏻", +":man_raising_hand_light_skin_tone:": "🙋🏻", +":man_raising_hand:": "🙋", +":woman_raising_hand_tone5:": "🙋🏿", +":woman_raising_hand_dark_skin_tone:": "🙋🏿", +":woman_raising_hand_tone4:": "🙋🏾", +":woman_raising_hand_medium_dark_skin_tone:": "🙋🏾", +":woman_raising_hand_tone3:": "🙋🏽", +":woman_raising_hand_medium_skin_tone:": "🙋🏽", +":woman_raising_hand_tone2:": "🙋🏼", +":woman_raising_hand_medium_light_skin_tone:": "🙋🏼", +":woman_raising_hand_tone1:": "🙋🏻", +":woman_raising_hand_light_skin_tone:": "🙋🏻", +":woman_raising_hand:": "🙋", +":man_bowing_tone5:": "🙇🏿", +":man_bowing_dark_skin_tone:": "🙇🏿", +":man_bowing_tone4:": "🙇🏾", +":man_bowing_medium_dark_skin_tone:": "🙇🏾", +":man_bowing_tone3:": "🙇🏽", +":man_bowing_medium_skin_tone:": "🙇🏽", +":man_bowing_tone2:": "🙇🏼", +":man_bowing_medium_light_skin_tone:": "🙇🏼", +":man_bowing_tone1:": "🙇🏻", +":man_bowing_light_skin_tone:": "🙇🏻", +":man_bowing:": "🙇", +":woman_bowing_tone5:": "🙇🏿", +":woman_bowing_dark_skin_tone:": "🙇🏿", +":woman_bowing_tone4:": "🙇🏾", +":woman_bowing_medium_dark_skin_tone:": "🙇🏾", +":woman_bowing_tone3:": "🙇🏽", +":woman_bowing_medium_skin_tone:": "🙇🏽", +":woman_bowing_tone2:": "🙇🏼", +":woman_bowing_medium_light_skin_tone:": "🙇🏼", +":woman_bowing_tone1:": "🙇🏻", +":woman_bowing_light_skin_tone:": "🙇🏻", +":woman_bowing:": "🙇", +":man_gesturing_ok_tone5:": "🙆🏿", +":man_gesturing_ok_dark_skin_tone:": "🙆🏿", +":man_gesturing_ok_tone4:": "🙆🏾", +":man_gesturing_ok_medium_dark_skin_tone:": "🙆🏾", +":man_gesturing_ok_tone3:": "🙆🏽", +":man_gesturing_ok_medium_skin_tone:": "🙆🏽", +":man_gesturing_ok_tone2:": "🙆🏼", +":man_gesturing_ok_medium_light_skin_tone:": "🙆🏼", +":man_gesturing_ok_tone1:": "🙆🏻", +":man_gesturing_ok_light_skin_tone:": "🙆🏻", +":man_gesturing_ok:": "🙆", +":woman_gesturing_ok_tone5:": "🙆🏿", +":woman_gesturing_ok_dark_skin_tone:": "🙆🏿", +":woman_gesturing_ok_tone4:": "🙆🏾", +":woman_gesturing_ok_medium_dark_skin_tone:": "🙆🏾", +":woman_gesturing_ok_tone3:": "🙆🏽", +":woman_gesturing_ok_medium_skin_tone:": "🙆🏽", +":woman_gesturing_ok_tone2:": "🙆🏼", +":woman_gesturing_ok_medium_light_skin_tone:": "🙆🏼", +":woman_gesturing_ok_tone1:": "🙆🏻", +":woman_gesturing_ok_light_skin_tone:": "🙆🏻", +":woman_gesturing_ok:": "🙆", +":man_gesturing_no_tone5:": "🙅🏿", +":man_gesturing_no_dark_skin_tone:": "🙅🏿", +":man_gesturing_no_tone4:": "🙅🏾", +":man_gesturing_no_medium_dark_skin_tone:": "🙅🏾", +":man_gesturing_no_tone3:": "🙅🏽", +":man_gesturing_no_medium_skin_tone:": "🙅🏽", +":man_gesturing_no_tone2:": "🙅🏼", +":man_gesturing_no_medium_light_skin_tone:": "🙅🏼", +":man_gesturing_no_tone1:": "🙅🏻", +":man_gesturing_no_light_skin_tone:": "🙅🏻", +":man_gesturing_no:": "🙅", +":woman_gesturing_no_tone5:": "🙅🏿", +":woman_gesturing_no_dark_skin_tone:": "🙅🏿", +":woman_gesturing_no_tone4:": "🙅🏾", +":woman_gesturing_no_medium_dark_skin_tone:": "🙅🏾", +":woman_gesturing_no_tone3:": "🙅🏽", +":woman_gesturing_no_medium_skin_tone:": "🙅🏽", +":woman_gesturing_no_tone2:": "🙅🏼", +":woman_gesturing_no_medium_light_skin_tone:": "🙅🏼", +":woman_gesturing_no_tone1:": "🙅🏻", +":woman_gesturing_no_light_skin_tone:": "🙅🏻", +":woman_gesturing_no:": "🙅", +":man_getting_haircut_tone5:": "💇🏿", +":man_getting_haircut_dark_skin_tone:": "💇🏿", +":man_getting_haircut_tone4:": "💇🏾", +":man_getting_haircut_medium_dark_skin_tone:": "💇🏾", +":man_getting_haircut_tone3:": "💇🏽", +":man_getting_haircut_medium_skin_tone:": "💇🏽", +":man_getting_haircut_tone2:": "💇🏼", +":man_getting_haircut_medium_light_skin_tone:": "💇🏼", +":man_getting_haircut_tone1:": "💇🏻", +":man_getting_haircut_light_skin_tone:": "💇🏻", +":man_getting_haircut:": "💇", +":woman_getting_haircut_tone5:": "💇🏿", +":woman_getting_haircut_dark_skin_tone:": "💇🏿", +":woman_getting_haircut_tone4:": "💇🏾", +":woman_getting_haircut_medium_dark_skin_tone:": "💇🏾", +":woman_getting_haircut_tone3:": "💇🏽", +":woman_getting_haircut_medium_skin_tone:": "💇🏽", +":woman_getting_haircut_tone2:": "💇🏼", +":woman_getting_haircut_medium_light_skin_tone:": "💇🏼", +":woman_getting_haircut_tone1:": "💇🏻", +":woman_getting_haircut_light_skin_tone:": "💇🏻", +":woman_getting_haircut:": "💇", +":man_getting_face_massage_tone5:": "💆🏿", +":man_getting_face_massage_dark_skin_tone:": "💆🏿", +":man_getting_face_massage_tone4:": "💆🏾", +":man_getting_face_massage_medium_dark_skin_tone:": "💆🏾", +":man_getting_face_massage_tone3:": "💆🏽", +":man_getting_face_massage_medium_skin_tone:": "💆🏽", +":man_getting_face_massage_tone2:": "💆🏼", +":man_getting_face_massage_medium_light_skin_tone:": "💆🏼", +":man_getting_face_massage_tone1:": "💆🏻", +":man_getting_face_massage_light_skin_tone:": "💆🏻", +":man_getting_face_massage:": "💆", +":woman_getting_face_massage_tone5:": "💆🏿", +":woman_getting_face_massage_dark_skin_tone:": "💆🏿", +":woman_getting_face_massage_tone4:": "💆🏾", +":woman_getting_face_massage_medium_dark_skin_tone:": "💆🏾", +":woman_getting_face_massage_tone3:": "💆🏽", +":woman_getting_face_massage_medium_skin_tone:": "💆🏽", +":woman_getting_face_massage_tone2:": "💆🏼", +":woman_getting_face_massage_medium_light_skin_tone:": "💆🏼", +":woman_getting_face_massage_tone1:": "💆🏻", +":woman_getting_face_massage_light_skin_tone:": "💆🏻", +":woman_getting_face_massage:": "💆", +":man_tipping_hand_tone5:": "💁🏿", +":man_tipping_hand_dark_skin_tone:": "💁🏿", +":man_tipping_hand_tone4:": "💁🏾", +":man_tipping_hand_medium_dark_skin_tone:": "💁🏾", +":man_tipping_hand_tone3:": "💁🏽", +":man_tipping_hand_medium_skin_tone:": "💁🏽", +":man_tipping_hand_tone2:": "💁🏼", +":man_tipping_hand_medium_light_skin_tone:": "💁🏼", +":man_tipping_hand_tone1:": "💁🏻", +":man_tipping_hand_light_skin_tone:": "💁🏻", +":man_tipping_hand:": "💁", +":woman_tipping_hand_tone5:": "💁🏿", +":woman_tipping_hand_dark_skin_tone:": "💁🏿", +":woman_tipping_hand_tone4:": "💁🏾", +":woman_tipping_hand_medium_dark_skin_tone:": "💁🏾", +":woman_tipping_hand_tone3:": "💁🏽", +":woman_tipping_hand_medium_skin_tone:": "💁🏽", +":woman_tipping_hand_tone2:": "💁🏼", +":woman_tipping_hand_medium_light_skin_tone:": "💁🏼", +":woman_tipping_hand_tone1:": "💁🏻", +":woman_tipping_hand_light_skin_tone:": "💁🏻", +":woman_tipping_hand:": "💁", +":blondhaired_man_tone5:": "👱🏿", +":blondhaired_man_dark_skin_tone:": "👱🏿", +":blondhaired_man_tone4:": "👱🏾", +":blondhaired_man_medium_dark_skin_tone:": "👱🏾", +":blondhaired_man_tone3:": "👱🏽", +":blondhaired_man_medium_skin_tone:": "👱🏽", +":blondhaired_man_tone2:": "👱🏼", +":blondhaired_man_medium_light_skin_tone:": "👱🏼", +":blondhaired_man_tone1:": "👱🏻", +":blondhaired_man_light_skin_tone:": "👱🏻", +":blondhaired_man:": "👱", +":blondhaired_woman_tone5:": "👱🏿", +":blondhaired_woman_dark_skin_tone:": "👱🏿", +":blondhaired_woman_tone4:": "👱🏾", +":blondhaired_woman_medium_dark_skin_tone:": "👱🏾", +":blondhaired_woman_tone3:": "👱🏽", +":blondhaired_woman_medium_skin_tone:": "👱🏽", +":blondhaired_woman_tone2:": "👱🏼", +":blondhaired_woman_medium_light_skin_tone:": "👱🏼", +":blondhaired_woman_tone1:": "👱🏻", +":blondhaired_woman_light_skin_tone:": "👱🏻", +":blondhaired_woman:": "👱", +":man_wearing_turban_tone5:": "👳🏿", +":man_wearing_turban_dark_skin_tone:": "👳🏿", +":man_wearing_turban_tone4:": "👳🏾", +":man_wearing_turban_medium_dark_skin_tone:": "👳🏾", +":man_wearing_turban_tone3:": "👳🏽", +":man_wearing_turban_medium_skin_tone:": "👳🏽", +":man_wearing_turban_tone2:": "👳🏼", +":man_wearing_turban_medium_light_skin_tone:": "👳🏼", +":man_wearing_turban_tone1:": "👳🏻", +":man_wearing_turban_light_skin_tone:": "👳🏻", +":man_wearing_turban:": "👳", +":woman_wearing_turban_tone5:": "👳🏿", +":woman_wearing_turban_dark_skin_tone:": "👳🏿", +":woman_wearing_turban_tone4:": "👳🏾", +":woman_wearing_turban_medium_dark_skin_tone:": "👳🏾", +":woman_wearing_turban_tone3:": "👳🏽", +":woman_wearing_turban_medium_skin_tone:": "👳🏽", +":woman_wearing_turban_tone2:": "👳🏼", +":woman_wearing_turban_medium_light_skin_tone:": "👳🏼", +":woman_wearing_turban_tone1:": "👳🏻", +":woman_wearing_turban_light_skin_tone:": "👳🏻", +":woman_wearing_turban:": "👳", +":man_guard_tone5:": "💂🏿", +":man_guard_dark_skin_tone:": "💂🏿", +":man_guard_tone4:": "💂🏾", +":man_guard_medium_dark_skin_tone:": "💂🏾", +":man_guard_tone3:": "💂🏽", +":man_guard_medium_skin_tone:": "💂🏽", +":man_guard_tone2:": "💂🏼", +":man_guard_medium_light_skin_tone:": "💂🏼", +":man_guard_tone1:": "💂🏻", +":man_guard_light_skin_tone:": "💂🏻", +":man_guard:": "💂", +":woman_guard_tone5:": "💂🏿", +":woman_guard_dark_skin_tone:": "💂🏿", +":woman_guard_tone4:": "💂🏾", +":woman_guard_medium_dark_skin_tone:": "💂🏾", +":woman_guard_tone3:": "💂🏽", +":woman_guard_medium_skin_tone:": "💂🏽", +":woman_guard_tone2:": "💂🏼", +":woman_guard_medium_light_skin_tone:": "💂🏼", +":woman_guard_tone1:": "💂🏻", +":woman_guard_light_skin_tone:": "💂🏻", +":woman_guard:": "💂", +":man_detective_tone5:": "🕵🏿", +":man_detective_dark_skin_tone:": "🕵🏿", +":man_detective_tone4:": "🕵🏾", +":man_detective_medium_dark_skin_tone:": "🕵🏾", +":man_detective_tone3:": "🕵🏽", +":man_detective_medium_skin_tone:": "🕵🏽", +":man_detective_tone2:": "🕵🏼", +":man_detective_medium_light_skin_tone:": "🕵🏼", +":man_detective_tone1:": "🕵🏻", +":man_detective_light_skin_tone:": "🕵🏻", +":man_detective:": "🕵", +":woman_detective_tone5:": "🕵🏿", +":woman_detective_dark_skin_tone:": "🕵🏿", +":woman_detective_tone4:": "🕵🏾", +":woman_detective_medium_dark_skin_tone:": "🕵🏾", +":woman_detective_tone3:": "🕵🏽", +":woman_detective_medium_skin_tone:": "🕵🏽", +":woman_detective_tone2:": "🕵🏼", +":woman_detective_medium_light_skin_tone:": "🕵🏼", +":woman_detective_tone1:": "🕵🏻", +":woman_detective_light_skin_tone:": "🕵🏻", +":woman_detective:": "🕵", +":man_construction_worker_tone5:": "👷🏿", +":man_construction_worker_dark_skin_tone:": "👷🏿", +":man_construction_worker_tone4:": "👷🏾", +":man_construction_worker_medium_dark_skin_tone:": "👷🏾", +":man_construction_worker_tone3:": "👷🏽", +":man_construction_worker_medium_skin_tone:": "👷🏽", +":man_construction_worker_tone2:": "👷🏼", +":man_construction_worker_medium_light_skin_tone:": "👷🏼", +":man_construction_worker_tone1:": "👷🏻", +":man_construction_worker_light_skin_tone:": "👷🏻", +":man_construction_worker:": "👷", +":woman_construction_worker_tone5:": "👷🏿", +":woman_construction_worker_dark_skin_tone:": "👷🏿", +":woman_construction_worker_tone4:": "👷🏾", +":woman_construction_worker_medium_dark_skin_tone:": "👷🏾", +":woman_construction_worker_tone3:": "👷🏽", +":woman_construction_worker_medium_skin_tone:": "👷🏽", +":woman_construction_worker_tone2:": "👷🏼", +":woman_construction_worker_medium_light_skin_tone:": "👷🏼", +":woman_construction_worker_tone1:": "👷🏻", +":woman_construction_worker_light_skin_tone:": "👷🏻", +":woman_construction_worker:": "👷", +":man_police_officer_tone5:": "👮🏿", +":man_police_officer_dark_skin_tone:": "👮🏿", +":man_police_officer_tone4:": "👮🏾", +":man_police_officer_medium_dark_skin_tone:": "👮🏾", +":man_police_officer_tone3:": "👮🏽", +":man_police_officer_medium_skin_tone:": "👮🏽", +":man_police_officer_tone2:": "👮🏼", +":man_police_officer_medium_light_skin_tone:": "👮🏼", +":man_police_officer_tone1:": "👮🏻", +":man_police_officer_light_skin_tone:": "👮🏻", +":man_police_officer:": "👮", +":woman_police_officer_tone5:": "👮🏿", +":woman_police_officer_dark_skin_tone:": "👮🏿", +":woman_police_officer_tone4:": "👮🏾", +":woman_police_officer_medium_dark_skin_tone:": "👮🏾", +":woman_police_officer_tone3:": "👮🏽", +":woman_police_officer_medium_skin_tone:": "👮🏽", +":woman_police_officer_tone2:": "👮🏼", +":woman_police_officer_medium_light_skin_tone:": "👮🏼", +":woman_police_officer_tone1:": "👮🏻", +":woman_police_officer_light_skin_tone:": "👮🏻", +":woman_police_officer:": "👮", +":man_technologist_tone5:": "👨🏿💻", +":man_technologist_dark_skin_tone:": "👨🏿💻", +":man_technologist_tone4:": "👨🏾💻", +":man_technologist_medium_dark_skin_tone:": "👨🏾💻", +":man_technologist_tone3:": "👨🏽💻", +":man_technologist_medium_skin_tone:": "👨🏽💻", +":man_technologist_tone2:": "👨🏼💻", +":man_technologist_medium_light_skin_tone:": "👨🏼💻", +":man_technologist_tone1:": "👨🏻💻", +":man_technologist_light_skin_tone:": "👨🏻💻", +":man_technologist:": "👨💻", +":woman_technologist_tone5:": "👩🏿💻", +":woman_technologist_dark_skin_tone:": "👩🏿💻", +":woman_technologist_tone4:": "👩🏾💻", +":woman_technologist_medium_dark_skin_tone:": "👩🏾💻", +":woman_technologist_tone3:": "👩🏽💻", +":woman_technologist_medium_skin_tone:": "👩🏽💻", +":woman_technologist_tone2:": "👩🏼💻", +":woman_technologist_medium_light_skin_tone:": "👩🏼💻", +":woman_technologist_tone1:": "👩🏻💻", +":woman_technologist_light_skin_tone:": "👩🏻💻", +":woman_technologist:": "👩💻", +":man_teacher_tone5:": "👨🏿🏫", +":man_teacher_dark_skin_tone:": "👨🏿🏫", +":man_teacher_tone4:": "👨🏾🏫", +":man_teacher_medium_dark_skin_tone:": "👨🏾🏫", +":man_teacher_tone3:": "👨🏽🏫", +":man_teacher_medium_skin_tone:": "👨🏽🏫", +":man_teacher_tone2:": "👨🏼🏫", +":man_teacher_medium_light_skin_tone:": "👨🏼🏫", +":man_teacher_tone1:": "👨🏻🏫", +":man_teacher_light_skin_tone:": "👨🏻🏫", +":man_teacher:": "👨🏫", +":woman_teacher_tone5:": "👩🏿🏫", +":woman_teacher_dark_skin_tone:": "👩🏿🏫", +":woman_teacher_tone4:": "👩🏾🏫", +":woman_teacher_medium_dark_skin_tone:": "👩🏾🏫", +":woman_teacher_tone3:": "👩🏽🏫", +":woman_teacher_medium_skin_tone:": "👩🏽🏫", +":woman_teacher_tone2:": "👩🏼🏫", +":woman_teacher_medium_light_skin_tone:": "👩🏼🏫", +":woman_teacher_tone1:": "👩🏻🏫", +":woman_teacher_light_skin_tone:": "👩🏻🏫", +":woman_teacher:": "👩🏫", +":man_student_tone5:": "👨🏿🎓", +":man_student_dark_skin_tone:": "👨🏿🎓", +":man_student_tone4:": "👨🏾🎓", +":man_student_medium_dark_skin_tone:": "👨🏾🎓", +":man_student_tone3:": "👨🏽🎓", +":man_student_medium_skin_tone:": "👨🏽🎓", +":man_student_tone2:": "👨🏼🎓", +":man_student_medium_light_skin_tone:": "👨🏼🎓", +":man_student_tone1:": "👨🏻🎓", +":man_student_light_skin_tone:": "👨🏻🎓", +":man_student:": "👨🎓", +":woman_student_tone5:": "👩🏿🎓", +":woman_student_dark_skin_tone:": "👩🏿🎓", +":woman_student_tone4:": "👩🏾🎓", +":woman_student_medium_dark_skin_tone:": "👩🏾🎓", +":woman_student_tone3:": "👩🏽🎓", +":woman_student_medium_skin_tone:": "👩🏽🎓", +":woman_student_tone2:": "👩🏼🎓", +":woman_student_medium_light_skin_tone:": "👩🏼🎓", +":woman_student_tone1:": "👩🏻🎓", +":woman_student_light_skin_tone:": "👩🏻🎓", +":woman_student:": "👩🎓", +":man_singer_tone5:": "👨🏿🎤", +":man_singer_dark_skin_tone:": "👨🏿🎤", +":man_singer_tone4:": "👨🏾🎤", +":man_singer_medium_dark_skin_tone:": "👨🏾🎤", +":man_singer_tone3:": "👨🏽🎤", +":man_singer_medium_skin_tone:": "👨🏽🎤", +":man_singer_tone2:": "👨🏼🎤", +":man_singer_medium_light_skin_tone:": "👨🏼🎤", +":man_singer_tone1:": "👨🏻🎤", +":man_singer_light_skin_tone:": "👨🏻🎤", +":man_singer:": "👨🎤", +":woman_singer_tone5:": "👩🏿🎤", +":woman_singer_dark_skin_tone:": "👩🏿🎤", +":woman_singer_tone4:": "👩🏾🎤", +":woman_singer_medium_dark_skin_tone:": "👩🏾🎤", +":woman_singer_tone3:": "👩🏽🎤", +":woman_singer_medium_skin_tone:": "👩🏽🎤", +":woman_singer_tone2:": "👩🏼🎤", +":woman_singer_medium_light_skin_tone:": "👩🏼🎤", +":woman_singer_tone1:": "👩🏻🎤", +":woman_singer_light_skin_tone:": "👩🏻🎤", +":woman_singer:": "👩🎤", +":man_scientist_tone5:": "👨🏿🔬", +":man_scientist_dark_skin_tone:": "👨🏿🔬", +":man_scientist_tone4:": "👨🏾🔬", +":man_scientist_medium_dark_skin_tone:": "👨🏾🔬", +":man_scientist_tone3:": "👨🏽🔬", +":man_scientist_medium_skin_tone:": "👨🏽🔬", +":man_scientist_tone2:": "👨🏼🔬", +":man_scientist_medium_light_skin_tone:": "👨🏼🔬", +":man_scientist_tone1:": "👨🏻🔬", +":man_scientist_light_skin_tone:": "👨🏻🔬", +":man_scientist:": "👨🔬", +":woman_scientist_tone5:": "👩🏿🔬", +":woman_scientist_dark_skin_tone:": "👩🏿🔬", +":woman_scientist_tone4:": "👩🏾🔬", +":woman_scientist_medium_dark_skin_tone:": "👩🏾🔬", +":woman_scientist_tone3:": "👩🏽🔬", +":woman_scientist_medium_skin_tone:": "👩🏽🔬", +":woman_scientist_tone2:": "👩🏼🔬", +":woman_scientist_medium_light_skin_tone:": "👩🏼🔬", +":woman_scientist_tone1:": "👩🏻🔬", +":woman_scientist_light_skin_tone:": "👩🏻🔬", +":woman_scientist:": "👩🔬", +":man_office_worker_tone5:": "👨🏿💼", +":man_office_worker_dark_skin_tone:": "👨🏿💼", +":man_office_worker_tone4:": "👨🏾💼", +":man_office_worker_medium_dark_skin_tone:": "👨🏾💼", +":man_office_worker_tone3:": "👨🏽💼", +":man_office_worker_medium_skin_tone:": "👨🏽💼", +":man_office_worker_tone2:": "👨🏼💼", +":man_office_worker_medium_light_skin_tone:": "👨🏼💼", +":man_office_worker_tone1:": "👨🏻💼", +":man_office_worker_light_skin_tone:": "👨🏻💼", +":man_office_worker:": "👨💼", +":woman_office_worker_tone5:": "👩🏿💼", +":woman_office_worker_dark_skin_tone:": "👩🏿💼", +":woman_office_worker_tone4:": "👩🏾💼", +":woman_office_worker_medium_dark_skin_tone:": "👩🏾💼", +":woman_office_worker_tone3:": "👩🏽💼", +":woman_office_worker_medium_skin_tone:": "👩🏽💼", +":woman_office_worker_tone2:": "👩🏼💼", +":woman_office_worker_medium_light_skin_tone:": "👩🏼💼", +":woman_office_worker_tone1:": "👩🏻💼", +":woman_office_worker_light_skin_tone:": "👩🏻💼", +":woman_office_worker:": "👩💼", +":man_mechanic_tone5:": "👨🏿🔧", +":man_mechanic_dark_skin_tone:": "👨🏿🔧", +":man_mechanic_tone4:": "👨🏾🔧", +":man_mechanic_medium_dark_skin_tone:": "👨🏾🔧", +":man_mechanic_tone3:": "👨🏽🔧", +":man_mechanic_medium_skin_tone:": "👨🏽🔧", +":man_mechanic_tone2:": "👨🏼🔧", +":man_mechanic_medium_light_skin_tone:": "👨🏼🔧", +":man_mechanic_tone1:": "👨🏻🔧", +":man_mechanic_light_skin_tone:": "👨🏻🔧", +":man_mechanic:": "👨🔧", +":woman_mechanic_tone5:": "👩🏿🔧", +":woman_mechanic_dark_skin_tone:": "👩🏿🔧", +":woman_mechanic_tone4:": "👩🏾🔧", +":woman_mechanic_medium_dark_skin_tone:": "👩🏾🔧", +":woman_mechanic_tone3:": "👩🏽🔧", +":woman_mechanic_medium_skin_tone:": "👩🏽🔧", +":woman_mechanic_tone2:": "👩🏼🔧", +":woman_mechanic_medium_light_skin_tone:": "👩🏼🔧", +":woman_mechanic_tone1:": "👩🏻🔧", +":woman_mechanic_light_skin_tone:": "👩🏻🔧", +":woman_mechanic:": "👩🔧", +":man_health_worker_tone5:": "👨🏿⚕", +":man_health_worker_dark_skin_tone:": "👨🏿⚕", +":man_health_worker_tone4:": "👨🏾⚕", +":man_health_worker_medium_dark_skin_tone:": "👨🏾⚕", +":man_health_worker_tone3:": "👨🏽⚕", +":man_health_worker_medium_skin_tone:": "👨🏽⚕", +":man_health_worker_tone2:": "👨🏼⚕", +":man_health_worker_medium_light_skin_tone:": "👨🏼⚕", +":man_health_worker_tone1:": "👨🏻⚕", +":man_health_worker_light_skin_tone:": "👨🏻⚕", +":man_health_worker:": "👨⚕", +":woman_health_worker_tone5:": "👩🏿⚕", +":woman_health_worker_dark_skin_tone:": "👩🏿⚕", +":woman_health_worker_tone4:": "👩🏾⚕", +":woman_health_worker_medium_dark_skin_tone:": "👩🏾⚕", +":woman_health_worker_tone3:": "👩🏽⚕", +":woman_health_worker_medium_skin_tone:": "👩🏽⚕", +":woman_health_worker_tone2:": "👩🏼⚕", +":woman_health_worker_medium_light_skin_tone:": "👩🏼⚕", +":woman_health_worker_tone1:": "👩🏻⚕", +":woman_health_worker_light_skin_tone:": "👩🏻⚕", +":woman_health_worker:": "👩⚕", +":man_factory_worker_tone5:": "👨🏿🏭", +":man_factory_worker_dark_skin_tone:": "👨🏿🏭", +":man_factory_worker_tone4:": "👨🏾🏭", +":man_factory_worker_medium_dark_skin_tone:": "👨🏾🏭", +":man_factory_worker_tone3:": "👨🏽🏭", +":man_factory_worker_medium_skin_tone:": "👨🏽🏭", +":man_factory_worker_tone2:": "👨🏼🏭", +":man_factory_worker_medium_light_skin_tone:": "👨🏼🏭", +":man_factory_worker_tone1:": "👨🏻🏭", +":man_factory_worker_light_skin_tone:": "👨🏻🏭", +":man_factory_worker:": "👨🏭", +":woman_factory_worker_tone5:": "👩🏿🏭", +":woman_factory_worker_dark_skin_tone:": "👩🏿🏭", +":woman_factory_worker_tone4:": "👩🏾🏭", +":woman_factory_worker_medium_dark_skin_tone:": "👩🏾🏭", +":woman_factory_worker_tone3:": "👩🏽🏭", +":woman_factory_worker_medium_skin_tone:": "👩🏽🏭", +":woman_factory_worker_tone2:": "👩🏼🏭", +":woman_factory_worker_medium_light_skin_tone:": "👩🏼🏭", +":woman_factory_worker_tone1:": "👩🏻🏭", +":woman_factory_worker_light_skin_tone:": "👩🏻🏭", +":woman_factory_worker:": "👩🏭", +":man_cook_tone5:": "👨🏿🍳", +":man_cook_dark_skin_tone:": "👨🏿🍳", +":man_cook_tone4:": "👨🏾🍳", +":man_cook_medium_dark_skin_tone:": "👨🏾🍳", +":man_cook_tone3:": "👨🏽🍳", +":man_cook_medium_skin_tone:": "👨🏽🍳", +":man_cook_tone2:": "👨🏼🍳", +":man_cook_medium_light_skin_tone:": "👨🏼🍳", +":man_cook_tone1:": "👨🏻🍳", +":man_cook_light_skin_tone:": "👨🏻🍳", +":man_cook:": "👨🍳", +":woman_cook_tone5:": "👩🏿🍳", +":woman_cook_dark_skin_tone:": "👩🏿🍳", +":woman_cook_tone4:": "👩🏾🍳", +":woman_cook_medium_dark_skin_tone:": "👩🏾🍳", +":woman_cook_tone3:": "👩🏽🍳", +":woman_cook_medium_skin_tone:": "👩🏽🍳", +":woman_cook_tone2:": "👩🏼🍳", +":woman_cook_medium_light_skin_tone:": "👩🏼🍳", +":woman_cook_tone1:": "👩🏻🍳", +":woman_cook_light_skin_tone:": "👩🏻🍳", +":woman_cook:": "👩🍳", +":man_farmer_tone5:": "👨🏿🌾", +":man_farmer_dark_skin_tone:": "👨🏿🌾", +":man_farmer_tone4:": "👨🏾🌾", +":man_farmer_medium_dark_skin_tone:": "👨🏾🌾", +":man_farmer_tone3:": "👨🏽🌾", +":man_farmer_medium_skin_tone:": "👨🏽🌾", +":man_farmer_tone2:": "👨🏼🌾", +":man_farmer_medium_light_skin_tone:": "👨🏼🌾", +":man_farmer_tone1:": "👨🏻🌾", +":man_farmer_light_skin_tone:": "👨🏻🌾", +":man_farmer:": "👨🌾", +":woman_farmer_tone5:": "👩🏿🌾", +":woman_farmer_dark_skin_tone:": "👩🏿🌾", +":woman_farmer_tone4:": "👩🏾🌾", +":woman_farmer_medium_dark_skin_tone:": "👩🏾🌾", +":woman_farmer_tone3:": "👩🏽🌾", +":woman_farmer_medium_skin_tone:": "👩🏽🌾", +":woman_farmer_tone2:": "👩🏼🌾", +":woman_farmer_medium_light_skin_tone:": "👩🏼🌾", +":woman_farmer_tone1:": "👩🏻🌾", +":woman_farmer_light_skin_tone:": "👩🏻🌾", +":woman_farmer:": "👩🌾", +":man_in_business_suit_levitating_tone1:": "🕴🏻", +":man_in_business_suit_levitating_light_skin_tone:": "🕴🏻", +":man_in_business_suit_levitating_tone2:": "🕴🏼", +":man_in_business_suit_levitating_medium_light_skin_tone:": "🕴🏼", +":man_in_business_suit_levitating_tone3:": "🕴🏽", +":man_in_business_suit_levitating_medium_skin_tone:": "🕴🏽", +":man_in_business_suit_levitating_tone4:": "🕴🏾", +":man_in_business_suit_levitating_medium_dark_skin_tone:": "🕴🏾", +":man_in_business_suit_levitating_tone5:": "🕴🏿", +":man_in_business_suit_levitating_dark_skin_tone:": "🕴🏿", +":person_in_bed_tone1:": "🛌🏻", +":person_in_bed_light_skin_tone:": "🛌🏻", +":person_in_bed_tone2:": "🛌🏼", +":person_in_bed_medium_light_skin_tone:": "🛌🏼", +":person_in_bed_tone3:": "🛌🏽", +":person_in_bed_medium_skin_tone:": "🛌🏽", +":person_in_bed_tone4:": "🛌🏾", +":person_in_bed_medium_dark_skin_tone:": "🛌🏾", +":person_in_bed_tone5:": "🛌🏿", +":person_in_bed_dark_skin_tone:": "🛌🏿", +":family_man_boy:": "👨👦", +":family_man_boy_boy:": "👨👦👦", +":family_man_girl:": "👨👧", +":family_man_girl_boy:": "👨👧👦", +":family_woman_boy:": "👩👦", +":family_woman_boy_boy:": "👩👦👦", +":family_woman_girl:": "👩👧", +":family_woman_girl_boy:": "👩👧👦", +":family_woman_girl_girl:": "👩👧👧", +":man_judge:": "👨⚖", +":man_judge_tone1:": "👨🏻⚖", +":man_judge_light_skin_tone:": "👨🏻⚖", +":man_judge_tone2:": "👨🏼⚖", +":man_judge_medium_light_skin_tone:": "👨🏼⚖", +":man_judge_tone3:": "👨🏽⚖", +":man_judge_medium_skin_tone:": "👨🏽⚖", +":man_judge_tone4:": "👨🏾⚖", +":man_judge_medium_dark_skin_tone:": "👨🏾⚖", +":man_judge_tone5:": "👨🏿⚖", +":man_judge_dark_skin_tone:": "👨🏿⚖", +":woman_judge:": "👩⚖", +":woman_judge_tone1:": "👩🏻⚖", +":woman_judge_light_skin_tone:": "👩🏻⚖", +":woman_judge_tone2:": "👩🏼⚖", +":woman_judge_medium_light_skin_tone:": "👩🏼⚖", +":woman_judge_tone3:": "👩🏽⚖", +":woman_judge_medium_skin_tone:": "👩🏽⚖", +":woman_judge_tone4:": "👩🏾⚖", +":woman_judge_medium_dark_skin_tone:": "👩🏾⚖", +":woman_judge_tone5:": "👩🏿⚖", +":woman_judge_dark_skin_tone:": "👩🏿⚖", +":man_pilot:": "👨✈", +":man_pilot_tone1:": "👨🏻✈", +":man_pilot_light_skin_tone:": "👨🏻✈", +":man_pilot_tone2:": "👨🏼✈", +":man_pilot_medium_light_skin_tone:": "👨🏼✈", +":man_pilot_tone3:": "👨🏽✈", +":man_pilot_medium_skin_tone:": "👨🏽✈", +":man_pilot_tone4:": "👨🏾✈", +":man_pilot_medium_dark_skin_tone:": "👨🏾✈", +":man_pilot_tone5:": "👨🏿✈", +":man_pilot_dark_skin_tone:": "👨🏿✈", +":woman_pilot:": "👩✈", +":woman_pilot_tone1:": "👩🏻✈", +":woman_pilot_light_skin_tone:": "👩🏻✈", +":woman_pilot_tone2:": "👩🏼✈", +":woman_pilot_medium_light_skin_tone:": "👩🏼✈", +":woman_pilot_tone3:": "👩🏽✈", +":woman_pilot_medium_skin_tone:": "👩🏽✈", +":woman_pilot_tone4:": "👩🏾✈", +":woman_pilot_medium_dark_skin_tone:": "👩🏾✈", +":woman_pilot_tone5:": "👩🏿✈", +":woman_pilot_dark_skin_tone:": "👩🏿✈", +":man_artist:": "👨🎨", +":man_artist_tone1:": "👨🏻🎨", +":man_artist_light_skin_tone:": "👨🏻🎨", +":man_artist_tone2:": "👨🏼🎨", +":man_artist_medium_light_skin_tone:": "👨🏼🎨", +":man_artist_tone3:": "👨🏽🎨", +":man_artist_medium_skin_tone:": "👨🏽🎨", +":man_artist_tone4:": "👨🏾🎨", +":man_artist_medium_dark_skin_tone:": "👨🏾🎨", +":man_artist_tone5:": "👨🏿🎨", +":man_artist_dark_skin_tone:": "👨🏿🎨", +":woman_artist:": "👩🎨", +":woman_artist_tone1:": "👩🏻🎨", +":woman_artist_light_skin_tone:": "👩🏻🎨", +":woman_artist_tone2:": "👩🏼🎨", +":woman_artist_medium_light_skin_tone:": "👩🏼🎨", +":woman_artist_tone3:": "👩🏽🎨", +":woman_artist_medium_skin_tone:": "👩🏽🎨", +":woman_artist_tone4:": "👩🏾🎨", +":woman_artist_medium_dark_skin_tone:": "👩🏾🎨", +":woman_artist_tone5:": "👩🏿🎨", +":woman_artist_dark_skin_tone:": "👩🏿🎨", +":man_astronaut:": "👨🚀", +":man_astronaut_tone1:": "👨🏻🚀", +":man_astronaut_light_skin_tone:": "👨🏻🚀", +":man_astronaut_tone2:": "👨🏼🚀", +":man_astronaut_medium_light_skin_tone:": "👨🏼🚀", +":man_astronaut_tone3:": "👨🏽🚀", +":man_astronaut_medium_skin_tone:": "👨🏽🚀", +":man_astronaut_tone4:": "👨🏾🚀", +":man_astronaut_medium_dark_skin_tone:": "👨🏾🚀", +":man_astronaut_tone5:": "👨🏿🚀", +":man_astronaut_dark_skin_tone:": "👨🏿🚀", +":woman_astronaut:": "👩🚀", +":woman_astronaut_tone1:": "👩🏻🚀", +":woman_astronaut_light_skin_tone:": "👩🏻🚀", +":woman_astronaut_tone2:": "👩🏼🚀", +":woman_astronaut_medium_light_skin_tone:": "👩🏼🚀", +":woman_astronaut_tone3:": "👩🏽🚀", +":woman_astronaut_medium_skin_tone:": "👩🏽🚀", +":woman_astronaut_tone4:": "👩🏾🚀", +":woman_astronaut_medium_dark_skin_tone:": "👩🏾🚀", +":woman_astronaut_tone5:": "👩🏿🚀", +":woman_astronaut_dark_skin_tone:": "👩🏿🚀", +":man_firefighter:": "👨🚒", +":man_firefighter_tone1:": "👨🏻🚒", +":man_firefighter_light_skin_tone:": "👨🏻🚒", +":man_firefighter_tone2:": "👨🏼🚒", +":man_firefighter_medium_light_skin_tone:": "👨🏼🚒", +":man_firefighter_tone3:": "👨🏽🚒", +":man_firefighter_medium_skin_tone:": "👨🏽🚒", +":man_firefighter_tone4:": "👨🏾🚒", +":man_firefighter_medium_dark_skin_tone:": "👨🏾🚒", +":man_firefighter_tone5:": "👨🏿🚒", +":man_firefighter_dark_skin_tone:": "👨🏿🚒", +":woman_firefighter:": "👩🚒", +":woman_firefighter_tone1:": "👩🏻🚒", +":woman_firefighter_light_skin_tone:": "👩🏻🚒", +":woman_firefighter_tone2:": "👩🏼🚒", +":woman_firefighter_medium_light_skin_tone:": "👩🏼🚒", +":woman_firefighter_tone3:": "👩🏽🚒", +":woman_firefighter_medium_skin_tone:": "👩🏽🚒", +":woman_firefighter_tone4:": "👩🏾🚒", +":woman_firefighter_medium_dark_skin_tone:": "👩🏾🚒", +":woman_firefighter_tone5:": "👩🏿🚒", +":woman_firefighter_dark_skin_tone:": "👩🏿🚒", +":female_sign:": "♀", +":male_sign:": "♂", +":medical_symbol:": "⚕", +":united_nations:": "🇺🇳", +":snowboarder_tone2:": "🏂🏼", +":snowboarder_medium_light_skin_tone:": "🏂🏼", +":snowboarder_tone3:": "🏂🏽", +":snowboarder_medium_skin_tone:": "🏂🏽", +":snowboarder_tone4:": "🏂🏾", +":snowboarder_medium_dark_skin_tone:": "🏂🏾", +":snowboarder_tone5:": "🏂🏿", +":snowboarder_dark_skin_tone:": "🏂🏿", +":person_golfing_tone1:": "🏌🏻", +":person_golfing_light_skin_tone:": "🏌🏻", +":person_golfing_tone2:": "🏌🏼", +":person_golfing_medium_light_skin_tone:": "🏌🏼", +":person_golfing_tone3:": "🏌🏽", +} +function replace_emoji() { +$('.emoji_poss').each(function(){ +const emoji = $(this).html().match(/(:.+?:)|✅/g); +for(let i in emoji) { +if(emoji_dict[emoji[i]]) { +$(this).html($(this).html().replace(emoji[i], emoji_dict[emoji[i]])); +$(this).removeClass('emoji_poss'); +} +} +$(this).html($(this).html().replace("✅", "")); +}); +twemoji.parse(document.body,{base:(location.protocol==="https:"?"https:":"http:")+"//cdn.staticfile.org/twemoji/2.2.5/"}); +}; +function replaced_emoji_return(original) { +const emoji = original.match(/(:.+?:)/g); +for(let i in emoji) { +if(emoji_dict[emoji[i]]) { +original = original.replace(emoji[i], emoji_dict[emoji[i]]); +} +} +return original +}; \ No newline at end of file diff --git a/assets/js/shortcut.js b/assets/js/shortcut.js new file mode 100644 index 0000000..19640aa --- /dev/null +++ b/assets/js/shortcut.js @@ -0,0 +1,186 @@ +/** + * http://www.openjs.com/scripts/events/keyboard_shortcuts/ + * Version : 2.01.B + * By Binny V A + * License : BSD + */ +shortcut = { +'all_shortcuts':{}, +'add': function(shortcut_combination,callback,opt) { +var default_options = { +'type':'keydown', +'propagate':false, +'disable_in_input':false, +'target':document, +'keycode':false +} +if(!opt) opt = default_options; +else { +for(var dfo in default_options) { +if(typeof opt[dfo] == 'undefined') opt[dfo] = default_options[dfo]; +} +} +var ele = opt.target; +if(typeof opt.target == 'string') ele = document.getElementById(opt.target); +var ths = this; +shortcut_combination = shortcut_combination.toLowerCase(); +var func = function(e) { +e = e || window.event; +if(opt['disable_in_input']) { +var element; +if(e.target) element=e.target; +else if(e.srcElement) element=e.srcElement; +if(element.nodeType==3) element=element.parentNode; +if(element.tagName == 'INPUT' || element.tagName == 'TEXTAREA') return; +} +if (e.keyCode) code = e.keyCode; +else if (e.which) code = e.which; +var character = String.fromCharCode(code).toLowerCase(); +if(code == 188) character=","; +if(code == 190) character="."; +var keys = shortcut_combination.split("+"); +var kp = 0; +var shift_nums = { +"`":"~", +"1":"!", +"2":"@", +"3":"#", +"4":"$", +"5":"%", +"6":"^", +"7":"&", +"8":"*", +"9":"(", +"0":")", +"-":"_", +"=":"+", +";":":", +"'":"\"", +",":"<", +".":">", +"/":"?", +"\\":"|" +} +var special_keys = { +'esc':27, +'escape':27, +'tab':9, +'space':32, +'return':13, +'enter':13, +'backspace':8, +'scrolllock':145, +'scroll_lock':145, +'scroll':145, +'capslock':20, +'caps_lock':20, +'caps':20, +'numlock':144, +'num_lock':144, +'num':144, +'pause':19, +'break':19, +'insert':45, +'home':36, +'delete':46, +'end':35, +'pageup':33, +'page_up':33, +'pu':33, +'pagedown':34, +'page_down':34, +'pd':34, +'left':37, +'up':38, +'right':39, +'down':40, +'f1':112, +'f2':113, +'f3':114, +'f4':115, +'f5':116, +'f6':117, +'f7':118, +'f8':119, +'f9':120, +'f10':121, +'f11':122, +'f12':123 +} +var modifiers = { +shift: { wanted:false, pressed:false}, +ctrl : { wanted:false, pressed:false}, +alt : { wanted:false, pressed:false}, +meta : { wanted:false, pressed:false} +}; +if(e.ctrlKey)modifiers.ctrl.pressed = true; +if(e.shiftKey)modifiers.shift.pressed = true; +if(e.altKey)modifiers.alt.pressed = true; +if(e.metaKey) modifiers.meta.pressed = true; +for(var i=0; k=keys[i],i 1) { +if(special_keys[k] == code) kp++; +} else if(opt['keycode']) { +if(opt['keycode'] == code) kp++; +} else { +if(character == k) kp++; +else { +if(shift_nums[character] && e.shiftKey) { +character = shift_nums[character]; +if(character == k) kp++; +} +} +} +} +if(kp == keys.length && +modifiers.ctrl.pressed == modifiers.ctrl.wanted && +modifiers.shift.pressed == modifiers.shift.wanted && +modifiers.alt.pressed == modifiers.alt.wanted && +modifiers.meta.pressed == modifiers.meta.wanted) { +callback(e); +if(!opt['propagate']) { +e.cancelBubble = true; +e.returnValue = false; +if (e.stopPropagation) { +e.stopPropagation(); +e.preventDefault(); +} +return false; +} +} +} +this.all_shortcuts[shortcut_combination] = { +'callback':func, +'target':ele, +'event': opt['type'] +}; +if(ele.addEventListener) ele.addEventListener(opt['type'], func, false); +else if(ele.attachEvent) ele.attachEvent('on'+opt['type'], func); +else ele['on'+opt['type']] = func; +}, +'remove':function(shortcut_combination) { +shortcut_combination = shortcut_combination.toLowerCase(); +var binding = this.all_shortcuts[shortcut_combination]; +delete(this.all_shortcuts[shortcut_combination]) +if(!binding) return; +var type = binding['event']; +var ele = binding['target']; +var callback = binding['callback']; +if(ele.detachEvent) ele.detachEvent('on'+type, callback); +else if(ele.removeEventListener) ele.removeEventListener(type, callback, false); +else ele['on'+type] = false; +} +} \ No newline at end of file diff --git a/authorize/.htaccess b/authorize/.htaccess new file mode 100644 index 0000000..0855d49 --- /dev/null +++ b/authorize/.htaccess @@ -0,0 +1 @@ +deny from all \ No newline at end of file diff --git a/authorize/Mastodon-api-php/Mastodon_api.php b/authorize/Mastodon-api-php/Mastodon_api.php deleted file mode 100755 index 0f5ee35..0000000 --- a/authorize/Mastodon-api-php/Mastodon_api.php +++ /dev/null @@ -1,970 +0,0 @@ - - * @copyright KwangSeon Yun - * @license https://raw.githubusercontent.com/yks118/Mastodon-api-php/master/LICENSE MIT License - * @link https://github.com/yks118/Mastodon-api-php - */ -class Mastodon_api { - private $mastodon_url = ''; - private $client_id = ''; - private $client_secret = ''; - - private $token = array(); - private $scopes = array(); - - public function __construct () {} - - public function __destruct () {} - - /** - * _post - * - * curl post - * - * @param string $url - * @param array $data - * - * @return array $response - */ - private function _post ($url,$data = array()) { - $parameters = array(); - $parameters[CURLOPT_POST] = 1; - - // set access_token - if (isset($this->token['access_token'])) { - $data['access_token'] = $this->token['access_token']; - } - - if (count($data)) { - $parameters[CURLOPT_POSTFIELDS] = http_build_query($data); - } - - $url = $this->mastodon_url.$url; - $response = $this->get_content_curl($url,$parameters); - return $response; - } - - /** - * _get - * - * @param string $url - * @param array $data - * - * @return array $response - */ - private function _get ($url,$data = array()) { - $parameters = array(); - - // set authorization bearer - if (isset($this->token['access_token'])) { - $authorization = 'Authorization: '.$this->token['token_type'].' '.$this->token['access_token']; - $parameters[CURLOPT_HTTPHEADER] = array('Content-Type: application/json',$authorization); - } - - $url = $this->mastodon_url.$url; - if (count($data)) { - $url .= '?'.http_build_query($data); - } - - $response = $this->get_content_curl($url,$parameters); - return $response; - } - - /** - * _patch - * - * @param string $url - * @param array $data - * - * @return array $parameters - */ - private function _patch ($url,$data = array()) { - $parameters = array(); - $parameters[CURLOPT_CUSTOMREQUEST] = 'PATCH'; - - // set authorization bearer - if (isset($this->token['access_token'])) { - $authorization = 'Authorization: '.$this->token['token_type'].' '.$this->token['access_token']; - $parameters[CURLOPT_HTTPHEADER] = array('Content-Type: application/json',$authorization); - } - - if (count($data)) { - $parameters[CURLOPT_POSTFIELDS] = json_encode($data); - } - - $url = $this->mastodon_url.$url; - $response = $this->get_content_curl($url,$parameters); - return $response; - } - - /** - * _delete - * - * @param string $url - * - * @return array $response - */ - private function _delete ($url) { - $parameters = array(); - $parameters[CURLOPT_CUSTOMREQUEST] = 'DELETE'; - - // set authorization bearer - if (isset($this->token['access_token'])) { - $authorization = 'Authorization: '.$this->token['token_type'].' '.$this->token['access_token']; - $parameters[CURLOPT_HTTPHEADER] = array('Content-Type: application/json',$authorization); - } - - $url = $this->mastodon_url.$url; - $response = $this->get_content_curl($url,$parameters); - return $response; - } - - /** - * get_content_curl - * - * @param string $url - * @param array $parameters - * - * @return array $data - */ - protected function get_content_curl ($url,$parameters = array()) { - $data = array(); - - // set CURLOPT_USERAGENT - if (!isset($parameters[CURLOPT_USERAGENT])) { - if (isset($_SERVER['HTTP_USER_AGENT'])) { - $parameters[CURLOPT_USERAGENT] = $_SERVER['HTTP_USER_AGENT']; - } else { - // default IE11 - $parameters[CURLOPT_USERAGENT] = 'Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko'; - } - } - - // check curl_init - if (function_exists('curl_init')) { - $ch = curl_init(); - - // url 설정 - curl_setopt($ch,CURLOPT_URL,$url); - - foreach ($parameters as $key => $value) { - curl_setopt($ch,$key,$value); - } - - // https - if (!isset($parameters[CURLOPT_SSL_VERIFYPEER])) { - curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,FALSE); - } - if (!isset($parameters[CURLOPT_SSLVERSION])) { - curl_setopt($ch,CURLOPT_SSLVERSION,6); - } - - // no header - if (!isset($parameters[CURLOPT_HEADER])) { - curl_setopt($ch,CURLOPT_HEADER,0); - } - - // POST / GET (default : GET) - if (!isset($parameters[CURLOPT_POST]) && !isset($parameters[CURLOPT_CUSTOMREQUEST])) { - curl_setopt($ch,CURLOPT_POST,0); - } - - // response get php value - if (!isset($parameters[CURLOPT_RETURNTRANSFER])) { - curl_setopt($ch,CURLOPT_RETURNTRANSFER,1); - } - - // HTTP2 - if (!isset($parameters[CURLOPT_HTTP_VERSION])) { - curl_setopt($ch,CURLOPT_HTTP_VERSION,3); - } - if (!isset($parameters[CURLINFO_HEADER_OUT])) { - curl_setopt($ch,CURLINFO_HEADER_OUT,TRUE); - } - - $data['html'] = json_decode(curl_exec($ch),true); - $data['response'] = curl_getinfo($ch); - - curl_close($ch); - } - - return $data; - } - - /** - * set_url - * - * @param string $path - */ - public function set_url ($path) { - $this->mastodon_url = $path; - } - - /** - * set_client - * - * @param string $id - * @param string $secret - */ - public function set_client ($id,$secret) { - $this->client_id = $id; - $this->client_secret = $secret; - } - - /** - * set_token - * - * @param string $token - * @param string $type - */ - public function set_token ($token,$type) { - $this->token['access_token'] = $token; - $this->token['token_type'] = $type; - } - - /** - * set_scopes - * - * @param array $scopes read / write / follow - */ - public function set_scopes ($scopes) { - $this->scopes = $scopes; - } - - /** - * create_app - * - * @param string $client_name - * @param array $scopes read / write / follow - * @param string $redirect_uris - * @param string $website - * - * @return array $response - * int $response['id'] - * string $response['redirect_uri'] - * string $response['client_id'] - * string $response['client_secret'] - */ - public function create_app ($client_name,$scopes = array(),$redirect_uris = '',$website = '') { - $parameters = array(); - - if (count($scopes) == 0) { - if (count($this->scopes) == 0) { - $scopes = array('read','write','follow'); - } else { - $scopes = $this->scopes; - } - } - - $parameters['client_name'] = $client_name; - $parameters['scopes'] = implode(' ',$scopes); - - if (empty($redirect_uris)) { - $parameters['redirect_uris'] = 'urn:ietf:wg:oauth:2.0:oob'; - } else { - $parameters['redirect_uris'] = $redirect_uris; - } - - if ($website) { - $parameters['website'] = $website; - } - - $response = $this->_post('/api/v1/apps',$parameters); - - if (isset($response['html']['client_id'])) { - $this->client_id = $response['html']['client_id']; - $this->client_secret = $response['html']['client_secret']; - } - - return $response; - } - - /** - * login - * - * @param string $id E-mail Address - * @param string $password Password - * - * @return array $response - * string $response['access_token'] - * string $response['token_type'] bearer - * string $response['scope'] read - * int $response['created_at'] time - */ - public function login ($id,$password) { - $parameters = array(); - $parameters['client_id'] = $this->client_id; - $parameters['client_secret'] = $this->client_secret; - $parameters['grant_type'] = 'password'; - $parameters['username'] = $id; - $parameters['password'] = $password; - - if (count($this->scopes) == 0) { - $parameters['scope'] = implode(' ',array('read','write','follow')); - } else { - $parameters['scope'] = implode(' ',$this->scopes); - } - - $response = $this->_post('/oauth/token',$parameters); - - if (isset($response['html']["access_token"])) { - $this->token['access_token'] = $response['html']['access_token']; - $this->token['token_type'] = $response['html']['token_type']; - } - - return $response; - } - - public function get_access_token ($redirect_uri,$code) { - $parameters = array(); - $parameters['grant_type'] = 'authorization_code'; - $parameters['redirect_uri'] = $redirect_uri; - $parameters['client_id'] = $this->client_id; - $parameters['client_secret'] = $this->client_secret; - $parameters['code'] = $code; - $response = $this->_post('/oauth/token',$parameters); - - if (isset($response['html']["access_token"])) { - $this->token['access_token'] = $response['html']['access_token']; - $this->token['token_type'] = $response['html']['token_type']; - } - - return $response; - } - - /** - * accounts - * - * @see https://your-domain/web/accounts/:id - * - * @param int $id - * - * @return array $response - * int $response['id'] - * string $response['username'] - * string $response['acct'] - * string $response['display_name'] The name to display in the user's profile - * bool $response['locked'] - * string $response['created_at'] - * int $response['followers_count'] - * int $response['following_count'] - * int $response['statuses_count'] - * string $response['note'] A new biography for the user - * string $response['url'] - * string $response['avatar'] A base64 encoded image to display as the user's avatar - * string $response['avatar_static'] - * string $response['header'] A base64 encoded image to display as the user's header image - * string $response['header_static'] - */ - public function accounts ($id) { - $response = $this->_get('/api/v1/accounts/'.$id); - return $response; - } - - /** - * accounts_verify_credentials - * - * Getting the current user - * - * @return array $response - */ - public function accounts_verify_credentials () { - $response = $this->_get('/api/v1/accounts/verify_credentials'); - return $response; - } - - /** - * accounts_update_credentials - * - * Updating the current user - * - * @param array $parameters - * string $parameters['display_name'] The name to display in the user's profile - * string $parameters['note'] A new biography for the user - * string $parameters['avatar'] A base64 encoded image to display as the user's avatar - * string $parameters['header'] A base64 encoded image to display as the user's header image - * - * @return array $response - */ - public function accounts_update_credentials ($parameters) { - $response = $this->_patch('/api/v1/accounts/update_credentials',$parameters); - return $response; - } - - /** - * accounts_followers - * - * @see https://your-domain/web/accounts/:id - * - * @param int $id - * - * @return array $response - */ - public function accounts_followers ($id) { - $response = $this->_get('/api/v1/accounts/'.$id.'/followers'); - return $response; - } - - /** - * accounts_following - * - * @see https://your-domain/web/accounts/:id - * - * @param int $id - * - * @return array $response - */ - public function accounts_following ($id) { - $response = $this->_get('/api/v1/accounts/'.$id.'/following'); - return $response; - } - - /** - * accounts_statuses - * - * @see https://your-domain/web/accounts/:id - * - * @param int $id - * - * @return array $response - */ - public function accounts_statuses ($id) { - $response = $this->_get('/api/v1/accounts/'.$id.'/statuses'); - return $response; - } - - /** - * accounts_follow - * - * @see https://your-domain/web/accounts/:id - * - * @param int $id - * - * @return array $response - */ - public function accounts_follow ($id) { - $response = $this->_post('/api/v1/accounts/'.$id.'/follow'); - return $response; - } - - /** - * accounts_unfollow - * - * @see https://your-domain/web/accounts/:id - * - * @param int $id - * - * @return array $response - */ - public function accounts_unfollow ($id) { - $response = $this->_post('/api/v1/accounts/'.$id.'/unfollow'); - return $response; - } - - /** - * accounts_block - * - * @see https://your-domain/web/accounts/:id - * - * @param int $id - * - * @return array $response - */ - public function accounts_block ($id) { - $response = $this->_post('/api/v1/accounts/'.$id.'/block'); - return $response; - } - - /** - * accounts_unblock - * - * @see https://your-domain/web/accounts/:id - * - * @param int $id - * - * @return array $response - */ - public function accounts_unblock ($id) { - $response = $this->_post('/api/v1/accounts/'.$id.'/unblock'); - return $response; - } - - /** - * accounts_mute - * - * @see https://your-domain/web/accounts/:id - * - * @param int $id - * - * @return array $response - */ - public function accounts_mute ($id) { - $response = $this->_post('/api/v1/accounts/'.$id.'/mute'); - return $response; - } - - /** - * accounts_unmute - * - * @see https://your-domain/web/accounts/:id - * - * @param int $id - * - * @return array $response - */ - public function accounts_unmute ($id) { - $response = $this->_post('/api/v1/accounts/'.$id.'/unmute'); - return $response; - } - - /** - * accounts_relationships - * - * @see https://your-domain/web/accounts/:id - * - * @param array $parameters - * int $parameters['id'] - * - * @return array $response - * int $response['id'] - * bool $response['following'] - * bool $response['followed_by'] - * bool $response['blocking'] - * bool $response['muting'] - * bool $response['requested'] - */ - public function accounts_relationships ($parameters) { - $response = $this->_get('/api/v1/accounts/relationships',$parameters); - return $response; - } - - /** - * accounts_search - * - * @param array $parameters - * string $parameters['q'] - * int $parameters['limit'] default : 40 - * - * @return array $response - */ - public function accounts_search ($parameters) { - $response = $this->_get('/api/v1/accounts/search',$parameters); - return $response; - } - - /** - * blocks - * - * @return array $response - */ - public function blocks () { - $response = $this->_get('/api/v1/blocks'); - return $response; - } - - /** - * favourites - * - * @return array $response - */ - public function favourites () { - $response = $this->_get('/api/v1/favourites'); - return $response; - } - - /** - * follow_requests - * - * @return array $response - */ - public function follow_requests () { - $response = $this->_get('/api/v1/follow_requests'); - return $response; - } - - /** - * follow_requests_authorize - * - * @see https://your-domain/web/accounts/:id - * - * @param int $id - * - * @return array $response - */ - public function follow_requests_authorize ($id) { - $response = $this->_post('/api/v1/follow_requests/authorize',array('id'=>$id)); - return $response; - } - - /** - * follow_requests_reject - * - * @see https://your-domain/web/accounts/:id - * - * @param int $id - * @return array $response - */ - public function follow_requests_reject ($id) { - $response = $this->_post('/api/v1/follow_requests/reject',array('id'=>$id)); - return $response; - } - - /** - * follows - * - * Following a remote user - * - * @param string $uri username@domain of the person you want to follow - * @return array $response - */ - public function follows ($uri) { - $response = $this->_post('/api/v1/follows',array('uri'=>$uri)); - return $response; - } - - /** - * instance - * - * Getting instance information - * - * @return array $response - * string $response['uri'] - * string $response['title'] - * string $response['description'] - * string $response['email'] - */ - public function instance () { - $response = $this->_get('/api/v1/instance'); - return $response; - } - - /** - * media - * - * Uploading a media attachment - * - * @param string $file_path local path / http path - * - * @return array $response - * int $response['id'] ID of the attachment - * string $response['type'] One of: "image", "video", "gifv" - * string $response['url'] URL of the locally hosted version of the image - * string $response['remote_url'] For remote images, the remote URL of the original image - * string $response['preview_url'] URL of the preview image - * string $response['text_url'] Shorter URL for the image, for insertion into text (only present on local images) - */ - public function media ($file_path) { - $url = $this->mastodon_url.'/api/v1/media'; - $parameters = $data = array(); - $parameters[CURLOPT_HTTPHEADER] = array('Content-Type'=>'multipart/form-data'); - $parameters[CURLOPT_POST] = true; - - // set access_token - if (isset($this->token['access_token'])) { - $parameters[CURLOPT_POSTFIELDS]['access_token'] = $this->token['access_token']; - } - - if (is_file($file_path)) { - $mime_type = mime_content_type($file_path); - - $cf = curl_file_create($file_path,$mime_type,'file'); - $parameters[CURLOPT_POSTFIELDS]['file'] = $cf; - } - - $response = $this->get_content_curl($url,$parameters); - return $response; - } - - /** - * mutes - * - * Fetching a user's mutes - * - * @return array $response - */ - public function mutes () { - $response = $this->_get('/api/v1/mutes'); - return $response; - } - - /** - * notifications - * - * @param int $id - * - * @return array $response - */ - public function notifications ($id = 0) { - $url = '/api/v1/notifications'; - - if ($id > 0) { - $url .= '/'.$id; - } - - $response = $this->_get($url); - return $response; - } - - /** - * notifications_clear - * - * Clearing notifications - * - * @return array $response - */ - public function notifications_clear () { - $response = $this->_post('/api/v1/notifications/clear'); - return $response; - } - - /** - * get_reports - * - * Fetching a user's reports - * - * @return array $response - */ - public function get_reports () { - $response = $this->_get('/api/v1/reports'); - return $response; - } - - /** - * post_reports - * - * Reporting a user - * - * @param array $parameters - * int $parameters['account_id'] The ID of the account to report - * int $parameters['status_ids'] The IDs of statuses to report (can be an array) - * string $parameters['comment'] A comment to associate with the report. - * - * @return array $response - */ - public function post_reports ($parameters) { - $response = $this->_post('/api/v1/reports',$parameters); - return $response; - } - - /** - * search - * - * Searching for content - * - * @param array $parameters - * string $parameters['q'] The search query - * string $parameters['resolve'] Whether to resolve non-local accounts - * - * @return array $response - */ - public function search ($parameters) { - $response = $this->_get('/api/v1/search',$parameters); - return $response; - } - - /** - * statuses - * - * Fetching a status - * - * @param int $id - * - * @return array $response - */ - public function statuses ($id) { - $response = $this->_get('/api/v1/statuses/'.$id); - return $response; - } - - /** - * statuses_context - * - * Getting status context - * - * @param int $id - * - * @return array $response - */ - public function statuses_context ($id) { - $response = $this->_get('/api/v1/statuses/'.$id.'/context'); - return $response; - } - - /** - * statuses_card - * - * Getting a card associated with a status - * - * @param int $id - * - * @return array $response - */ - public function statuses_card ($id) { - $response = $this->_get('/api/v1/statuses/'.$id.'/card'); - return $response; - } - - /** - * statuses_reblogged_by - * - * Getting who reblogged a status - * - * @param int $id - * - * @return array $response - */ - public function statuses_reblogged_by ($id) { - $response = $this->_get('/api/v1/statuses/'.$id.'/reblogged_by'); - return $response; - } - - /** - * statuses_favourited_by - * - * Getting who favourited a status - * - * @param int $id - * - * @return array $response - */ - public function statuses_favourited_by ($id) { - $response = $this->_get('/api/v1/statuses/'.$id.'/favourited_by'); - return $response; - } - - /** - * post_statuses - * - * @param array $parameters - * string $parameters['status'] The text of the status - * int $parameters['in_reply_to_id'] (optional): local ID of the status you want to reply to - * int $parameters['media_ids'] (optional): array of media IDs to attach to the status (maximum 4) - * string $parameters['sensitive'] (optional): set this to mark the media of the status as NSFW - * string $parameters['spoiler_text'] (optional): text to be shown as a warning before the actual content - * string $parameters['visibility'] (optional): either "direct", "private", "unlisted" or "public" - * - * @return array $response - */ - public function post_statuses ($parameters) { - $response = $this->_post('/api/v1/statuses',$parameters); - return $response; - } - - /** - * delete_statuses - * - * Deleting a status - * - * @param int $id - * - * @return array $response empty - */ - public function delete_statuses ($id) { - $response = $this->_delete('/api/v1/statuses/'.$id); - return $response; - } - - /** - * statuses_reblog - * - * Reblogging a status - * - * @param int $id - * - * @return array $response - */ - public function statuses_reblog ($id) { - $response = $this->_post('/api/v1/statuses/'.$id.'/reblog'); - return $response; - } - - /** - * statuses_unreblog - * - * Unreblogging a status - * - * @param int $id - * - * @return array $response - */ - public function statuses_unreblog ($id) { - $response = $this->_post('/api/v1/statuses/'.$id.'/unreblog'); - return $response; - } - - /** - * statuses_favourite - * - * Favouriting a status - * - * @param int $id - * - * @return array $response - */ - public function statuses_favourite ($id) { - $response = $this->_post('/api/v1/statuses/'.$id.'/favourite'); - return $response; - } - - /** - * statuses_unfavourite - * - * Unfavouriting a status - * - * @param int $id - * - * @return array $response - */ - public function statuses_unfavourite ($id) { - $response = $this->_post('/api/v1/statuses/'.$id.'/unfavourite'); - return $response; - } - - /** - * timelines_home - * - * @return array $response - */ - public function timelines_home () { - $response = $this->_get('/api/v1/timelines/home'); - return $response; - } - - /** - * timelines_public - * - * @param array $parameters - * bool $parameters['local'] Only return statuses originating from this instance - * - * @return array $response - */ - public function timelines_public ($parameters = array()) { - $response = $this->_get('/api/v1/timelines/public',$parameters); - return $response; - } - - /** - * timelines_tag - * - * @param string $hashtag - * @param array $parameters - * bool $parameters['local'] Only return statuses originating from this instance - * - * @return array $response - */ - public function timelines_tag ($hashtag,$parameters = array()) { - $response = $this->_get('/api/v1/timelines/tag/'.$hashtag,$parameters); - return $response; - } - -} diff --git a/authorize/Mastodon-api-php/README.md b/authorize/Mastodon-api-php/README.md deleted file mode 100755 index 902b2ca..0000000 --- a/authorize/Mastodon-api-php/README.md +++ /dev/null @@ -1,19 +0,0 @@ -# Mastodon-api-php -A GNU Social-compatible microblogging server https://mastodon.social PHP API - -## How to use -require_once '/path/Mastodon_api.php';
    -
    -$mastodon_api = new Mastodon_api();
    -$mastodon_api->set_url('Mastodon url');
    -
    -// print_r($mastodon_api->create_app('APP Name',null,null,'Mastodon url'));
    -$mastodon_api->set_client('client_id','client_secret');
    -
    -// print_r($mastodon_api->login('your login email','your login password'));
    -$mastodon_api->set_token('access_token','token_type');
    -
    -$mastodon_api->timelines_home(); - -## Test Mastodon -https://ery.kr diff --git a/authorize/Mastodon.php b/authorize/Mastodon.php deleted file mode 100755 index 77ab619..0000000 --- a/authorize/Mastodon.php +++ /dev/null @@ -1,82 +0,0 @@ -clientName = $appSettings["App"]["api_client_name"]; - $this->clientRedirectUris = $appSettings["App"]["api_client_website"].'/auth urn:ietf:wg:oauth:2.0:oob'; - $this->clientWebsite = $appSettings["App"]["api_client_website"]; - $this->clientScopes = array('read', 'write', 'follow'); - $this->instances = array(); - - $this->dbHost = $appSettings["Mysql"]["db_host"]; - $this->dbUser = $appSettings["Mysql"]["db_user"]; - $this->dbPass = $appSettings["Mysql"]["db_pass"]; - $this->dbName = $appSettings["Mysql"]["db_name"]; - - $this->database = new Database($this->dbHost, $this->dbUser, $this->dbPass, $this->dbName); - $this->readInstances(); - } - - /* note: $domainって書いてあるけど、ドメインじゃなくてURLです。すみません */ - - private function newInstance($domain) - { - $res = $this->create_app($this->clientName, $this->clientScopes, $this->clientRedirectUris, $this->clientWebsite); - if (isset($res['html']['client_id'])) { - $this->instances[$domain] = $res['html']; - $this->database->dbExecute("insert into instances(domain, client_id, client_secret) values(?,?,?)", array($domain, $res['html']['client_id'], $res['html']['client_secret'])); - // insert into instances(domain, client_id, client_secret) values($domain, $client_id, $client_secret) - }else{ - throw new Exception("Invalid instance"); - } - } - - public function selectInstance($domain) - { - $this->set_url($domain); - if (!$this->instanceExists($domain)) { - $this->newInstance($domain); - } - $this->set_client($this->instances[$domain]['client_id'], $this->instances[$domain]['client_secret']); - } - - public function getInstance($domain) - { - $this->set_url($domain); - if (!$this->instanceExists($domain)) { - $this->newInstance($domain); - } - return array('client_id' => $this->instances[$domain]['client_id'], 'client_secret' => $this->instances[$domain]['client_secret']); - } - - public function instanceExists($domain) - { - return isset($this->instances[$domain]); - } - - private function readInstances() - { - $stmt = $this->database->dbExecute("select domain,client_id,client_secret from instances"); - foreach($stmt->fetchAll(PDO::FETCH_ASSOC) as $row){ - $this->instances[$row['domain']] = $row; - } - } - -} -?> diff --git a/authorize/database.php b/authorize/database.php deleted file mode 100755 index 68c8acb..0000000 --- a/authorize/database.php +++ /dev/null @@ -1,50 +0,0 @@ -dbhost = $dbhost; - $this->dbuser = $dbuser; - $this->dbpass = $dbpass; - $this->dbname = $dbname; - $this->dsn = "mysql:dbname=".$this->dbname.";host=".$this->dbhost.";charset=utf8"; - $this->connecting = false; - $this->dbConnect(); - } - - public function dbConnect($commit=True){ - try{ - $dbh = new PDO($this->dsn, $this->dbuser, $this->dbpass); - $dbh->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); - if(!$commit){ - $dbh->beginTransaction(); - } - }catch (PDOException $e){ - throw new Exception($e); - } - $this->dbh = $dbh; - $this->connecting = true; - return $dbh; - } - - public function dbClose(){ - $this->dbh = Null; - $this->connecting = false; - } - - public function dbExecute($sql, $attr = null){ - if ($attr === null) { - $attr = array(); - } - if (!$this->connecting) { - $this->dbConnect(); - } - $stmt = $this->dbh->prepare($sql); - $stmt->execute($attr); - return $stmt; - } -} -?> diff --git a/authorize/Mastodon-api-php/LICENSE b/authorize/mastodon-api/LICENSE old mode 100755 new mode 100644 similarity index 100% rename from authorize/Mastodon-api-php/LICENSE rename to authorize/mastodon-api/LICENSE diff --git a/authorize/mastodon-api/mastodon.php b/authorize/mastodon-api/mastodon.php new file mode 100644 index 0000000..3d07633 --- /dev/null +++ b/authorize/mastodon-api/mastodon.php @@ -0,0 +1,374 @@ + + * @copyright KwangSeon Yun + * @license https://raw.githubusercontent.com/yks118/Mastodon-api-php/master/LICENSE MIT License + * @link https://github.com/yks118/Mastodon-api-php + */ +class Mastodon_api { +private $mastodon_url = ''; +private $client_id = ''; +private $client_secret = ''; +private $token = array(); +private $scopes = array(); +public function __construct () {} +public function __destruct () {} +private function _post ($url,$data = array()) { +$parameters = array(); +$parameters[CURLOPT_POST] = 1; +if (isset($this->token['access_token'])) { +$data['access_token'] = $this->token['access_token']; +} +if (count($data)) { +$parameters[CURLOPT_POSTFIELDS] = http_build_query($data); +} +$url = $this->mastodon_url.$url; +$response = $this->get_content_curl($url,$parameters); +return $response; +} +private function _get ($url,$data = array()) { +$parameters = array(); +if (isset($this->token['access_token'])) { +$authorization = 'Authorization: '.$this->token['token_type'].' '.$this->token['access_token']; +$parameters[CURLOPT_HTTPHEADER] = array('Content-Type: application/json',$authorization); +} +$url = $this->mastodon_url.$url; +if (count($data)) { +$url .= '?'.http_build_query($data); +} +$response = $this->get_content_curl($url,$parameters); +return $response; +} +private function _patch ($url,$data = array()) { +$parameters = array(); +$parameters[CURLOPT_CUSTOMREQUEST] = 'PATCH'; +if (isset($this->token['access_token'])) { +$authorization = 'Authorization: '.$this->token['token_type'].' '.$this->token['access_token']; +$parameters[CURLOPT_HTTPHEADER] = array('Content-Type: application/json',$authorization); +} +if (count($data)) { +$parameters[CURLOPT_POSTFIELDS] = json_encode($data); +} +$url = $this->mastodon_url.$url; +$response = $this->get_content_curl($url,$parameters); +return $response; +} +private function _delete ($url) { +$parameters = array(); +$parameters[CURLOPT_CUSTOMREQUEST] = 'DELETE'; +if (isset($this->token['access_token'])) { +$authorization = 'Authorization: '.$this->token['token_type'].' '.$this->token['access_token']; +$parameters[CURLOPT_HTTPHEADER] = array('Content-Type: application/json',$authorization); +} +$url = $this->mastodon_url.$url; +$response = $this->get_content_curl($url,$parameters); +return $response; +} +protected function get_content_curl ($url,$parameters = array()) { +$data = array(); +if (!isset($parameters[CURLOPT_USERAGENT])) { +if (isset($_SERVER['HTTP_USER_AGENT'])) { +$parameters[CURLOPT_USERAGENT] = $_SERVER['HTTP_USER_AGENT']; +} else { +$parameters[CURLOPT_USERAGENT] = 'Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko'; +} +} +if (function_exists('curl_init')) { +$ch = curl_init(); +curl_setopt($ch,CURLOPT_URL,$url); +foreach ($parameters as $key => $value) { +curl_setopt($ch,$key,$value); +} +if (!isset($parameters[CURLOPT_SSL_VERIFYPEER])) { +curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,FALSE); +} +if (!isset($parameters[CURLOPT_SSLVERSION])) { +curl_setopt($ch,CURLOPT_SSLVERSION,6); +} +if (!isset($parameters[CURLOPT_HEADER])) { +curl_setopt($ch,CURLOPT_HEADER,0); +} +if (!isset($parameters[CURLOPT_POST]) && !isset($parameters[CURLOPT_CUSTOMREQUEST])) { +curl_setopt($ch,CURLOPT_POST,0); +} +if (!isset($parameters[CURLOPT_RETURNTRANSFER])) { +curl_setopt($ch,CURLOPT_RETURNTRANSFER,1); +} +if (!isset($parameters[CURLOPT_HTTP_VERSION])) { +curl_setopt($ch,CURLOPT_HTTP_VERSION,3); +} +if (!isset($parameters[CURLINFO_HEADER_OUT])) { +curl_setopt($ch,CURLINFO_HEADER_OUT,TRUE); +} +$data['html'] = json_decode(curl_exec($ch),true); +$data['response'] = curl_getinfo($ch); +curl_close($ch); +} +return $data; +} +public function set_url ($path) { +$this->mastodon_url = $path; +} +public function set_client ($id,$secret) { +$this->client_id = $id; +$this->client_secret = $secret; +} +public function set_token ($token,$type) { +$this->token['access_token'] = $token; +$this->token['token_type'] = $type; +} +public function set_scopes ($scopes) { +$this->scopes = $scopes; +} +public function create_app ($client_name,$scopes = array(),$redirect_uris = '',$website = '') { +$parameters = array(); +if (count($scopes) == 0) { +if (count($this->scopes) == 0) { +$scopes = array('read','write','follow'); +} else { +$scopes = $this->scopes; +} +} +$parameters['client_name'] = $client_name; +$parameters['scopes'] = implode(' ',$scopes); +if (empty($redirect_uris)) { +$parameters['redirect_uris'] = 'urn:ietf:wg:oauth:2.0:oob'; +} else { +$parameters['redirect_uris'] = $redirect_uris; +} +if ($website) { +$parameters['website'] = $website; +} +$response = $this->_post('/api/v1/apps',$parameters); +if (isset($response['html']['client_id'])) { +$this->client_id = $response['html']['client_id']; +$this->client_secret = $response['html']['client_secret']; +} +return $response; +} +public function login ($id,$password) { +$parameters = array(); +$parameters['client_id'] = $this->client_id; +$parameters['client_secret'] = $this->client_secret; +$parameters['grant_type'] = 'password'; +$parameters['username'] = $id; +$parameters['password'] = $password; +if (count($this->scopes) == 0) { +$parameters['scope'] = implode(' ',array('read','write','follow')); +} else { +$parameters['scope'] = implode(' ',$this->scopes); +} +$response = $this->_post('/oauth/token',$parameters); +if (isset($response['html']["access_token"])) { +$this->token['access_token'] = $response['html']['access_token']; +$this->token['token_type'] = $response['html']['token_type']; +} +return $response; +} +public function get_access_token ($redirect_uri,$code) { +$parameters = array(); +$parameters['grant_type'] = 'authorization_code'; +$parameters['redirect_uri'] = $redirect_uri; +$parameters['client_id'] = $this->client_id; +$parameters['client_secret'] = $this->client_secret; +$parameters['code'] = $code; +$response = $this->_post('/oauth/token',$parameters); +if (isset($response['html']["access_token"])) { +$this->token['access_token'] = $response['html']['access_token']; +$this->token['token_type'] = $response['html']['token_type']; +} +return $response; +} +public function accounts ($id) { +$response = $this->_get('/api/v1/accounts/'.$id); +return $response; +} +public function accounts_verify_credentials () { +$response = $this->_get('/api/v1/accounts/verify_credentials'); +return $response; +} +public function accounts_update_credentials ($parameters) { +$response = $this->_patch('/api/v1/accounts/update_credentials',$parameters); +return $response; +} +public function accounts_followers ($id) { +$response = $this->_get('/api/v1/accounts/'.$id.'/followers'); +return $response; +} +public function accounts_following ($id) { +$response = $this->_get('/api/v1/accounts/'.$id.'/following'); +return $response; +} +public function accounts_statuses ($id) { +$response = $this->_get('/api/v1/accounts/'.$id.'/statuses'); +return $response; +} +public function accounts_follow ($id) { +$response = $this->_post('/api/v1/accounts/'.$id.'/follow'); +return $response; +} +public function accounts_unfollow ($id) { +$response = $this->_post('/api/v1/accounts/'.$id.'/unfollow'); +return $response; +} +public function accounts_block ($id) { +$response = $this->_post('/api/v1/accounts/'.$id.'/block'); +return $response; +} +public function accounts_unblock ($id) { +$response = $this->_post('/api/v1/accounts/'.$id.'/unblock'); +return $response; +} +public function accounts_mute ($id) { +$response = $this->_post('/api/v1/accounts/'.$id.'/mute'); +return $response; +} +public function accounts_unmute ($id) { +$response = $this->_post('/api/v1/accounts/'.$id.'/unmute'); +return $response; +} +public function accounts_relationships ($parameters) { +$response = $this->_get('/api/v1/accounts/relationships',$parameters); +return $response; +} +public function accounts_search ($parameters) { +$response = $this->_get('/api/v1/accounts/search',$parameters); +return $response; +} +public function blocks () { +$response = $this->_get('/api/v1/blocks'); +return $response; +} +public function favourites () { +$response = $this->_get('/api/v1/favourites'); +return $response; +} +public function follow_requests () { +$response = $this->_get('/api/v1/follow_requests'); +return $response; +} +public function follow_requests_authorize ($id) { +$response = $this->_post('/api/v1/follow_requests/authorize',array('id'=>$id)); +return $response; +} +public function follow_requests_reject ($id) { +$response = $this->_post('/api/v1/follow_requests/reject',array('id'=>$id)); +return $response; +} +public function follows ($uri) { +$response = $this->_post('/api/v1/follows',array('uri'=>$uri)); +return $response; +} +public function instance () { +$response = $this->_get('/api/v1/instance'); +return $response; +} +public function media ($file_path) { +$url = $this->mastodon_url.'/api/v1/media'; +$parameters = $data = array(); +$parameters[CURLOPT_HTTPHEADER] = array('Content-Type'=>'multipart/form-data'); +$parameters[CURLOPT_POST] = true; +if (isset($this->token['access_token'])) { +$parameters[CURLOPT_POSTFIELDS]['access_token'] = $this->token['access_token']; +} +if (is_file($file_path)) { +$mime_type = mime_content_type($file_path); +$cf = curl_file_create($file_path,$mime_type,'file'); +$parameters[CURLOPT_POSTFIELDS]['file'] = $cf; +} +$response = $this->get_content_curl($url,$parameters); +return $response; +} +public function mutes () { +$response = $this->_get('/api/v1/mutes'); +return $response; +} +public function notifications ($id = 0) { +$url = '/api/v1/notifications'; +if ($id > 0) { +$url .= '/'.$id; +} +$response = $this->_get($url); +return $response; +} +public function notifications_clear () { +$response = $this->_post('/api/v1/notifications/clear'); +return $response; +} +public function get_reports () { +$response = $this->_get('/api/v1/reports'); +return $response; +} +public function post_reports ($parameters) { +$response = $this->_post('/api/v1/reports',$parameters); +return $response; +} +public function search ($parameters) { +$response = $this->_get('/api/v1/search',$parameters); +return $response; +} +public function statuses ($id) { +$response = $this->_get('/api/v1/statuses/'.$id); +return $response; +} +public function statuses_context ($id) { +$response = $this->_get('/api/v1/statuses/'.$id.'/context'); +return $response; +} +public function statuses_card ($id) { +$response = $this->_get('/api/v1/statuses/'.$id.'/card'); +return $response; +} +public function statuses_reblogged_by ($id) { +$response = $this->_get('/api/v1/statuses/'.$id.'/reblogged_by'); +return $response; +} +public function statuses_favourited_by ($id) { +$response = $this->_get('/api/v1/statuses/'.$id.'/favourited_by'); +return $response; +} +public function post_statuses ($parameters) { +$response = $this->_post('/api/v1/statuses',$parameters); +return $response; +} +public function delete_statuses ($id) { +$response = $this->_delete('/api/v1/statuses/'.$id); +return $response; +} +public function statuses_reblog ($id) { +$response = $this->_post('/api/v1/statuses/'.$id.'/reblog'); +return $response; +} +public function statuses_unreblog ($id) { +$response = $this->_post('/api/v1/statuses/'.$id.'/unreblog'); +return $response; +} +public function statuses_favourite ($id) { +$response = $this->_post('/api/v1/statuses/'.$id.'/favourite'); +return $response; +} +public function statuses_unfavourite ($id) { +$response = $this->_post('/api/v1/statuses/'.$id.'/unfavourite'); +return $response; +} +public function timelines_home () { +$response = $this->_get('/api/v1/timelines/home'); +return $response; +} +public function timelines_public ($parameters = array()) { +$response = $this->_get('/api/v1/timelines/public',$parameters); +return $response; +} +public function timelines_tag ($hashtag,$parameters = array()) { +$response = $this->_get('/api/v1/timelines/tag/'.$hashtag,$parameters); +return $response; +} +} +?> \ No newline at end of file diff --git a/authorize/mastodon.php b/authorize/mastodon.php new file mode 100644 index 0000000..66b5c22 --- /dev/null +++ b/authorize/mastodon.php @@ -0,0 +1,51 @@ +datadir = "../data"; +$this->clientName = $appSettings["App"]["api_client_name"]; +$this->clientRedirectUris = $appSettings["App"]["api_client_website"].'/auth urn:ietf:wg:oauth:2.0:oob'; +$this->clientWebsite = $appSettings["App"]["api_client_website"]; +$this->clientScopes = array('read','write','follow'); +$this->instances = array(); +$this->readInstances(); +} +private function newInstance($domain) { +$res = $this->create_app($this->clientName,$this->clientScopes,$this->clientRedirectUris,$this->clientWebsite); +if(isset($res['html']['client_id'])) { +$this->instances[$domain] = $res['html']; +file_put_contents($this->datadir."/".substr($domain,8).".txt",json_encode(array("client_id" => $res['html']['client_id'],"client_secret" => $res['html']['client_secret']))); +} +else { +throw new Exception("Invalid instance"); +} +} +public function selectInstance($domain) { +$this->set_url($domain); +if(!$this->instanceExists($domain)) { +$this->newInstance($domain); +} +$this->set_client($this->instances[$domain]['client_id'],$this->instances[$domain]['client_secret']); +} +public function getInstance($domain) { +$this->set_url($domain); +if (!$this->instanceExists($domain)) { +$this->newInstance($domain); +} +return array('client_id' => $this->instances[$domain]['client_id'],'client_secret' => $this->instances[$domain]['client_secret']); +} +public function instanceExists($domain) { +return isset($this->instances[$domain]); +} +private function readInstances() { +$instlist = array_diff(scandir($this->datadir),array("..",".",".htaccess")); +foreach($instlist as $index => $item) { +$itemname = "https://".substr($item,0,-4); +$this->instances[$itemname] = json_decode(file_get_contents($this->datadir."/".$item),true); +} +} +} +?> \ No newline at end of file diff --git a/config.ini.sample b/config.ini.sample index 2661a1f..13fada1 100644 --- a/config.ini.sample +++ b/config.ini.sample @@ -2,10 +2,3 @@ [App] api_client_name = APPLICATION'S NAME api_client_website = HTTPS://YOURDOMAIN.COM/ - -; MySQL Settings -[Mysql] -db_host = YOUR DATABASE'S HOST -db_user = YOUR DATABASE'S USER -db_pass = YOUR DATABASE'S PASSWORD -db_name = YOUR DATABASE'S NAME diff --git a/data/.htaccess b/data/.htaccess new file mode 100644 index 0000000..8d2f256 --- /dev/null +++ b/data/.htaccess @@ -0,0 +1 @@ +deny from all diff --git a/federated.php b/federated.php new file mode 100644 index 0000000..dbc1a04 --- /dev/null +++ b/federated.php @@ -0,0 +1,37 @@ + +
    +
    + +
    +
    + +
    +
    + +
    +
      +
    +
    + +
    +
    + +
    +
    + + \ No newline at end of file diff --git a/public_html/footer.php b/footer.php similarity index 66% rename from public_html/footer.php rename to footer.php index e1bb889..27f3f4a 100644 --- a/public_html/footer.php +++ b/footer.php @@ -1,76 +1,52 @@ - -
    -
    - -
    -
    - -
    - -
    - -
    - - - -
    - - - -
    +
    +
    +
    +
    + + + +
    + +
    - - - \ No newline at end of file diff --git a/header.php b/header.php new file mode 100644 index 0000000..f6d20c3 --- /dev/null +++ b/header.php @@ -0,0 +1,125 @@ + + + + + + +Halcyon + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/home.php b/home.php new file mode 100644 index 0000000..ff260c1 --- /dev/null +++ b/home.php @@ -0,0 +1,37 @@ + +
    +
    + +
    +
    + +
    +
    + +
    +
      +
    +
    + +
    +
    + +
    +
    + + \ No newline at end of file diff --git a/public_html/index.php b/index.php similarity index 100% rename from public_html/index.php rename to index.php diff --git a/local.php b/local.php new file mode 100644 index 0000000..ddb5013 --- /dev/null +++ b/local.php @@ -0,0 +1,44 @@ + +
    +
    + +
    +
    + +
    +
    + +
    +
      +
    +
    + +
    +
    + +
    +
    + + \ No newline at end of file diff --git a/login/assets/css/style.css b/login/assets/css/style.css new file mode 100644 index 0000000..4e5f847 --- /dev/null +++ b/login/assets/css/style.css @@ -0,0 +1,451 @@ +@charset "utf-8"; +* { +margin: 0; +padding: 0; +font-size: 100%; +} +a { +text-decoration: none; +word-break: break-all; +color: inherit; +} +a:hover { +text-decoration: underline; +} +ul, ol { +list-style: none; +padding: 0; +margin: 0; +} +img { +vertical-align: top; +border: 0; +max-width: 100%; +max-height: 100%; +} +button { +font-size: 100%; +} +.clear { +clear: both; +} +.red { +color: red!important; +} +.invisible { +display: none!important; +} +.no-events { +pointer-events: none!important; +} +.no-underline, +.no-underline:hover { +text-decoration: none!important; +} +.disallow_select { +user-select: none; +-ms-user-select: none; +-webkit-user-select: none; +-moz-user-select: none; +} +.text_ellipsis { +text-overflow: ellipsis; +overflow: hidden; +white-space: nowrap; +} +.pointer { +cursor: pointer; +} +.khmer_font { +font-family: "Khmer MN", Helvetica, Arial, sans-serif!important; +} +.gill_font { +font-family: "Gill Sans", Helvetica, Arial, sans-serif!important; +} +.trebuchet_font { +font-family: "Trebuchet MS", Helvetica, Arial, sans-serif!important; +} +h1, h2, h3, h4, h5, h6 { +font-weight: normal; +line-height: 1; +margin: 0; +padding: 0; +} +blockquote, q { +quotes: none; +margin: 0; +} +blockquote * { +margin: 0; +word-break: break-all; +} +blockquote:before, blockquote:after, +q:before, q:after { +content:''; +content:none; +} +article,aside,details,figcaption,figure, +footer,header,hgroup,menu,nav,section { +display:block; +} +textarea { +width: 100%; +} +input { +max-width: 100%; +} +button, +input[type="submit"], +input[type="button"], +input[type="text"], +input[type="password"], +textarea, +select{ +background-color: transparent; +border: none; +cursor: pointer; +outline: none; +padding: 0; +appearance: none; +} +input:-webkit-autofill { +-webkit-box-shadow: 0 0 0px 1000px transparent inset; +} +img.emoji { +height: 1em; +width: 1em; +margin: 0 .05em 0 .1em; +vertical-align: -0.1em; +} +html { +font-family : "Trebuchet MS",Helvetica,Arial,sans-serif; +font-size : 100%; +line-height : 1; +color: #333; +min-width: 100%; +min-height: 100%; +} +body { +margin: 0; +padding: 0; +min-width: 100%; +min-height: 100%; +word-wrap:break-word; +background-color: #F5F8FA; +} +#header { +width: 100%; +height: 56px; +color: #fff; +background-color: #222; +box-shadow: 0px 3px 5px rgba(0,0,0,0.26); +position: fixed; +z-index: 999; +} +#header #header_wrap { +display: flex; +justify-content: flex-start; +align-items: center; +width: 100%; +height: 100%; +} +#header #header_wrap > .header_box { +height: 100%; +flex-grow: 1; +flex-shrink: 0; +} +#header #header_wrap .header_box.header_right_box { +display: flex; +justify-content: flex-start; +} +#header #header_wrap .header_box.header_right_box .title_box { +height: 100%; +margin-left: 24px; +box-sizing: border-box; +} +#header #header_wrap .header_box.header_left_box { +display: flex; +justify-content: flex-end; +} +#header #header_wrap .header_box.header_left_box nav { +height: 100%; +} +#header #header_wrap .header_box.header_left_box .nav_box ul { +display: block; +height: 100%; +width: 100%; +} +#header #header_wrap .header_box.header_left_box .nav_box ul a { +height: 100%; +} +#header #header_wrap .header_box.header_left_box .nav_box ul li { +display: block; +float: left; +cursor: pointer; +height: calc(100% - 5px*2 ); +margin-top: 5px; +border-bottom: 0px solid #007BD0; +} +#header #header_wrap .header_box.header_left_box .nav_box ul li span { +display: block; +height: 100%; +margin: auto; +padding: 15px 24px; +font-size: 14px; +box-sizing: border-box; +} +#header #header_wrap .header_box.header_left_box .nav_box ul li span i { +margin-right: 4px; +} +#header #header_wrap .header_box.header_left_box .nav_box ul li:hover { +color: #189EFC; +border-bottom-width: 5px; +transition: 0.15s ease-out; +} +#main { +padding-top: 56px; +} +#main #login_form_wrap { +width: 100%; +height: 560px; +padding: 56px 0; +margin-bottom: -200px; +box-sizing: border-box; +background-image: url("/login/assets/images/background.jpg"); +background-size: cover; +background-repeat: no-repeat; +} +#main #login_form_wrap .login_form { +position: relative; +width: 640px; +height: 220px; +padding: 36px 24px; +margin: auto; +overflow: hidden; +background: inherit; +box-sizing: border-box; +border-radius: 4px; +border: 1px solid #C9EFF8; +text-align: center; +box-shadow: 0px 5px 5px rgba(0,0,0,0.26); +transition: 0.25s ease-out; +} +#main #login_form_wrap .login_form.expand { +width: 780px; +transition: 0.25s ease-out; +} +#main #login_form_wrap .login_form::before { +display: block; +position: absolute; +content: ""; +top: -3px; +left: -3px; +right: -3px; +bottom: -3px; +background: inherit; +background-position: top center; +filter: blur(3px); +border-radius: 5px; +z-index: 0; +} +#main #login_form_wrap .login_form form { +position: relative; +margin: auto; +z-index: 1; +color: #C9EFF8; +} +#main #login_form_wrap .login_form form a { +color: #fff; +} +#main #login_form_wrap .login_form h2 { +font-size: 32px; +font-weight: 600; +margin-bottom: 16px; +transition: 0.25s ease-out; +} +#main #login_form_wrap .login_form.expand h2 { +font-size: 42px; +transition: 0.25s ease-out; +} +#main #login_form_wrap .login_form p { +margin-bottom: 16px; +transition: 0.25s ease-out; +} +#main #login_form_wrap .login_form.expand p { +opacity: 0; +margin-bottom: 0; +transition: 0.25s ease-out; +} +#main #login_form_wrap .login_form .login_form_main { +display: flex; +flex-wrap: nowrap; +justify-content: flex-start; +align-items: center; +margin: auto; +height: 32px; +width: 276px; +border: 1px solid #C9EFF8; +border-radius: 32px; +background-color: rgba(0,0,0,.3); +transition: 0.25s ease-out; +} +#main #login_form_wrap .login_form.expand .login_form_main { +width: 360px; +height: 42px; +transition: 0.25s ease-out; +} +#main #login_form_wrap .login_form .login_form_main.active { +box-shadow: 0px 3px 5px rgba(0,0,0,0.26); +} +#main #login_form_wrap .login_form .login_form_main input[name="acct"] { +display: block; +-webkit-appearance : none; +flex-grow: 1; +padding: 4px 0 4px 14px; +color: #C9EFF8; +border: none; +background: none; +box-sizing: border-box; +transition: 0.25s ease-out; +} +#main #login_form_wrap .login_form.expand .login_form_main input[name="acct"]{ +flex-grow: 2; +padding: 8px 0 8px 14px; +transition: 0.25s ease-out; +} +#main #login_form_wrap .login_form .login_form_main .login_form_continue { +display: block; +flex-grow: 1; +color: #C9EFF8; +} +#main #login_form_wrap .login_form .login_form_main .login_form_continue:hover { +color: #fff; +} +#main #login_form_wrap .login_form .login_form_agree { +margin: 16px auto 0; +} +#main #login_form_wrap .login_form .login_form_agree i { +color: #fff; +} +#article { +position: relative; +width: 640px; +margin: auto; +margin-bottom: 56px; +padding: 24px 36px 36px; +border-radius: 4px; +background-color: #fff; +box-sizing: border-box; +box-shadow: 3px 3px 5px rgba(0,0,0,0.26); +} +#article h2 { +font-size: 32px; +font-weight: 600; +margin: 16px 0; +} +#article p { +display: inline-block; +margin-bottom: 16px; +font-size: 16px; +line-height: 1.2; +} +#article .image_wrap { +display: block; +position: relative; +margin: 0 -36px 24px; +border-top: 0.5px solid #555; +border-bottom: 0.5px solid #555; +} +#article .image_wrap ul { +display: block; +position: relative; +width: 100%; +height: 370px; +overflow: hidden; +} +#article .image_wrap ul li { +position: absolute; +top: 0; +left: 0; +} +@keyframes fadeout { +0% {opacity: 1;} +100% {opacity: 0;} +} +@keyframes fadein { +0% {opacity: 0;} +100% {opacity: 1;} +} +#article .image_wrap ul li.fadeout { +animation-name: fadeout; +animation-duration: 0.5s; +animation-fill-mode: forwards; +} +#article .image_wrap ul li.fadein { +animation-name: fadein; +animation-duration: 0.5s; +animation-fill-mode: forwards; +} +#article .image_wrap .switch_button { +display: block; +opacity: 0; +position: absolute; +top: 0; +width: 30px; +height: 100%; +color: #fff; +background-color: rgba(0, 0, 0, .3); +transition: 0.15s ease-out; +} +#article .image_wrap:hover .switch_button { +opacity: 1; +transition: 0.15s ease-out; +} +@keyframes switching_image_list { +0% {background-color: rgba(0, 0, 0, .3);} +50% {background-color: rgba(0, 0, 0, .8);} +100% {background-color: rgba(0, 0, 0, .3);} +} +#article .image_wrap:hover .switch_button.active { +animation-name: switching_image_list; +animation-duration: 0.35s; +} +#article .image_wrap .switch_button.prev_button { +left: 0; +} +#article .image_wrap .switch_button.next_button { +right: 0; +} + +#article a { +color: #189EFC; +} +#footer { +width: 640px; +padding: 24px 36px 12px; +box-sizing: border-box; +margin: auto; +border-top-right-radius: 4px; +border-top-left-radius: 4px; +box-shadow: 3px 3px 5px rgba(0,0,0,0.26); +background-color: #222; +} +#footer .footer_anchor { +display: flex; +justify-content: center; +align-items: center; +color: #444; +font-size: 36px; +transition: 0.15s ease-out; +} +#footer .footer_anchor:hover { +color: #555; +transition: 0.15s ease-out; +} +#footer span { +font-size: 14px; +color: #ddd; +margin: auto; +display: block; +text-align: center; +} \ No newline at end of file diff --git a/public_html/login/assets/images/background.jpg b/login/assets/images/background.jpg similarity index 100% rename from public_html/login/assets/images/background.jpg rename to login/assets/images/background.jpg diff --git a/public_html/login/assets/images/halcyon-title.png b/login/assets/images/halcyon-title.png similarity index 100% rename from public_html/login/assets/images/halcyon-title.png rename to login/assets/images/halcyon-title.png diff --git a/public_html/login/assets/images/halcyon_logo.png b/login/assets/images/halcyon_logo.png similarity index 100% rename from public_html/login/assets/images/halcyon_logo.png rename to login/assets/images/halcyon_logo.png diff --git a/public_html/login/assets/images/preview0.png b/login/assets/images/preview0.png similarity index 100% rename from public_html/login/assets/images/preview0.png rename to login/assets/images/preview0.png diff --git a/public_html/login/assets/images/preview1.png b/login/assets/images/preview1.png similarity index 100% rename from public_html/login/assets/images/preview1.png rename to login/assets/images/preview1.png diff --git a/public_html/login/assets/images/preview2.png b/login/assets/images/preview2.png similarity index 100% rename from public_html/login/assets/images/preview2.png rename to login/assets/images/preview2.png diff --git a/login/assets/js/halcyon_login.js b/login/assets/js/halcyon_login.js new file mode 100644 index 0000000..7ff4d97 --- /dev/null +++ b/login/assets/js/halcyon_login.js @@ -0,0 +1,43 @@ +$(function() { +$(document).on('change','.login_form_agree #agree', function(e) { +const icon = $(this).parent().find('i.fa'); +if ( $(this).prop('checked') ) { +icon.addClass("fa-check-square-o"); +icon.removeClass("fa-square-o"); +} else if ( !$(this).prop('checked') ) { +icon.addClass("fa-square-o"); +icon.removeClass("fa-check-square-o"); +} +}); +$(document).on('focus', '#main #login_form_wrap .login_form .login_form_main input[name="acct"]', function(e) { +$(this).parent().addClass('active') +$(".login_form").addClass('expand'); +}) +$(document).on('blur', '#main #login_form_wrap .login_form .login_form_main input[name="acct"]', function(e) { +$(this).parent().removeClass('active') +$(".login_form").removeClass('expand'); +}) +$(document).on('mousedown', '.image_wrap .switch_button', function(e) { +const self = $(this); +self.addClass('active'); +setTimeout(function() { +self.removeClass('active'); +}, 500); +}) +$(document).on('click', '.image_wrap .prev_button', function(e) { +const firstChild = $(this).parent(".image_wrap").find('ul li:first-child'); +firstChild.appendTo(".image_wrap ul"); +firstChild.addClass('fadein'); +setTimeout(function() { +firstChild.removeClass('fadein'); +}, 500); +}) +$(document).on('click', '.image_wrap .next_button', function(e) { +const lastChild = $(this).parent(".image_wrap").find('ul li:last-child');; +lastChild.addClass('fadeout'); +setTimeout(function() { +lastChild.prependTo(".image_wrap ul"); +lastChild.removeClass('fadeout'); +}, 500); +}) +}) \ No newline at end of file diff --git a/login/auth.php b/login/auth.php new file mode 100644 index 0000000..3302580 --- /dev/null +++ b/login/auth.php @@ -0,0 +1,49 @@ + + + + +selectInstance($URL); +$response = $api->get_access_token($api->clientWebsite.'/auth?&host='.$domain, htmlspecialchars((string)filter_input(INPUT_GET, 'code'), ENT_QUOTES)); +if ($response['html']["access_token"]) { +$access_token = $response['html']["access_token"]; +$account_id = $api->accounts_verify_credentials()['html']['id']; +echo " + +"; +} +} +?> + + + + + + diff --git a/login/login.php b/login/login.php new file mode 100644 index 0000000..529207e --- /dev/null +++ b/login/login.php @@ -0,0 +1,170 @@ +clientWebsite.'/login?cause=domain', true, 303); +die(); +} else { +try { +$client_id = $api->getInstance($URL)["client_id"]; +$authorizeURL= $URL.'/oauth/authorize?client_id='.$client_id.'&response_type=code&scope=read+write+follow&website='.$api->clientWebsite.'&redirect_uri='.urlencode($api->clientWebsite.'/auth?&host='.$domain); +header("Location: {$authorizeURL}", true, 303); +die(); +} catch (Exception $e) { +header('Location: '.$api->clientWebsite.'/login?cause=domain', true, 303); +die(); +} +} +} +?> + + + + + + +Halcyon for Mastodon + + + + + + + + + + +
    +
    + +
    +
    +

    What is Halcyon

    +

    +Halcyon is standard Twitter like client of Mastodon, And you can use it just by login to your instance. Let's Toot like a tweet. +

    +
    +
      +
    • halcyon_screenshot
    • +
    • halcyon_screenshot
    • +
    • halcyon_screenshot
    • +
    + + +
    +

    Contact / Feedback

    +

    +Mastodon: @halcyon@social.csswg.org
    +Email: Use my contact form
    +Github: halcyon-suite/halcyon +

    +

    Help us

    +

    +Bitcoin: 1D6GThQqHQYnruKYrKyW9JC86ZGWxjt1hK
    +

    +
    +
    + + + + + + + \ No newline at end of file diff --git a/public_html/login/logout.php b/login/logout.php similarity index 89% rename from public_html/login/logout.php rename to login/logout.php index bb5475b..53cd0b0 100644 --- a/public_html/login/logout.php +++ b/login/logout.php @@ -1,3 +1,3 @@ - + \ No newline at end of file diff --git a/login/terms.php b/login/terms.php new file mode 100644 index 0000000..0849bf8 --- /dev/null +++ b/login/terms.php @@ -0,0 +1,100 @@ + + + + + + +Halcyon for Mastodon + + + + + + + + + +
    +
    +

    Halcyon Terms of Use

    +

    This terms of use agreement is for the users of web service Halcyon for Mastodon (Halcyon for short) hosted at example.com.

    +
    +

    1. Agreement

    +

    By logging into Halcyon you agree to this terms of use agreement. Do not use this service if you do not agree to these terms.

    +
    +

    2. Change

    +

    We reserve the right to modify these terms of use at any time if deemed necessary.

    +
    +

    3. Account

    +

    Users can connect to various Mastodon accounts from Halcyon, and Halcyon will not interfere with those connection.

    +
    +

    4. Content

    +

    Halcyon does not own the right to or hold responsibility for any text, image, animation, audio content accessible from Halcyon. The right and responsibility belong to the owners of instances that host those content.

    +
    +

    5. Guideline

    +

    Halcyon reserves the right to terminate service for

    +
      +
    • actions violating the laws of countries
    • +
    • actions contrary to public order and standards of decency
    • +
    • violation of third party’s right to intellectual property, brand, privacy, etc.
    • +
    • acts of violence, sexual nature, of discrimination
    • +
    • phishing or spamming
    • +
    • actions causing problem to the network infrastructure of Halcyon
    • +
    +
    +

    6. Disclaimer

    +

    Halcyon is not responsible for any damage caused by using this service.

    +
    +

    Last updated 2017/5/12

    +
    +
    + + \ No newline at end of file diff --git a/notifications.php b/notifications.php new file mode 100644 index 0000000..44d9baa --- /dev/null +++ b/notifications.php @@ -0,0 +1,42 @@ + +
    +
    + +
    +
    + +
    +
    + +
    +
      +
    +
    + +
    +
    + +
    +
    + + \ No newline at end of file diff --git a/public_html/404.php b/public_html/404.php deleted file mode 100644 index fe03c53..0000000 --- a/public_html/404.php +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - - - Halcyon / ? - - - - - - - -
    - -

    404

    -

    Sorry, something went wrong.

    - -
    - - - \ No newline at end of file diff --git a/public_html/assets/css/404.css b/public_html/assets/css/404.css deleted file mode 100644 index 9a68a47..0000000 --- a/public_html/assets/css/404.css +++ /dev/null @@ -1,169 +0,0 @@ -@charset "utf-8"; - -/*-------------------------------------- - Reset ---------------------------------------*/ - -* { - margin: 0; - padding: 0; - font-size: 100%; -} - -a { - text-decoration: none; - word-break: break-all; - color: inherit; -} - -a:hover { - text-decoration: underline; -} - -ul, ol { - list-style: none; - padding: 0; - margin: 0; -} - -img { - vertical-align: top; - border: 0; - max-width: 100%; - max-height: 100%; -} - -button { - font-size: 100%; -} - -.clear { - clear: both; -} - -.red { - color: red!important; -} - -.invisible { - display: none!important; -} - -.no-events { - pointer-events: none; -} - -.disallow_select { - user-select: none; - -ms-user-select: none; - -webkit-user-select: none; - -moz-user-select: none; -} - -.text_ellipsis { - text-overflow: ellipsis; - overflow: hidden; - white-space: nowrap; -} - -h1, h2, h3, h4, h5, h6 { - font-weight: normal; - line-height: 1; - margin: 0; - padding: 0; -} - -blockquote, q { - quotes: none; - margin: 0; -} - -blockquote * { - margin: 0; - word-break: break-all; -} - -blockquote:before, blockquote:after, -q:before, q:after { - content:''; - content:none; -} - -article,aside,details,figcaption,figure, -footer,header,hgroup,menu,nav,section { - display:block; -} - -textarea { - width: 100%; -} - -input { - max-width: 100%; -} - -button, input[type="submit"], input[type="button"]{ - background-color: transparent; - border: none; - cursor: pointer; - outline: none; - padding: 0; - appearance: none; -} - -/* Twitter Emoji Prefix */ -img.emoji { - height: 1em; - width: 1em; - margin: 0 .05em 0 .1em; - vertical-align: -0.1em; -} - -.emoji_poss .auth_emoji { - display: inline-block; - height: 100%; - margin: auto; - margin-left: 4px; -} - -/*-------------------------------------- - Base ---------------------------------------*/ - -html { - font-family : "Helvetica Neue",Helvetica,"ヒラギノ角ゴ Pro W3", - "Hiragino Kaku Gothic Pro",Meiryo,"メイリオ","MS Pゴシック",Arial,sans-serif; - font-size : 100%; - line-height : 1; - color: #333; - min-width: 100%; - min-height: 100%; -} - -body { - margin: 0; - padding: 0; - min-width: 100%; - min-height: 100%; - word-wrap:break-word; - background-color: #189EFC; -} - -article { - margin: auto; - padding: 24px; -} - -h1 { - font-size: 248px; - text-align: center; - color: #fff; - font-weight: 600; -} - -h2 { - font-size: 56px; - text-align: center; - color: #fff; - font-weight: 200; -} \ No newline at end of file diff --git a/public_html/assets/css/style.css b/public_html/assets/css/style.css deleted file mode 100644 index 5a03d03..0000000 --- a/public_html/assets/css/style.css +++ /dev/null @@ -1,2894 +0,0 @@ -@charset "utf-8"; - -/*-------------------------------------- - Reset ---------------------------------------*/ - -* { - margin: 0; - padding: 0; - font-size: 100%; -} - -a { - text-decoration: none; - word-break: break-all; - color: inherit; -} - -a:hover { - text-decoration: underline; -} - -ul, ol { - list-style: none; - padding: 0; - margin: 0; -} - -img { - vertical-align: top; - border: 0; - max-width: 100%; - max-height: 100%; -} - -button { - font-size: 100%; -} - -.clear { - clear: both; -} - -.red { - color: red!important; -} - -.invisible { - display: none!important; -} - -.no-events { - pointer-events: none; -} - -.disallow_select { - user-select: none; - -ms-user-select: none; - -webkit-user-select: none; - -moz-user-select: none; -} - -.text_ellipsis { - text-overflow: ellipsis; - overflow: hidden; - white-space: nowrap; -} - -h1, h2, h3, h4, h5, h6 { - font-weight: normal; - line-height: 1; - margin: 0; - padding: 0; -} - -blockquote, q { - quotes: none; - margin: 0; -} - -blockquote * { - margin: 0; - word-break: break-all; -} - -blockquote:before, blockquote:after, -q:before, q:after { - content:''; - content:none; -} - -article,aside,details,figcaption,figure, -footer,header,hgroup,menu,nav,section { - display:block; -} - -textarea { - width: 100%; -} - -input { - max-width: 100%; -} - -button, input[type="submit"], input[type="button"]{ - background-color: transparent; - border: none; - cursor: pointer; - outline: none; - padding: 0; - appearance: none; -} - -/* Twitter Emoji Prefix */ -img.emoji { - height: 1em; - width: 1em; - margin: 0 .05em 0 .1em; - vertical-align: -0.1em; -} - -.emoji_poss .auth_emoji { - display: inline-block; - height: 100%; - margin: auto; - margin-left: 4px; -} - -/*-------------------------------------- - Base ---------------------------------------*/ - -html { - font-family : "Helvetica Neue",Helvetica,"ヒラギノ角ゴ Pro W3", - "Hiragino Kaku Gothic Pro",Meiryo,"メイリオ","MS Pゴシック",Arial,sans-serif; - font-size : 100%; - line-height : 1; - color: #333; - min-width: 100%; - min-height: 100%; -} - -body { - margin: 0; - padding: 0; - min-width: 100%; - min-height: 100%; - word-wrap:break-word; - background-color: #F5F8FA; -} - -/*-------------------------------------- - Form ---------------------------------------*/ - -.status_form { - width: 100%; - padding: 12px; - box-sizing: border-box; - background-color: #E8F4FB; -} - -/* ready to post */ -.status_form.ready { - background-color: #F2FAFF!important; -} -.status_form.ready .status_bottom .status_media_attachment, -.status_form.ready .status_bottom .status_privacy { - color: #7ECEFF!important; -} -.status_form.ready .status_bottom .status_CW > span, -.status_form.ready .status_bottom .status_NSFW > span { - background-color: #7ECEFF!important; -} -.status_form.ready .status_bottom .submit_status_label { - background-color: #A3D8FF!important; - pointer-events: none; - cursor: default; -} - -.status_form .status_top { - display: flex; - align-items: center; - width: calc( 100% - 54px ); - padding-bottom: 0; - margin-left: 54px; - box-sizing: border-box; -} - -.status_form .status_top .status_spoiler { - color: #189EFC; - width: 100%; - height: 35px; - border-radius: 4px; - border: 1px solid #C7E7FB; - font-size: 14px; - padding: 8px; - box-sizing: border-box; -} - -.status_form .status_main { - display: flex; - flex-wrap: nowrap; -} - -.status_form .status_main .icon_box { - flex-shrink: 0; - margin-right: 8px; - width: 32px; - height: 32px; - border-radius: 5px; - overflow: hidden; - margin-left: 14px; -} - -.status_form .status_main .status_textarea { - flex: 1; - padding: 8px; - border-radius: 3px; - box-sizing: border-box; - border: 1px solid #C7E7FB; - background-color: #fff; - overflow: hidden; -} - -.status_form .status_main .status_textarea textarea { - color: #189EFC; - resize: none; - height: 18px; - border: none; - max-width: 100%; - font-size: 14px; - font-family : "Helvetica Neue",Helvetica,"ヒラギノ角ゴ Pro W3", - "Hiragino Kaku Gothic Pro",Meiryo,"メイリオ","MS Pゴシック",Arial,sans-serif; - line-height: normal; -} - -.status_form .status_textarea textarea.focus { - outline: 0; - color: #000; - height: 68px; -} - -.status_form .status_textarea .media_attachments_preview_area { - display: flex; - flex-wrap: nowrap; - margin: 8px -8px -8px -8px; - padding: 8px 12px; - background-color: #F1F1F1; - border-top: 1px solid #C7E7FB; -} - -.status_form .status_textarea .media_attachments_preview { - position: relative; - flex-shrink: 0; - max-width: 113px; - height: 113px; - margin-right: 8px; - border-radius: 5px; - border: 1px solid #C7E7FB; - overflow: hidden; - flex: 1; - background-color: #fff; -} - -.status_form .status_textarea .media_attachments_preview:last-child { - margin-right: 0; -} - -.status_form .status_textarea .media_attachments_preview_area.nsfw .media_attachments_preview::after { - display: block; - content: ""; - cursor: pointer; - top: 0; - font-weight: 300; - width: 100%; - height: 100%; - position: absolute; - background-color: rgba(0, 0, 0, 1); - transition: 0.13s; -} - -.status_form .status_textarea .media_attachments_preview_area.nsfw .media_attachments_preview:hover::after { - background-color: rgba(0, 0, 0, 0); - transition: 0.13s; -} - -.status_form .status_textarea .media_attachments_preview img { - width: 100%; - height: 100%; - object-fit: cover; -} - -.status_form .status_textarea .media_attachments_preview .remove_button { - position: absolute; - z-index: 1; - right: 0; - top: 0; - color: #fff; - background-color: rgba(0, 0, 0, .8); - border-radius: 50%; - width: 19px; - height: 19px; - display: flex; - align-content: center; - justify-content: center; - font-size: 14px; - margin: 4px 4px 0 0; -} - -.status_form .status_bottom { - display: flex; - align-items: center; - width: calc( 100% - 52px ); - padding: 8px 0; - padding-bottom: 0; - box-sizing: border-box; - padding-right: 0; - margin-left: 52px; -} - -.status_form .status_bottom .status_option_button { - cursor: pointer; - color: #43A7E5; - font-size: 21px; - border-radius: 3px; - padding: 8px 12px; - box-sizing: border-box; - border: 1px solid transparent;; - height: 39px; - display: flex; - justify-content: center; - align-items: center; -} - -.status_form .status_bottom .status_option_button:hover { - border: 1px solid #C7E7FB -} - -.status_form .status_bottom .status_option_button.active { - animation-name: status_action_active; - animation-duration: 0.5s; -} - -.status_form .status_bottom .status_CW > span, -.status_form .status_bottom .status_NSFW > span { - display: flex; - align-items: center; - height: 22px; - padding: 4px; - color: #E8F4FB; - border-radius: 3px; - box-sizing: border-box; - background-color: #43A7E5; - text-align: center; -} - -.status_form .status_bottom .status_CW > span { - font-size: 10px; -} - -.status_form .status_bottom .status_NSFW > span { - font-size: 8px; -} - - -.status_form .status_bottom .status_privacy { - position: relative; -} - -.status_form .status_bottom .status_privacy .expand_privacy_menu { - display: block; - position: absolute; - cursor: pointer; - top: 32px; - right: -122px; - width: 160px; - padding: 18px; - font-size: 12px; - border-radius: 3px; - box-sizing: border-box; - background-color: #fff; - box-shadow: 0.5px 0.5px 3px rgba(0,0,0,0.26); - z-index: 2; -} - -.status_form .status_bottom .status_privacy .expand_privacy_menu::before { - display: block; - content: ""; - z-index: -1; - width: 20px; - height: 20px; - position: absolute; - transform: rotate(45deg); - top: -5px; - left: 8px; - background-color: #fff; -} - -.status_form .status_bottom .status_privacy .expand_privacy_menu .status_privacy { - display: block; - cursor: pointer; - font-size: 14px; - margin-bottom: 12px; - color: rgb(101, 119, 134); - text-align: left; -} - -.status_form .status_bottom .status_privacy .expand_privacy_menu .status_privacy:last-child { - margin-bottom: 0; -} - -.status_form .status_bottom .status_privacy .expand_privacy_menu .status_privacy:hover { - color: #189EFC; -} - -.status_form .status_bottom .status_privacy .expand_privacy_menu .status_privacy i { - margin-right: 4px; -} - -.status_form .status_bottom .submit_status_label_wrap { - flex-grow: 1; - display: flex; - align-items: center; - justify-content: flex-end; - height: 39px; -} - -.status_form .status_bottom .character_count { - color: #66757F; - font-size: 14px; - padding: 0 12px; - box-sizing: border-box; -} - -.status_form .status_bottom .submit_status_label { - height: 100%; - padding: 6px 24px; - cursor: pointer; - float: right; - border-radius: 4px; - color: #fff; - background-color: #2588D0; - transition: 0.15s ease-out; - box-sizing: border-box; - display: flex; - justify-content: center; - align-items: center; -} - -.status_form .status_bottom .submit_status_label:hover { - background-color: #2571D0; - transition: 0.15s ease-out; -} - -.status_form .status_bottom .submit_status_label:active { - background-color: #255ED0; - transition: 0.15s ease-out; -} - -.status_form .status_bottom .submit_status_label .toot_button_label { - display: flex; - justify-content: center; - align-items: center; -} - -.status_form .status_bottom .submit_status_label .toot_button_label i { - display: inline-block; - font-size: 21px; - margin-right: 2px; -} - -.status_form .status_bottom .submit_status_label .toot_button_label span { - font-size: 13px; - font-weight: 500; -} - -/*-------------------------------------- - Status : overlay ---------------------------------------*/ - -.overlay_status{ - /*! width: 628px; */ - /*! margin: auto; */ - /*! z-index: 1000; */ - /*! top: 20%; */ - /*! left: 0; */ - /*! position: absolute; */ - /*! right: 0; */ - /*! bottom: 0; */ - margin-top: 20%; -} - -.overlay_status_header { - width: 600px; - padding: 16px; - box-sizing: border-box; - background-color: #fff; - border-top-left-radius: 5px; - border-top-right-radius: 5px; - margin: auto; - text-align: center; - color: #66757F; - font-size: 18px; - font-weight: 300; -} - -#overlay_status_form.status_form { - width: 600px; - padding: 16px; - box-sizing: border-box; - background-color: #E8F4FB; - border-bottom-left-radius: 5px; - border-bottom-right-radius: 5px; - margin: auto; -} - -#overlay_status_form.status_form .status_top { - width: 100%; - margin-left: 0; -} - -#overlay_status_form.status_form .status_main { - display: flex; - flex-wrap: nowrap; -} - -#overlay_status_form.status_form .status_main .status_textarea { - flex: 1; -} - -#overlay_status_form.status_form .status_main .status_textarea textarea { - color: #000; - resize: none; - max-width: 100%; - height: auto; - min-height: 72px; - border-radius: 5px; - font-family : "Helvetica Neue",Helvetica,"ヒラギノ角ゴ Pro W3", - "Hiragino Kaku Gothic Pro",Meiryo,"メイリオ","MS Pゴシック",Arial,sans-serif; - font-size: 14px; - padding: 4px; - outline: 0; - box-sizing: border-box; -} - -#overlay_status_form.status_form .status_bottom { - display: flex; - align-items: center; - width: auto; - padding: 8px 0; - padding-bottom: 0; - margin-left: 0; - box-sizing: border-box; - padding-right: 0; -} - -/*-------------------------------------- - Status : reply ---------------------------------------*/ - -#reply_status_form.status_form:last-child { - border-bottom-left-radius: 5px; - border-bottom-right-radius: 5px; -} - -/*-------------------------------------- - Status : single reply ---------------------------------------*/ - -.single_reply_status { - width: 600px; - margin: auto; - /*! z-index: 1000; */ - /*! top: 25%; */ - /*! left: 0; */ - /*! height: 100%; */ - /*! position: absolute; */ - /*! right: 0; */ - /*! bottom: 0; */ - margin-top: 20%; -} - -.single_reply_status_header { - width: 600px; - padding: 16px; - box-sizing: border-box; - background-color: #fff; - border-top-left-radius: 5px; - border-top-right-radius: 5px; - margin: auto; - text-align: center; - color: #66757F; - font-size: 18px; - font-weight: 300; -} - -.single_reply_status .status_preview { - border-top: 1px solid #E1E8ED; -} - -.single_reply_status .status_preview .toot_entry .toot_footer { - display: none!important; -} - -.single_reply_status .status_form .status_bottom { - width: 100%; - margin-left: 0; -} - -#single_reply_status_form.status_form { - width: 600px; - padding: 16px; - box-sizing: border-box; - background-color: #E8F4FB; - border-bottom-left-radius: 5px; - border-bottom-right-radius: 5px; - margin: auto; -} -#single_reply_status_form.status_form .status_bottom .submit_status_label .toot_button_label i { - font-size: 18px; - margin-right: 8px; -} - -/*-------------------------------------- - Status : single reply ---------------------------------------*/ - -.overlay_copy_link { - width: 600px; - margin: auto; - margin-top: 20%; -} - -.overlay_copy_link_header { - width: 600px; - padding: 16px; - box-sizing: border-box; - background-color: #fff; - border-top-left-radius: 5px; - border-top-right-radius: 5px; - margin: auto; - text-align: center; - color: #66757F; - font-size: 18px; - font-weight: 300; - border-bottom: 1px solid #E6ECF0; -} - -.overlay_copy_link .overlay_copy_link_form { - width: 600px; - padding: 16px; - box-sizing: border-box; - background-color: #fff; - border-bottom-left-radius: 5px; - border-bottom-right-radius: 5px; - margin: auto; -} - -.overlay_copy_link .overlay_copy_link_form input { - width: 100%; - height: 36px; - padding: 4px 16px; - border: 1px solid #E6ECF0; - background-color: #F5F8FA; - box-sizing: border-box; - font-size: 14px; - border-radius: 3px; -} - -/*-------------------------------------- - Buttons ---------------------------------------*/ - -/* Base */ -.relationship_button { - display: flex; - flex-wrap: nowrap; - align-items: center; - font-size: 13px; - padding: 6px 13px; - margin-top: 4px; - border-radius: 4px; - border: 1px solid #189EFC; -} - -/* Base */ -.relationship_button i { - margin-right: 4px; -} - -/* Base */ -.relationship_button span { - font-weight: 600; -} - -/* Follow */ -.follow_button {border: 1px solid #189EFC; color: #189EFC;} -.follow_button i {color: #189EFC} -.follow_button:hover, -.follow_button:hover i {background-color: #189EFC;color: #fff;} - -/* Following */ -.following_button, -.following_button i {background-color: #189EFC;color: #fff;} -.following_button:hover, -.following_button:hover i {background-color: #E20055;color: #fff;} - -/* Muting */ -.muting_button {background-color: #E20055;color: #fff;} -.muting_button i {color: #fff;} -.muting_button:hover, -.muting_button:hover i {background-color: #B82424;color: #fff;} - -/* Blocking */ -.blocking_button{background-color: #fff;color: #E20055} -.blocking_button i {color: #E20055;} -.blocking_button:hover, -.blocking_button:hover i {background-color: #B82424;} - -/* IF Myself: Edit profile */ -.profile_edit_button{background-color: #FFF;color: #66757F;border: 1px solid #66757F;} -.profile_edit_button:hover, -.profile_edit_button:hover i {background-color: #F5F8FA;} - -/*-------------------------------------- - Timeline ---------------------------------------*/ - -.timeline_header { - background-color: #fff; - box-sizing: border-box; - border: 1px solid #ECF1F4; - border-bottom: none; - border-top-right-radius: 5px; - border-top-left-radius: 5px; -} - -.timeline_header .header_items { - display: flex; - flex-wrap: nowrap; - align-items: center; -} - -.timeline_header .header_items .item { - display: inline-block; - font-size: 18px; - font-weight: 300; - padding: 15px; - color: #189EFC; - box-sizing: border-box; -} - -.timeline_header .header_items .item.view { - font-weight: 600; - color: #000; -} - -/* timeline */ -.timeline { - background-color: #fff; - box-sizing: border-box; - border: 1px solid #ECF1F4; -} - -/*-------------------------------------- - Timeline Entry ---------------------------------------*/ - -/* Boost only */ -.timeline .boost_author_box { - margin-left: 46px; - margin-bottom: -12px; - padding: 8px 0; - font-size: 12px; - color: rgb(101, 119, 134); - height: 14px; -} - -/* Boost only */ -.timeline .boost_author_box i { - display: inline-block; - width: 10px; - height: 10px; - padding: 2px; - margin-right: 11px; - color: #fff; - background-color: #17BF63; - border-radius: 2px; - font-size: 10px; - /*! height: 14px; */ -} - -.toot_entry { - cursor: pointer; - background-color: #fff; - list-style: none; -} - -.toot_entry:hover { - background-color: #F5F8FA; -} - -.toot_entry .toot_entry_body { - display: flex; - flex-wrap: nowrap; - padding: 12px; - box-sizing: border-box; - border-bottom: 1px solid #ECF1F4; -} - -.toot_entry .toot_entry_body > a { - height: 48px; -} - -.toot_entry .toot_entry_body .icon_box { - flex-shrink: 0; - width: 48px; - height: 48px; - margin-right: 12px; - border-radius: 5px; - overflow: hidden; - z-index: 1; -} - -.toot_entry .toot_entry_body .icon_box img { - width: 48px; - height: 48px; -} - -.toot_entry .toot_entry_body .toot_content { - flex-grow: 1; - height: 100%; - max-width: 504px; - /*! z-index: 1; */ -} - -.toot_entry .toot_entry_body .toot_content .toot_header { - color: rgb(101, 119, 134); - position: relative; - font-size: 14px; - padding-right: 16px; -} - -.toot_entry .toot_entry_body .toot_content .toot_header .text_ellipsis a { - line-height: 1; - height: 16.5px; - margin-bottom: -4.5px; -} - -.toot_entry .toot_entry_body .toot_content .toot_header .displayname { - color: rgb(20, 23, 26); - font-weight: bold; -} - -.toot_entry .toot_entry_body .toot_content .toot_header .displayname:hover { - color: #189EFC; -} - -.toot_entry .toot_entry_body .toot_content .toot_header .right-top_button { - flex: 1; - height: 100%; -} - -/* expand button */ -.toot_entry .toot_entry_body .toot_content .toot_header .expand_button_wrap { - position: absolute; - top: 0; - right: 0; -} - -.toot_entry .toot_entry_body .toot_content .toot_header .expand_button_wrap .expand_button { - position: absolute; - right: 0; - top: 0; - color: #AAB8C2; -} - -.toot_entry .toot_entry_body .toot_content .toot_header .expand_button_wrap .expand_button:hover { - color: #189EFC; -} - -.toot_entry .toot_entry_body .toot_content .toot_header .expand_button_wrap .expand_menu { - display: block; - position: absolute; - cursor: pointer; - top: 36px; - right: -152px; - width: 180px; - padding: 8px 21px; - font-size: 12px; - border-radius: 3px; - box-sizing: border-box; - background-color: #fff; - box-shadow: 0.5px 0.5px 3px rgba(0,0,0,0.26); - z-index: 1; -} - -.toot_entry .toot_entry_body .toot_content .toot_header .expand_button_wrap .expand_menu::before { - display: block; - content: ""; - z-index: -1; - width: 20px; - height: 20px; - position: absolute; - transform: rotate(45deg); - top: -5px; - left: 8px; - background-color: #fff; -} - -.toot_entry .toot_entry_body .toot_content .toot_header .expand_button_wrap .expand_menu ul { - margin: 0 -21px; - margin-bottom: 8px; -} - -.toot_entry .toot_entry_body .toot_content .toot_header .expand_button_wrap .expand_menu ul::after { - content: ""; - display: block; - margin-top: 8px; - border-bottom: 1px solid #E6ECF0; -} - -.toot_entry .toot_entry_body .toot_content .toot_header .expand_button_wrap .expand_menu ul:last-child::after { - border-bottom: 0px solid #E6ECF0; -} - -.toot_entry .toot_entry_body .toot_content .toot_header .expand_button_wrap .expand_menu ul li { - box-sizing: border-box; -} - -.toot_entry .toot_entry_body .toot_content .toot_header .expand_button_wrap .expand_menu ul:last-child li { - margin-bottom: 0; -} - -.toot_entry .toot_entry_body .toot_content .toot_header .expand_button_wrap .expand_menu a { - display: block; - padding: 8px 21px; - box-sizing: border-box; -} - -.toot_entry .toot_entry_body .toot_content .toot_header .expand_button_wrap .expand_menu a:hover { - background-color: #189EFC; - text-decoration: none; - color: #fff; -} - -.toot_entry .toot_entry_body .toot_content .cw_button { - background-color: #6D768C; - border-radius: 3px; - padding: 4px; - margin: auto 4px; - font-size: 8px; - box-sizing: border-box; - color: #fff; -} - -.toot_entry .toot_entry_body .toot_content .toot_article { - font-size: 14px; - line-height: 20px; - margin-top: 4px; -} - -.toot_entry .toot_entry_body .toot_content .toot_article a { - color: #2588D0; -} - -.toot_entry .toot_entry_body .toot_content .toot_article.content_warning .status_content { - display: none; -} - -.toot_entry .toot_entry_body .toot_content .toot_footer { - display: flex; - flex-wrap: nowrap; - align-items: center; - width: 240px; - height: 21px; - margin-top: 8px; -} - -.toot_entry .toot_entry_body .toot_content .toot_reaction { - height: 21px; - flex-grow: 1; -} - -.toot_entry .toot_entry_body .toot_content .toot_reaction button { - margin: auto; - color: #AAB8C2; - font-size: 18px; - height: 21px; -} - -.toot_entry .toot_entry_body .toot_content .toot_reaction button.active { - animation-name: status_action_active; - animation-duration: 0.5s; -} - -.toot_entry .toot_entry_body .toot_content .toot_reaction button .reaction_count { - color: #AAB8C2; - font-size: 12px; - font-weight: 600; -} - -@keyframes status_action_active { - 0% { transform: scale(1); } - 50% { transform: scale(2); } - 100% { transform: scale(1); } -} - -.toot_entry .toot_entry_body .toot_content .toot_reaction .reply_button:hover { - color: #1DA1F2; -} - -.toot_entry .toot_entry_body .toot_content .toot_reaction .boost_button[reblogged="null"]:hover, -.toot_entry .toot_entry_body .toot_content .toot_reaction .boost_button[reblogged="true"], -.toot_entry .toot_entry_body .toot_content .toot_reaction .boost_button[reblogged="null"]:hover .reaction_count, -.toot_entry .toot_entry_body .toot_content .toot_reaction .boost_button[reblogged="true"] .reaction_count { - color: #17BF63; -} - -.toot_entry .toot_entry_body .toot_content .toot_reaction .fav_button[favourited="null"]:hover, -.toot_entry .toot_entry_body .toot_content .toot_reaction .fav_button[favourited="true"], -.toot_entry .toot_entry_body .toot_content .toot_reaction .fav_button[favourited="null"]:hover .reaction_count, -.toot_entry .toot_entry_body .toot_content .toot_reaction .fav_button[favourited="true"] .reaction_count { - color: #FFAD1A; -} - -/*-------------------------------------- - Timeline Media Views ---------------------------------------*/ - -.media_views { - margin: 8px 0; - height: 336px; - width: 100%; - border-radius: 5px; - overflow: hidden; - position: relative; - box-sizing: border-box; - border: 1px solid #DCDFE1; -} - -.media_views .media_attachment { - overflow: hidden; - width: 100%; - height: 100%; -} - -.media_views .media_attachment > * { - width: 100%; - height: 100%; - object-fit: cover; -} - -.media_views .media_attachment > iframe { - object-fit: fill; -} - -.media_views.sensitive .sensitive_alart { - display: flex; - z-index: 1; - flex-direction: column; - justify-content: center; - align-items: center; - position: absolute; - width: 100%; - height: 100%; - background-color: #000; -} - -.media_views.sensitive .sensitive_alart .text1 { - font-size: 26px; - font-weight: 200; - padding: 8px 16px; - color: #fff; -} - -.media_views.sensitive .sensitive_alart .text2 { - font-weight: 200; - padding: 2px 4px; - margin-top: 3px; - color: #fff; -} - -/*---------------- - 2 -----------------*/ - -.media_views[media_length="2"] { - display: flex; -} - -.media_views[media_length="2"] .media_attachment { - flex-grow: 1; - overflow: hidden; - width: 50%; - height: 100%; -} - -.media_views[media_length="2"] .media_attachment[mediacount="0"] { - padding-right: 5px; - box-sizing: border-box; -} - -/*---------------- - 3 -----------------*/ - -.media_views[media_length="3"], -.media_views[media_length="4"] { - display: flex; -} - -.media_views[media_length="3"] .media_attachment[mediacount="0"], -.media_views[media_length="4"] .media_attachment[mediacount="0"] { - flex-grow: 2; - padding-right: 5px; - box-sizing: border-box; -} - -.media_views[media_length="3"] .media_attachments_right, -.media_views[media_length="4"] .media_attachments_right { - flex-grow: 1; - flex-shrink: 2;/* bug? */ - display: flex; - flex-direction: column; - height: 100%; -} - -.media_views[media_length="3"] .media_attachments_right .media_attachment { - padding-bottom: 5px; - box-sizing: border-box; - height: 50%; -} - -.media_views[media_length="3"] .media_attachments_right .media_attachment[mediacount="2"] { - padding-bottom: 0; -} - -/*---------------- - 4 -----------------*/ -.media_views[media_length="4"] .media_attachments_right .media_attachment { - padding-bottom: 5px; - box-sizing: border-box; - height: calc( 100% / 3 ); -} - -.media_views[media_length="4"] .media_attachments_right .media_attachment[mediacount="3"] { - padding-bottom: 0; -} - -/*-------------------------------------- - Notification ---------------------------------------*/ -.timeline .notice_entry { - padding: 10px 12px 10px 70px; - font-size: 14px; - line-height: 18px; - border-bottom: 1px solid #E6ECF0; -} - -/* boost quote */ -.timeline .notice_entry .notice_entry_body { - width: 480px; - border: 1px solid #E6ECF0; - border-radius: 5px; - padding: 8px 12px; -} - -.timeline .notice_entry .notice_entry_body .toot_header { - height: 17px; -} - -/* boost quote */ -.timeline .notice_entry .notice_entry_body .toot_article p { - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; -} - -.timeline .notice_entry .icon_box { - width: 24px; - height: 24px; - border-radius: 3px; - overflow: hidden; -} - -.timeline .notice_entry .icon_box img { - width: 24px; -} - -.timeline .notice_entry .font-icon { - position: relative; - padding: 3px; - left: -23px; - top: -26px; - width: 10px; - font-size: 10px; - border-radius: 3px; - color: #fff; -} - -.timeline .notice_entry .font-icon.follow { - background: #1DA1F2;; -} - -.timeline .notice_entry .font-icon.boost { - background: #17BF63; -} - -.timeline .notice_entry .font-icon.favourite { - background: #FFAD1A; -} - -.timeline .notice_entry .notice_author_box { - padding: 3px 0; -} - -.timeline .notice_entry .notice_author_box > a.notice_author { - margin-left: -18px; -} - -.timeline .notice_entry .notice_author_box > a.notice_author span { - font-weight: 600; -} - -.timeline .notice_entry .toot_content .toot_header a .displayname { - font-weight: 600; -} - -.timeline .notice_entry .toot_content .toot_header a .username { - color: #66757F; -} - -.timeline_footer { - padding: 24px; - background-color: #fff; - box-sizing: border-box; - border: 1px solid #ECF1F4; - border-top: none; - border-bottom-right-radius: 5px; - border-bottom-left-radius: 5px; - color: #AAB8C2; - font-size: 36px; - text-align: center; -} - -/*-------------------------------------- - Follows profile ---------------------------------------*/ - -#js-follows_profile{ - display: flex; - width: 900px; - box-sizing: border-box; - height: auto; - flex-wrap: wrap; -} - -#js-follows_profile .follows_profile_box { - width: 290px; - margin: 0 5px; - margin-bottom: 10px; - box-sizing: border-box; - border-radius: 5px; - background-color: #fff; - overflow: hidden; - border: 1px solid #E6ECF0; -} - -#js-follows_profile .follows_profile_box .follows_profile_header { - height: 96px; - overflow: hidden; - background-color: #189EFC; -} - -#js-follows_profile .follows_profile_box .follows_profile_header img { - width: 100%; - height: 100%; - object-fit: cover; -} - -#js-follows_profile .follows_profile_box .follows_profile { - position: relative; -} - -#js-follows_profile .follows_profile_box .follows_profile .follows_profile_icon { - position: absolute; - width: 74px; - height: 74px; - padding: 3px; - margin-left: 16px; - border-radius: 8px; - top: -76px; - background-color: #fff; -} - -#js-follows_profile .follows_profile_box .follows_profile .follows_profile_icon img { - border-radius: 5px; -} - -#js-follows_profile .follows_profile_box .follows_profile .follows_profile_name_box { - width: auto; - /*! margin-left: 15px; */ - padding-bottom: 2px; - padding-top: 4px; - margin: 0 16px; - margin-top: 36px; -} - -#js-follows_profile .follows_profile_box .follows_profile .follows_profile_name_box h2 { - font-weight: 700; - font-size: 18px; - line-height: 25px; -} - -#js-follows_profile .follows_profile_box .follows_profile .follows_profile_name_box span { - display: block; - width: 180px; - color: #657786; - font-size: 14px; - /*! overflow: hidden; */ - white-space: nowrap; - text-overflow: ellipsis; - margin: 4px 0; -} - -#js-follows_profile .follows_profile_box .follows_profile .follows_profile_name_box span::before { -} - -#js-follows_profile .follows_profile_box .follows_profile .follows_profile_bio { - height: 58px; - font-size: 14px; - font-weight: 400; - color: #66757f; - margin: 0 16px; - margin-bottom: 0px; - margin-bottom: 16px; - line-height: 1.3; - overflow: hidden; - /*! width: 100%; */ -} - -#js-follows_profile .follows_profile_box .follows_profile .follows_profile_bio p { - /*! white-space: nowrap; */ - overflow: hidden; - word-break: break-all; - height: auto; - /*! max-width: 100%; */ -} - -#js-follows_profile .follows_profile_box .follows_profile .follows_profile_bio p a { - color: #189EFC -} - -#js-follows_profile .follow_button { - display: flex; - flex-wrap: nowrap; - align-items: center; - font-size: 13px; - padding: 6px 18px; - margin-top: 4px; - border-radius: 4px; - border: 1px solid #189EFC; - position: absolute; - right: 16px; - top: -32px; -} - -#js-follows_profile .follow_button i { - color: #189EFC; - margin-right: 4px; -} - -#js-follows_profile .follow_button span { - font-weight: 600; -} - -#js-follows_profile .follow_button:hover, -#js-follows_profile .follow_button:hover i { - background-color: #189EFC; - color: #fff!important; -} - -#js-follows_profile .following_button { - display: flex; - flex-wrap: nowrap; - align-items: center; - font-size: 13px; - padding: 6px 18px; - margin-top: 4px; - border-radius: 4px; - border: 1px solid #2B94DA; - background-color: #189EFC; - position: absolute; - right: 16px; - top: -32px; -} - -#js-follows_profile .following_button i { - color: #fff; - margin-right: 4px; -} - -#js-follows_profile .following_button span { - font-weight: 600; - color: #fff; -} - -#js-follows_profile .following_button:hover, -#js-follows_profile .following_button:hover i { - background-color: #E20055; - color: #fff!important; -} - -#js-follows_footer { - color: #66757F; - font-size: 36px; - text-align: center; - padding: 16px; -} - -/*-------------------------------------- - Stream ---------------------------------------*/ -#js-stream_update { - height: 0; - padding: 0px; - box-sizing: border-box; - text-align: center; - font-size: 13px; - background-color: #F5F8FA; - overflow: hidden; - transition: 0.3s; - cursor: pointer; -} - -#js-stream_update:hover { - background-color: #E6ECF0; -} - -#js-stream_update button { - color: #189EFC; -} - -/*-------------------------------------- - Current profile ---------------------------------------*/ -.current_profile_box { - margin-bottom: 10px; - border-radius: 5px; - background-color: #fff; - overflow: hidden; - border: 1px solid #E6ECF0; -} - -.current_profile_box .current_profile_header { - height: 96px; - overflow: hidden; - background-color: #189EFC; -} - -.current_profile_box .current_profile_header img { - width: 100%; - height: 100%; - object-fit: cover; -} - -.current_profile_box .current_profile { - position: relative; -} - -.current_profile_box .current_profile .current_profile_icon { - position: absolute; - width: 70px; - height: 70px; - padding: 3px; - margin-left: 8px; - border-radius: 8px; - top: -30px; - background-color: #fff; -} - -.current_profile_box .current_profile .current_profile_icon img { - border-radius: 5px; -} - -.current_profile_box .current_profile .current_profile_name_box { - width: 180px; - margin-left: 90px; - padding-bottom: 10px; - padding-top: 8px; -} - -.current_profile_box .current_profile .current_profile_name_box h2 { - font-weight: 700; - font-size: 18px; - line-height: 25px; -} - -.current_profile_box .current_profile .current_profile_name_box span { - display: block; - width: 180px; - color: #657786; - font-size: 14px; - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; -} - -.current_profile_box .current_profile .current_profile_name_box span::before { - content: "@"; -} - -.current_profile_box .current_profile .current_profile_counts { - display: flex; -} - -.current_profile_box .current_profile .current_profile_counts .current_profile_count { - flex-grow: 1; - padding-left: 16px; - padding-bottom: 8px; -} - -.current_profile_box .current_profile .current_profile_counts .current_profile_count a { - display: flex; - flex-direction: column; - justify-content: space-around; - text-decoration: none; -} - -.current_profile_box .current_profile .current_profile_counts .current_profile_count a .title { - color: #657786; - font-size: 10px; -} - -.current_profile_box .current_profile .current_profile_counts .current_profile_count a:hover .title { - color: #189EFC; -} - -.current_profile_box .current_profile .current_profile_counts .current_profile_count a .count { - font-size: 18px; - font-weight: 400; - padding-top: 3px; - color: #189EFC; -} - -/*-------------------------------------- - Widgets ---------------------------------------*/ - -.side_widget { - padding: 15px; - margin-bottom: 8px; - border-radius: 5px; - background-color: #fff; - border: 1px solid #E6ECF0; -} - -.side_widgets_footer { - color: rgb(101, 119, 134); - font-size: 12px; - padding: 16px 8px; -} - -.side_widgets_footer ul li { - display: inline-block; - margin: 0 12px 8px 0; -} - -.side_widget h2 { - color: #66757F; - font-size: 18px; - font-weight: 300; - margin-bottom: 15px; -} - -.side_widget h3 { - color: #66757F; - font-size: 16px; - font-weight: 300; -} - -.side_widget.stream_options .form_title{ - display: flex; - align-items: baseline; -} - -.side_widget.stream_options .form_title h2 { - margin-bottom: 0; - flex-grow: 1; -} - -.side_widget.stream_options .form_title button { - cursor: pointer; - flex-grow: 1; - font-size: 12px; - color: #189EFC; - text-align: right; -} - -.side_widget form.pulldown_form { - overflow: hidden; - height: 0; - opacity: 0; - margin-top: 0px; - transition: 0.13s ease-out; -} - -.side_widget form.pulldown_form.view { - height: 240px; - opacity: 1; - margin-top: 16px; - transition: 0.13s ease-out; -} - -.side_widget select, .side_widget input { - margin: 8px 0 16px; - width: 100%; - font-size: 14px; - color: #66757F; - box-sizing: border-box; -} - -.side_widget .account_box { - display: flex; - flex-wrap: nowrap; - align-items: center; - height: 100%; - margin-bottom: 12px; -} - -.side_widget .account_box .icon_box { - width: 48px; - height: 48px; - overflow: hidden; - margin-right: 8px; - border-radius: 5px; -} - -.side_widget .account_box .label_box { - width: 200px; -} - -.side_widget .account_box .label_box h3 { - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; - color: #333; -} - -.side_widget .account_box .label_box h3 .dn { - font-size: 14px; - font-weight: 700; -} - -.side_widget .account_box .label_box h3 .un { - font-size: 14px; - color: #66757F; -} - -.side_widget .account_box .label_box .follow_button { - display: flex; - flex-wrap: nowrap; - align-items: center; - font-size: 12px; - padding: 5px 16px; - margin-top: 4px; - border-radius: 4px; -} - -.side_widget .account_box .label_box .follow_button i { - color: #189EFC; - margin-right: 4px; -} - -.side_widget .account_box .label_box .follow_button span { - font-weight: 600; -} - -.side_widget .account_box .label_box .follow_button:hover, -.side_widget .account_box .label_box .follow_button:hover i { - background-color: #189EFC; - color: #fff!important; -} - -.side_widget .account_box .label_box .following_button { - display: flex; - color: #fff; - flex-wrap: nowrap; - align-items: center; - font-size: 12px; - padding: 5px 18px; - margin-top: 4px; - border-radius: 4px; - background-color: #189EFC; - border: 1px solid #189EFC; -} - -.side_widget .account_box .label_box .following_button:hover { - background-color: #E20055; -} - -.side_widget .account_box .label_box .following_button i { - color: #FFF; - margin-right: 4px; -} - -.side_widget .account_box .label_box .following_button span { - font-weight: 600; -} - -/*-------------------------------------- - Header ---------------------------------------*/ - -/* header */ -#header { - display: flex; - position: fixed; - z-index: 999; - width: 100%; - height: 47px; - color: #66757F; - background-color: #fff; - box-shadow: 0 1px 1px rgba(0,0,0,0.26); -} - -/* header child nav */ -#header .header_nav_wrap { - box-sizing: border-box; - display: flex; - width: 1190px; - height: 100%; - margin: auto; - padding: 0 5px; -} - -/*-------------------------------------- - Header Left ---------------------------------------*/ - -/* header nav left */ -#header .header_nav_wrap .header_left_box { - display: flex; - justify-content: flex-start; - flex: 2; - height: 100%; -} - -/* Left navigation box */ -#header .header_nav_wrap .header_left_box ul.header_nav_list { - display: flex; - width: 100%; - height: 100%; -} - -#header .header_nav_wrap .header_left_box ul.header_nav_list li.header_nav_item { - display: flex; - align-items: center; - height: 100%; - position: relative; -} - -#header .header_nav_wrap .header_left_box ul.header_nav_list li.header_nav_item .nav_badge { - width: 6px; - height: 6px; - background-color: #1B95E0; - border-radius: 50%; - position: absolute; - left: 6px; - top: 8px; -} - -#header .header_nav_wrap .header_left_box ul.header_nav_list li.header_nav_item .nav_badge.notification_badge { - position: absolute; - background-color: #189EFC; - border-radius: 40%; - font-size: 10px; - top: 8px; - left: 20px; - border: 2px solid #fff; - color: #fff; - padding: 2px; - box-sizing: border-box; - height: 20px; - width: 20px; - display: flex; - align-items: center; - justify-content: center; -} - -#header .header_nav_wrap .header_left_box ul.header_nav_list li.header_nav_item a { - display: flex; - justify-content: center; - align-items: center; - width: 100%; - height: 100%; - color: #66757F; - box-sizing: border-box; - padding-right: 18px; - padding-left: 9px; - /* HACK: */ - border-top: 0px solid transparent; - border-bottom: 0px solid #189EFC; - transition: 0.15s ease-out; -} - -#header .header_nav_wrap .header_left_box ul.header_nav_list li.header_nav_item a:hover { - color: #189EFC; - text-decoration: none; - border-top: 5px solid transparent; - border-bottom: 5px solid #189EFC; - transition: 0.15s ease-out; -} - -#header .header_nav_wrap .header_left_box ul.header_nav_list li.header_nav_item a.view { - text-decoration: none; - border-top: 5px solid transparent; - border-bottom: 5px solid #189EFC; - transition: 0.15s ease-out; - position: relative; -} - -/* left nav icon and text */ -#header .header_nav_wrap .header_left_box ul.header_nav_list li.header_nav_item a > i, -#header .header_nav_wrap .header_left_box ul.header_nav_list li.header_nav_item a > span { - display: inline-block; - text-align: center; -} - -/* left nav icon */ -#header .header_nav_wrap .header_left_box ul.header_nav_list li.header_nav_item a > i { - margin-right: 4px; - font-size: 21px; -} - -/* left nav text */ -#header .header_nav_wrap .header_left_box ul.header_nav_list li.header_nav_item a > span { - font-size: 13px; - font-weight: 400; -} - -/*-------------------------------------- - Header Center ---------------------------------------*/ - -/* header nav center */ -#header .header_nav_wrap .header_center_box { - display: flex; - flex: 1.2; - height: 100%; - box-sizing: border-box; - padding: 8px 0; - align-items: center; - justify-content: center; -} - -/* mastodon logo */ -#header .logo_box { - height: 96%; - padding: 4px; - box-sizing: border-box; -} - -/* mastodon logo */ -#header .logo_box img { - width: auto; - display: block; -} - -/*-------------------------------------- - Header Right ---------------------------------------*/ - -/* header nav right*/ -#header .header_nav_wrap .header_right_box { - flex: 2; - box-sizing: border-box; - padding: 8px 0; - height: 100%; -} - -/* header nav right list */ -#header .header_nav_wrap .header_right_box ul.header_nav_list { - display: flex; - justify-content: flex-end; - align-items: center; - width: 100%; - height: 100%; -} - -#header .header_nav_wrap .header_right_box ul.header_nav_list li.header_nav_item { - display: flex; - height: 100%; - justify-content: center; - align-items: center; - padding-right: 16px; -} - -/* Search box */ -#header .header_nav_wrap .header_right_box .search_form { - width: 221px; - height: 95%; - outline: 0; - position: relative; -} - -#header .header_nav_wrap .header_right_box .search_form .search_form_input { - box-sizing: border-box; - padding: 5px 12px; - font-size: 12px; - width: 100%; - border-radius: 16px; - border: 1px solid #E8EEF1; - background-color: #F5F8FA; - height: 100%; - transition: 0.15s ease-out;; -} - -#header .header_nav_wrap .header_right_box .search_form .search_form_input:focus { - background-color: transparent; - transition: 0.15s ease-out;; -} - -#header .header_nav_wrap .header_right_box .search_form .search_form_submit { - display: block; - position: absolute; - height: 14px; - font-size: 14px; - top: 5px; - right: 12px; - margin: 2px -4px; -} - -#header .header_nav_wrap .header_right_box .search_form .search_form_submit button, -#header .header_nav_wrap .header_right_box .search_form .search_form_submit i { - display: block; - color: #66757F; -} - -/* Account display */ -#header .header_nav_wrap .header_right_box .my_account_wrap { - position: relative; -} - -#header .header_nav_wrap .header_right_box .my_account_wrap .my_account { - height: 35px; - width: 35px; - margin: auto; - display: flex; - justify-content: center; - align-items: center; -} - -#header .header_nav_wrap .header_right_box .my_account_wrap .my_account img { - width: 32px; - height: 32px; - overflow: hidden; - border-radius: 50%; - transition: 0.15s ease-out; -} - -#header .header_nav_wrap .header_right_box .my_account_wrap .header_my_account_nav { - display: block; - position: absolute; - cursor: pointer; - top: 42px; - right: 14px; - width: 180px; - padding: 8px 21px; - font-size: 12px; - border-radius: 3px; - box-sizing: border-box; - background-color: #fff; - box-shadow: 0.5px 0.5px 3px rgba(0,0,0,0.26); -} - -#header .header_nav_wrap .header_right_box .my_account_wrap .header_my_account_nav::before { - display: block; - content: ""; - z-index: -1; - width: 20px; - height: 20px; - position: absolute; - transform: rotate(45deg); - top: -5px; - right: 8px; - background-color: #fff; - border: 0.5px solid rgba(0,0,0,.26); -} - -#header .header_nav_wrap .header_right_box .my_account_wrap .header_my_account_nav ul { - margin: 0 -21px; - margin-bottom: 8px; -} - -#header .header_nav_wrap .header_right_box .my_account_wrap .header_my_account_nav ul::after { - content: ""; - display: block; - margin-top: 8px; - border-bottom: 1px solid #E6ECF0; -} - -#header .header_nav_wrap .header_right_box .my_account_wrap .header_my_account_nav ul:last-child::after { - border-bottom: 0px solid #E6ECF0; -} - -#header .header_nav_wrap .header_right_box .my_account_wrap .header_my_account_nav ul li { - box-sizing: border-box; -} - -#header .header_nav_wrap .header_right_box .my_account_wrap .header_my_account_nav ul li a .display_name { - display: block; - color: #000; - font-size: 14px; - font-weight: 600; - margin-bottom: 4px; -} - -#header .header_nav_wrap .header_right_box .my_account_wrap .header_my_account_nav a { - display: block; - padding: 8px 21px; -} - -#header .header_nav_wrap .header_right_box .my_account_wrap .header_my_account_nav a:hover, -#header .header_nav_wrap .header_right_box .my_account_wrap .header_my_account_nav ul li a:hover .display_name { - background-color: #189EFC; - text-decoration: none; - color: #fff; -} - -/* toot button */ -#header .header_nav_wrap .header_right_box .toot_button { - width: 90px; - height: 100%; - border-radius: 4px; - color: #fff; - background-color: #2588D0; - transition: 0.15s ease-out;; -} - -#header .header_nav_wrap .header_right_box .toot_button:hover { - background-color: #2571D0; - transition: 0.15s ease-out;; -} - -#header .header_nav_wrap .header_right_box .toot_button:active { - background-color: #255ED0; - transition: 0.15s ease-out;; -} - -#header .header_nav_wrap .header_right_box .toot_button .toot_button_label { - display: flex; - justify-content: center; - align-items: center; -} - -#header .header_nav_wrap .header_right_box .toot_button i { - display: inline-block; - font-size: 21px; - margin-right: 2px; -} - -#header .header_nav_wrap .header_right_box .toot_button span { - font-size: 13px; - font-weight: 500; -} - -/*-------------------------------------- - Main ---------------------------------------*/ - -#main { - padding-top: 47px; -} - -/*-------------------------------------- - Profile ---------------------------------------*/ - -#main > .header_image_box { - width: 100%; - height: 460px; - overflow: hidden; -} - -#main > .header_image_box img { - min-width: 100%; - object-fit: cover; -} - -#main .profile_nav_wrap { - height: 60px; - width: 100%; - background-color: #fff; - box-shadow: 0 1px 3px 0 rgba(0,0,0,0.25); -} - -#main .profile_nav_wrap .profile_nav { - display: flex; - flex-wrap: nowrap; - width: 1200px; - height: 100%; - margin: auto; - padding: 0 5px; - box-sizing: border-box; -} - -/*-------------------------------------- - Profile nav Left ---------------------------------------*/ - -#main .profile_nav_wrap .profile_nav .profile_nav_left { - width: 300px; - height: 100%; -} - -/*-------------------------------------- - Profile nav Right ---------------------------------------*/ - -#main .profile_nav_wrap .profile_nav .profile_nav_right { - width: 900px; - height: 100%; -} - -#main .profile_nav_wrap .profile_nav .profile_nav_right .profile_nav_list { - display: flex; - flex-wrap: nowrap; - align-items: center; - height: 100%; -} - -#main .profile_nav_wrap .profile_nav .profile_nav_right .profile_nav_list .profile_nav_item { - height: 100%; - color: #66757F; - border-color: transparent; -} - -#main .profile_nav_wrap .profile_nav .profile_nav_right .profile_nav_list .profile_nav_item a { - display: flex; - flex-direction: column; - flex-wrap: nowrap; - align-items: center; - justify-content: center; - height: 100%; - padding: 0 15px; - box-sizing: border-box; - border-top: 0px solid transparent; - border-bottom: 0px solid #189EFC; - transition: 0.15s; -} - -#main .profile_nav_wrap .profile_nav .profile_nav_right .profile_nav_list .profile_nav_item:hover { - color: #189EFC; - box-sizing: border-box; - text-decoration: none; - border-top: 4px solid transparent; - border-bottom: 4px solid #189EFC; - transition: 0.15s; -} - -#main .profile_nav_wrap .profile_nav .profile_nav_right .profile_nav_list .profile_nav_item.view { - color: #189EFC; - box-sizing: border-box; - border-top: 4px solid transparent; - border-bottom: 4px solid #189EFC; -} - -#main .profile_nav_wrap .profile_nav .profile_nav_right .profile_nav_list .profile_nav_item a:hover { - text-decoration: none; -} - -#main .profile_nav_wrap .profile_nav .profile_nav_right .profile_nav_list .profile_nav_item a h2 { - display: inline-block; - font-size: 11px; - font-weight: normal; -} - -#main .profile_nav_wrap .profile_nav .profile_nav_right .profile_nav_list .profile_nav_item a span { - display: inline-block; - font-size: 18px; - font-weight: 600; - margin-top: 3px; -} - -#main .profile_nav_wrap .profile_nav .profile_nav_right .profile_nav_list .profile_button_box { - display: flex; - align-items: center; - justify-content: flex-end; - flex: 1; - height: 100%; -} - -#main .profile_nav_wrap .profile_nav .profile_nav_right .profile_nav_list .profile_button_box button { - float: right; - padding: 9px 16px; - border-radius: 4px; - font-size: 14px; - font-weight: 700; -} - -/*-------------------------------------- - Search ---------------------------------------*/ - -#js-search_title_box { - width: 100%; - height: 64px; - padding: 16px 0; - overflow: hidden; - box-sizing: border-box; - background-color: #189EFC; -} - -#js-search_title_box h1 { - display: block; - width: 1200px; - margin: 0 auto; - padding: 0 16px; - font-size: 27px; - font-weight: 400; - line-height: 32px; - color: #fff; - box-sizing: border-box; -} - -#main .search_nav_wrap { - height: 50px; - width: 100%; - background-color: #fff; - box-shadow: 0 1px 3px 0 rgba(0,0,0,0.25); - margin-bottom: 4px; -} - -#main .search_nav_wrap .search_nav { - display: flex; - flex-wrap: nowrap; - width: 1200px; - height: 100%; - margin: auto; - padding: 0 5px; - box-sizing: border-box; -} - -#main .search_nav_wrap .search_nav .search_nav_left { - width: 900px; - height: 100%; -} - -#main .search_nav_wrap .search_nav .search_nav_left .search_nav_list { - display: flex; - flex-wrap: nowrap; - align-items: center; - height: 100%; -} - -#main .search_nav_wrap .search_nav .search_nav_left .search_nav_list .search_nav_item { - height: 100%; - color: #66757F; - /*! font-size: 13px; */ -} - -#main .search_nav_wrap #js-search_nav_peoples.view a , -#main .search_nav_wrap #js-search_nav_toots.view a { - border-top: 4px solid transparent; - border-bottom: 4px solid #189EFC; -} - -#main .search_nav_wrap .search_nav .search_nav_left .search_nav_list .search_nav_item a { - display: flex; - flex-direction: column; - flex-wrap: nowrap; - align-items: center; - justify-content: center; - height: 100%; - padding: 0 15px; - box-sizing: border-box; - border-top: 0px solid transparent; - border-bottom: 0px solid #189EFC; - transition: 0.15s; -} - -#main .search_nav_wrap .search_nav .search_nav_left .search_nav_list .search_nav_item a:hover { - color: #189EFC; - text-decoration: none; - border-top: 4px solid transparent; - border-bottom: 4px solid #189EFC; - transition: 0.15s; -} - -#main .search_nav_wrap .search_nav .search_nav_left .search_nav_list .search_nav_item a.view { - color: #189EFC; - border-top: 4px solid transparent; - border-bottom: 4px solid #189EFC; -} - -#main .search_nav_wrap .search_nav .search_nav_left .search_nav_list .search_nav_item a h2 { - display: inline-block; - font-size: 14px; - font-weight: normal; - color: #189EFC; -} - -#main .search_nav_wrap .search_nav .search_nav_left .search_nav_list .search_nav_item a span { - display: inline-block; - font-size: 18px; - font-weight: 600; - margin-top: 3px; -} - -#main .search_nav_wrap .search_nav .search_nav_left .search_nav_list .search_button_box { - display: flex; - align-items: center; - justify-content: flex-end; - flex: 1; - height: 100%; -} - -#main .search_nav_wrap .search_nav .search_nav_left .search_nav_list .search_button_box button { - float: right; - padding: 9px 16px; - border-radius: 4px; - font-size: 14px; - font-weight: 700; -} - -/*-------------------------------------- - Article ---------------------------------------*/ - -#main .article_wrap { - display: flex; - flex-wrap: nowrap; - width: 1200px; - margin: auto; -} - -/*-------------------------------------- - Article section column ---------------------------------------*/ - -#main .article_wrap .left_column { - position: relative; - width: 300px; - padding: 10px 5px; - box-sizing: border-box; -} - -#main .article_wrap .left_column > .profile_icon_box { - position: absolute; - top: -185px; - width: 200px; - height: 200px; - margin-left: 10px; - padding: 5px; - background-color: #fff; - border-radius: 14px; - border: 1px solid #FBFBFC; - box-shadow: 0 0.1px 0.3px rgba(0,0,0,0.26); - cursor: pointer; -} - -#main .article_wrap .left_column .profile_icon_box img { - width: 100%; - height: 100%; - border-radius: 8px; -} - -#main .article_wrap .left_column .profile_section_wrap { - padding: 36px 16px 0 15px; - word-break: break-all; -} - -#main .article_wrap .left_column .profile_section_wrap > .profile_displayname { - font-size: 22px; - font-weight: 700; - line-height: 1; - color: rgb(20, 23, 26); - margin-bottom: 8px; -} - -#main .article_wrap .left_column .profile_section_wrap > .profile_username { - color: rgb(101, 119, 134); - font-size: 14px; - font-weight: 300; - margin-bottom: 8px; -} - -#main .article_wrap .left_column .profile_section_wrap > .profile_username .profile_followed_by { - font-size: 10px; - display: inline-block; - margin-left: 8px; -} - -#main .article_wrap .left_column .profile_section_wrap > .profile_bio { - font-size: 14px; - font-weight: 400; - line-height: 20px; - margin-bottom: 10px; - word-wrap: break-word; -} - -#main .article_wrap .left_column .profile_section_wrap > .profile_bio a { - color: #2588D0; -} - -#js_profile_recent_images a { - color: #2588D0; - font-size: 13px; - font-weight: 300; -} - -#js_profile_recent_images a i { - color: #657786; - margin-right: 8px; - font-size: 16px; -} - -#js_profile_recent_images_box { - width: 100%; - font-size: 14px; - display: flex; - margin-top: 8px; - flex-wrap: wrap; -} - -#js_profile_recent_images_box .profile_recent_images_item { - width: 80px; - height: 80px; - margin: 0 5px 5px 0; - border-radius: 5px; - overflow: hidden; - flex-shrink: 0; - cursor: pointer; -} - -#js_profile_recent_images_box .profile_recent_images_item img { - width: 100%; - height: 100%; - max-width: none; - max-height: none; - object-fit: cover; -} - -/*-------------------------------------- - Article post column ---------------------------------------*/ - -#main .article_wrap .center_column { - width: auto; - flex: 1; - /* If disappearing .right_column(300px), - Then this box will fill the rest spaces */ - padding: 10px 5px; - box-sizing: border-box; -} - -/*-------------------------------------- - Article side column ---------------------------------------*/ - -#main .article_wrap .right_column { - width: 300px; - padding: 10px 5px; - box-sizing: border-box; -} - -/*------------------------------------- - Overlay content --------------------------------------*/ - -#js-overlay_content_wrap { - display: none; - position: fixed; - z-index: 1000; - top: 0; - left: 0; - width: 100%; - height: 100%; - overflow: scroll; -} - -#js-overlay_content_wrap.view { - display: block; - background-color: rgba(0, 0, 0, 0); - transition: 0.5s; -} - -@keyframes fadein_05 { - 0% { background-color: rgba(0, 0, 0, 0); } - 100% {background-color: rgba(0, 0, 0, 0.5);} -} - -@keyframes fadein_08 { - 0% { background-color: rgba(0, 0, 0, 0); } - 100% {background-color: rgba(0, 0, 0, 0.8);} -} - -#js-overlay_content_wrap.view.black_05 { - animation-name: fadein_05; - animation-duration: 0.35s; - animation-fill-mode: forwards; -} - -#js-overlay_content_wrap.view.black_08 { - background-color: rgba(0, 0, 0, 0.8); -} - -#js-overlay_content_wrap #js-overlay_content { - width: 628px; - height: auto; - margin: 56px auto; - position: relative; -} - -#js-overlay_content_wrap #js-overlay_content .close_button { - color: #fff; - position: absolute; - right: -32px; - top: 0; - font-size: 28px; -} - -#js-overlay_content_wrap .temporary_object .thumb_box { - display: flex; - align-items: center; - justify-content: center; - width: 100%; - height: 100%; -} - -/*----------------------------------- - Message ------------------------------------*/ - -#overlay_message { - position: fixed; - top: -47px; - left: 0; - right: 0; - bottom: 0; - margin: 0 auto; - width: 658px; - height: 58px; - border-bottom-left-radius: 8px; - border-bottom-right-radius: 8px; - background-color: #fff; - box-shadow: 1px 1px 3px rgba(0,0,0,0.35); - z-index: 998; -} - -@keyframes overlay_message_active { - 0% { top: -47px } - 10% { top: 47px; } - 85% { top: 47px; } - 100% { top: -47px } -} - -#overlay_message.view { - animation-name: overlay_message_active; - animation-duration: 3s; -} - -#overlay_message section { - color: #999; - font-size: 14px; - padding: 16px; - margin: auto; - display: block; - box-sizing: border-box; - height: 100%; - width: 100%; - display: flex; - justify-content: center; - align-items: center; -} - -/*----------------------------------- - Overflow status ------------------------------------*/ - -.toot_detail_wrap { - border-radius: 5px; -} - -.toot_detail_wrap .toot_detail:first-child, -.toot_detail_wrap .toot_entry:first-child { - border-top-left-radius: 5px; - border-top-right-radius: 5px; -} - -.toot_detail_wrap .toot_detail:last-child, -.toot_detail_wrap .toot_entry:last-child { - border-bottom-left-radius: 5px; - border-bottom-right-radius: 5px; -} - -.toot_detail { - width: 628px; - box-sizing: border-box; - background-color: #fff; -} - -.toot_entry.ancestors_status .toot_entry_body, -.toot_entry.descendants_status .toot_entry_body { - padding: 18px 40px; - border-bottom: none; - position: relative; - /*! padding-bottom: 8px; */ -} - -.toot_entry.ancestors_status.default_padding .toot_entry_body, -.toot_entry.descendants_status.default_padding .toot_entry_body { - padding: 12px; -} - -.toot_entry.ancestors_status .toot_entry_body::after, -.toot_entry.descendants_status .toot_entry_body::after { - content: ""; - display: block; - border: 2px solid #76BFEC; - position: absolute; - border-radius: 2px; - position: absolute; - left: 62px; - height: calc(100% - 57px); - top: 68px; -} - -.toot_entry.ancestors_status.default_padding .toot_entry_body::after, -.toot_entry.descendants_status.default_padding .toot_entry_body::after { - left: 35px; - height: calc(100% - 60px); - top: 64px; -} - -.toot_entry.descendants_status:last-child .toot_entry_body::after { - border: 0px solid #76BFEC; -} - -.toot_detail .toot_header { - display: flex; -} - -.toot_detail .toot_header .icon_box { - flex-shrink: 0; - width: 48px; - height: 48px; - border-radius: 3px; - overflow: hidden; - margin-right: 8px; -} - -.toot_detail .toot_header a { - flex-grow: 1; - display: flex; - flex-direction: column; - justify-content: center; -} - -.toot_detail .toot_header a .displayname { - color: #000; - font-size: 17px; - font-weight: 600; - line-height: 1.35; -} - -.toot_detail .toot_header a .username { - color: #66757F; - font-size: 14px; -} - -.toot_detail .toot_header a:hover { - text-decoration: none; -} - -.toot_detail .toot_header a:hover .displayname { - color: #189EFC; -} - -/* expand button */ -.toot_detail .toot_header .expand_button_wrap { - float: right; - position: relative; - width: 48px; - height: 48px; -} - -.toot_detail .toot_header .expand_button_wrap .expand_button { - position: absolute; - right: 0; - top: 0; - color: #AAB8C2; -} - -.toot_detail .toot_header .expand_button_wrap .expand_button:hover { - color: #189EFC; -} - -.toot_detail .toot_header .expand_button_wrap .expand_menu { - display: block; - position: absolute; - cursor: pointer; - top: 36px; - right: -152px; - width: 180px; - padding: 8px 21px; - font-size: 12px; - border-radius: 3px; - box-sizing: border-box; - background-color: #fff; - box-shadow: 0.5px 0.5px 3px rgba(0,0,0,0.26); - z-index: 1; -} - -.toot_detail .toot_header .expand_button_wrap .expand_menu::before { - display: block; - content: ""; - z-index: -1; - width: 20px; - height: 20px; - position: absolute; - transform: rotate(45deg); - top: -5px; - left: 8px; - background-color: #fff; -} - -.toot_detail .toot_header .expand_button_wrap .expand_menu ul { - margin: 0 -21px; - margin-bottom: 8px; -} - -.toot_detail .toot_header .expand_button_wrap .expand_menu ul::after { - content: ""; - display: block; - margin-top: 8px; - border-bottom: 1px solid #E6ECF0; -} - -.toot_detail .toot_header .expand_button_wrap .expand_menu ul:last-child::after { - border-bottom: 0px solid #E6ECF0; -} - -.toot_detail .toot_header .expand_button_wrap .expand_menu ul li { - box-sizing: border-box; -} - -.toot_detail .toot_header .expand_button_wrap .expand_menu a { - display: block; - padding: 8px 21px; -} - -.toot_detail .toot_header .expand_button_wrap .expand_menu a:hover { - background-color: #189EFC; - text-decoration: none; - color: #fff; -} - -/* main */ - -.toot_detail .toot_detail_body { - padding: 30px 40px; - /*! border-radius: 4px; */ -} - -.toot_detail .toot_content .toot_article { - font-size: 14px; - line-height: 20px; - margin: 16px auto; -} - -.toot_detail.main_status .toot_content .toot_article { - font-size: 24px; - line-height: 1.35; -} - -.toot_detail.main_status .toot_content .toot_article .cw_button { - background-color: #6D768C; - border-radius: 3px; - padding: 4px; - margin: auto 4px; - font-size: 12px; - box-sizing: border-box; - color: #fff; -} - -.toot_detail.main_status .toot_content .toot_article.content_warning .status_content { - display: none; -} - -.toot_detail.main_status .toot_content a { - color: #189EFC; -} - -.toot_detail.main_status .toot_content time { - color: #66757F; - font-size: 13px; - font-weight: 300; -} - -/* reactions */ -.toot_detail .toot_footer { - display: flex; - flex-wrap: nowrap; - align-items: center; - width: 230px; - height: 21px; - margin-top: 12px; -} - -.toot_detail .toot_footer .toot_reaction { - height: 21px; - flex-grow: 1; -} - -.toot_detail .toot_footer .toot_reaction button { - margin: auto; - color: #AAB8C2; - font-size: 18px; - height: 21px; -} - -.toot_detail .toot_footer .toot_reaction button.active { - animation-name: status_action_active; - animation-duration: 0.5s; -} - -.toot_detail .toot_footer .toot_reaction button .reaction_count { - color: #AAB8C2; - font-size: 12px; - font-weight: 600; -} - -@keyframes status_action_active { - 0% { transform: scale(1); } - 50% { transform: scale(2); } - 100% { transform: scale(1); } -} - -.toot_detail .toot_footer .toot_reaction .reply_button:hover { - color: #1DA1F2; -} - -.toot_detail .toot_footer .toot_reaction .boost_button[reblogged="false"]:hover, -.toot_detail .toot_footer .toot_reaction .boost_button[reblogged="true"], -.toot_detail .toot_footer .toot_reaction .boost_button[reblogged="false"]:hover .reaction_count, -.toot_detail .toot_footer .toot_reaction .boost_button[reblogged="true"] .reaction_count { - color: #17BF63; -} - -.toot_detail .toot_footer .toot_reaction .fav_button[favourited="false"]:hover, -.toot_detail .toot_footer .toot_reaction .fav_button[favourited="true"], -.toot_detail .toot_footer .toot_reaction .fav_button[favourited="false"]:hover .reaction_count, -.toot_detail .toot_footer .toot_reaction .fav_button[favourited="true"] .reaction_count { - color: #FFAD1A; -} - -.toot_detail .status_form { - border-top: 1px solid #E6ECF0; - border-bottom: 1px solid #E6ECF0; -} - -/*---------------------------------- - media detail -----------------------------------*/ - -.media_detail { - max-height: 100%; -} - -.media_detail .media_box { - background-color: #000; - border-top-right-radius: 5px; - border-top-left-radius: 5px; - overflow: hidden; - text-align: center; -} - -.media_detail .toot_entry { - border-bottom-right-radius: 5px; - border-bottom-left-radius: 5px; -} - -.media_detail .toot_entry .toot_entry_body { - border-bottom: none; -} - -.media_detail .toot_entry .media_views { - display: none; -} diff --git a/public_html/assets/images/elf.jpg b/public_html/assets/images/elf.jpg deleted file mode 100644 index e816962..0000000 Binary files a/public_html/assets/images/elf.jpg and /dev/null differ diff --git a/public_html/assets/images/mastodon.png b/public_html/assets/images/mastodon.png deleted file mode 100644 index f0c1c46..0000000 Binary files a/public_html/assets/images/mastodon.png and /dev/null differ diff --git a/public_html/assets/images/self_auth_min.png b/public_html/assets/images/self_auth_min.png deleted file mode 100644 index 6d340bf..0000000 Binary files a/public_html/assets/images/self_auth_min.png and /dev/null differ diff --git a/public_html/assets/js/halcyon/halcyonFunctions.js b/public_html/assets/js/halcyon/halcyonFunctions.js deleted file mode 100644 index 773b054..0000000 --- a/public_html/assets/js/halcyon/halcyonFunctions.js +++ /dev/null @@ -1,258 +0,0 @@ -/*----------------------------------- - get Link from XHR Header ------------------------------------*/ - -function getLinkFromXHRHeader(xhrheaderstring) { - const re = xhrheaderstring.match(/link: <.+api\/v1\/(.+?)>; rel="(.+?)", <.+api\/v1\/(.+?)>; rel="(.+?)"/); - let di = new Object(); - if(re){ - di[re[2]] = re[1]; - di[re[4]] = re[3]; - } - return di; -} - -/*---------------------------------- - Make relative URL -----------------------------------*/ - -function getRelativeURL(url, id, options) { - - const array = url.split('/'); - - if ( array.length >= 4 ) { - if ( !options ) { - var options = "" - }; - - if (id) { - // IF WITHIN ID - if (array[array.length-1].substr(0,1) === '@') { - const link = '/'+array[array.length-1]+'@'+array[2]+options+'?mid='+id+'&'; - return link; - } else { - const link = '/@'+array[array.length-1]+'@'+array[2]+options+'?mid='+id+'&'; - return link; - } - - } else { - // IF WITHOUT ID (URL ONLY) - if (array[array.length-1].substr(0,1) === '@') { - const link = '/'+array[array.length-1]+'@'+array[2]+options; - return link; - } else { - const link = '/@'+array[array.length-1]+'@'+array[2]+options; - return link; - } - } - - } - -} - -/*----------------------------------- - Replace Mastodon link for Halcyon ------------------------------------*/ - -function replaceInternalLink(){ - // REPLIES - $(".h-card > a").each(function(i) { - $(this).attr('href',getRelativeURL($(this).attr('href'))); - }); - // HASHTAGS - $(".toot_article a").each(function(i) { - const tags = $(this).attr('href').match(/https:\/\/.+..+\/tags\/(.+)\/?/); - if (tags) { - $(this).attr('href','/search?q='+tags[1]); - } - }); -} - -/*----------------------------------- - Datetime exchange ------------------------------------*/ - -function getConversionedDate(key, value) { - if (value === null || - value.constructor !== String || - value.search(/^\d{4}-\d{2}-\d{2}/g) === -1) - return value; - return new Date(value); -} - -/*---------------------------------- - Relative Datetime -----------------------------------*/ - -function getRelativeDatetime(current_time, posted_time) { - const calendar = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]; - - var posted_time_original = posted_time, - posted_time = getConversionedDate(null, posted_time_original).getTime(), - elapsedTime = Math.ceil((current_time-posted_time)/1000); - - if (elapsedTime < 60) { - const datetime = "・" + elapsedTime + "s"; - return datetime; - - } else if (elapsedTime < 120) { - const datetime = "・1m"; - return datetime; - - } else if (elapsedTime < (60*60)) { - const datetime = "・" + (Math.floor(elapsedTime / 60) < 10 ? " " : "") + Math.floor(elapsedTime / 60) + "m"; - return datetime; - - } else if (elapsedTime < (120*60)) { - const datetime = "・1h"; - return datetime; - - } else if (elapsedTime < (24*60*60)) { - const datetime = "・" + (Math.floor(elapsedTime / 3600) < 10 ? " " : "") + Math.floor(elapsedTime / 3600) + "h"; - return datetime; - - } else { - const datetime = "・" + calendar[posted_time_original.getMonth()] + " " + posted_time_original.getDate(); - return datetime; - } -} - -/*----------------------------------- - ResetApp ------------------------------------*/ - -function resetApp() { - - /* IMPORTANT */ - current_id = Number(localStorage.getItem("current_id")); - current_instance = localStorage.getItem("current_instance"); - authtoken = localStorage.getItem("current_authtoken"); - - // Start api - api = new MastodonAPI({ - instance: 'https://'+current_instance, - api_user_token: authtoken - }); - - // Set local storage items - api.get("accounts/verify_credentials", function(AccountObj) { - - // SAVE PROFILE FOR LOCALSTORAGE (ENABLE BETWEEN ONE SESSION) - localStorage.setItem("current_display_name", AccountObj["display_name"]); - localStorage.setItem("current_acct", AccountObj["acct"]); - localStorage.setItem("current_url", getRelativeURL(AccountObj["url"],AccountObj["id"])); - localStorage.setItem("current_header", AccountObj["header"]); - localStorage.setItem("current_avatar", AccountObj["avatar"]); - localStorage.setItem("current_statuses_count", AccountObj["statuses_count"]); - localStorage.setItem("current_following_count", AccountObj["following_count"]); - localStorage.setItem("current_followers_count", AccountObj["followers_count"]); - localStorage.setItem("current_statuses_count_link", getRelativeURL(AccountObj["url"],AccountObj["id"])); - localStorage.setItem("current_following_count_link", getRelativeURL(AccountObj["url"],AccountObj["id"],'/following')); - localStorage.setItem("current_followers_count_link", getRelativeURL(AccountObj["url"],AccountObj["id"],'/followers')); - localStorage.setItem("current_favourites_link", getRelativeURL(AccountObj["url"],AccountObj["id"],'/favourites')); - - // PROFILE - current_display_name = localStorage.getItem("current_display_name"); - current_acct = localStorage.getItem("current_acct"); - current_url = localStorage.getItem("current_url"); - current_header = localStorage.getItem("current_header"); - current_avatar = localStorage.getItem("current_avatar"); - current_statuses_count = localStorage.getItem("current_statuses_count"); - current_following_count = localStorage.getItem("current_following_count"); - current_followers_count = localStorage.getItem("current_followers_count"); - current_statuses_count_link = localStorage.getItem("current_statuses_count_link"); - current_following_count_link = localStorage.getItem("current_following_count_link"); - current_followers_count_link = localStorage.getItem("current_followers_count_link"); - current_favourites_link = localStorage.getItem("current_favourites_link"); - - // REPLACE USER'S INFORMATIONS - $(".js_current_profile_displayname").text(current_display_name); - $(".js_current_profile_username").text(current_acct); - $(".js_current_profile_link").attr('href', current_url); - $(".js_current_header_image").attr('src', current_header); - $(".js_current_profile_image").attr('src', current_avatar); - $(".js_current_toots_count").text(current_statuses_count); - $(".js_current_following_count").text(current_following_count); - $(".js_current_followers_count").text(current_followers_count); - $(".current_toots_count_link").attr('href', current_statuses_count_link); - $(".current_following_count_link").attr('href', current_following_count_link); - $(".current_followers_count_link").attr('href', current_followers_count_link); - - replace_emoji(); - - }); - - $.cookie("session", "true", { path: '/' }); - -} - -/*----------------------------------- - RefreshApp ------------------------------------*/ - -function refreshApp() { - - // IMPORTANT - current_id = Number(localStorage.getItem("current_id")); - current_instance = localStorage.getItem("current_instance"); - authtoken = localStorage.getItem("current_authtoken"); - - // Start api - api = new MastodonAPI({ - instance: "https://"+current_instance, - api_user_token: authtoken - }); - - // PROFILE - current_display_name = localStorage.getItem("current_display_name"); - current_acct = localStorage.getItem("current_acct"); - current_url = localStorage.getItem("current_url"); - current_header = localStorage.getItem("current_header"); - current_avatar = localStorage.getItem("current_avatar"); - current_statuses_count = localStorage.getItem("current_statuses_count"); - current_following_count = localStorage.getItem("current_following_count"); - current_followers_count = localStorage.getItem("current_followers_count"); - current_statuses_count_link = localStorage.getItem("current_statuses_count_link"); - current_following_count_link = localStorage.getItem("current_following_count_link"); - current_followers_count_link = localStorage.getItem("current_followers_count_link"); - current_favourites_link = localStorage.getItem("current_favourites_link"); - -} - -/*----------------------------------- - Profile ------------------------------------*/ - -function setCurrentProfile() { - - // REPLACE USER'S INFORMATIONS - $(".js_current_profile_displayname").text(current_display_name); - $(".js_current_profile_username").text(current_acct); - $(".js_current_profile_link").attr("href", current_url); - $(".js_current_header_image").attr("src", current_header); - $(".js_current_profile_image").attr("src", current_avatar); - $(".js_current_toots_count").text(current_statuses_count); - $(".js_current_following_count").text(current_following_count); - $(".js_current_followers_count").text(current_followers_count); - $(".current_toots_count_link").attr("href", current_statuses_count_link); - $(".current_following_count_link").attr("href", current_following_count_link); - $(".current_followers_count_link").attr("href", current_followers_count_link); - - replace_emoji(); - -} - -/*---------------------------------- - Set User recent images -----------------------------------*/ - -function putMessage(Message) { - - $('#overlay_message').addClass('view'); - $('#overlay_message section span').text(Message); - - setTimeout(function(){ - $("#overlay_message").removeClass("view"); - },3000); - -}; \ No newline at end of file diff --git a/public_html/assets/js/halcyon/halcyonUI.js b/public_html/assets/js/halcyon/halcyonUI.js deleted file mode 100644 index bfd3d30..0000000 --- a/public_html/assets/js/halcyon/halcyonUI.js +++ /dev/null @@ -1,3353 +0,0 @@ -/*----------------------------------- - Reset ------------------------------------*/ - -$(function() { - - $('input[type="file"]').val(''); - -}) - -/*----------------------------------- - Buttons ------------------------------------*/ - -$(function() { - - // PREFIX A - $(document).on('click','a', function(e) { - e.stopPropagation(); - }); - - // PREFIX INPUT - $(document).on('keypress',"input.disallow_enter[type='text']", function(e) { - if((e.which == 13) || (e.keyCode == 13)){ return false; } - }); - - // FOLLOW - $(document).on('click','.follow_button', function(e) { - - e.stopPropagation(); - - if ($(this).attr('mid') !== null) { - api.post('accounts/'+$(this).attr('mid')+'/follow', function (data) { - }); - } else if ($(this).attr('data')!== null) { - api.post("follows", {uri:$(this).attr('data')}, function (data) { - }); - } - - $(this).toggleClass('follow_button'); - $(this).toggleClass('following_button'); - $(this).html('Following'); - - return false; - }); - - // FOLLOWING - $(document).on('click','.following_button', function(e) { - - e.stopPropagation(); - - if ($(this).attr('mid') !== null) { - api.post('accounts/'+$(this).attr('mid')+'/unfollow', function (data) { - }); - } - $(this).toggleClass('following_button'); - $(this).toggleClass('follow_button'); - $(this).html('Follow'); - - return false; - }); - - // MUTE - $(document).on('click','.mute_button', function(e) { - - if ($(this).attr('mid') !== null) { - api.post('accounts/'+$(this).attr('mid')+'/mute', function (data) { - }); - } - - putMessage("You'll no longer receive notifications from this user"); - return false; - }); - - // UNMUTE - $(document).on('click','.muting_button', function(e) { - - if($(this).attr('mid')!=null) { - api.post('accounts/'+$(this).attr('mid')+'/unmute', function (data) { - }); - } - $(this).toggleClass('muting_button'); - $(this).toggleClass('follow_button'); - $(this).html('Follow'); - - putMessage("Unmuted this user"); - return false; - }); - - // BLOCK - $(document).on('click','.block_button', function(e) { - - if ($(this).attr('mid') !== null) { - api.post('accounts/'+$(this).attr('mid')+'/block', function (data) { - }); - } - - putMessage("This user has been blocked"); - return false; - - }); - - // UNBLOCK - $(document).on('click','.blocking_button', function(e) { - - e.stopPropagation(); - - if ($(this).attr('mid') !== null) { - api.post('accounts/'+$(this).attr('mid')+'/unblock', function (data) { - }); - } - $(this).toggleClass('blocking_button'); - $(this).toggleClass('follow_button'); - $(this).html('Follow'); - - putMessage("Unblocked this user"); - return false; - }); - - // BOOST - $(document).on('click','.boost_button', function(e) { - - e.stopPropagation(); - - if($(this).attr('reblogged') !== 'true'){ - api.post("statuses/"+$(this).attr('tid')+"/reblog", function (data) { - }); - $(this).attr('reblogged', "true"); - $(this).toggleClass('active'); - } else { - api.post("statuses/"+$(this).attr('tid')+"/unreblog", function (data) { - }); - $(this).attr('reblogged', "hold"); - $(this).toggleClass('active'); - $(this).mouseout(function(e) { - $(this).attr('reblogged', "null"); - }); - } - - return false; - }); - - // FAVOURITE - $(document).on('click','.fav_button', function(e) { - - e.stopPropagation(); - - if($(this).attr('favourited') !== 'true'){ - api.post("statuses/"+$(this).attr('tid')+"/favourite", function (data) { - }); - $(this).attr('favourited', "true"); - $(this).toggleClass('active'); - } else { - api.post("statuses/"+$(this).attr('tid')+"/unfavourite", function (data) { - }); - $(this).attr('favourited', "hold"); - $(this).toggleClass('active'); - $(this).mouseout(function(e) { - $(this).attr('favourited', "null"); - }); - } - - return false; - }); - - // DELETE - $(document).on('click','.delete_button', function(e) { - - const sid = $(this).attr('tid'); - - api.delete("statuses/"+sid, function (data) { - $('.toot_entry[sid="'+sid+'"]').remove(); - putMessage("Your Toot has been deleted"); - }); - - }); - - // CONTENTS WARNING - $(document).on('click','.cw_button', function(e) { - - e.stopPropagation(); - const article = $(this).parent(); - - if ( article.hasClass('content_warning') ) { - $(this).text('SHOW LESS'); - article.removeClass('content_warning'); - } else { - $(this).text('SHOW MORE'); - article.addClass('content_warning'); - } - - return false; - }); - - // NOT SAFE FOR WORK - $(document).on('click','.sensitive_alart', function(e) { - - e.stopPropagation(); - - $(this).toggleClass('invisible'); - - return false; - }); - - // HEADER AVATAR BUTTON - $(document).on('click','.header_account_avatar', function(e) { - e.stopPropagation(); - $(this).next('.header_my_account_nav').toggleClass('invisible'); - }); - - // EXPAND TOOT MENU - $(document).on('click','.expand_button', function(e) { - e.stopPropagation(); - $(this).next('.expand_menu').toggleClass('invisible'); - return false; - }); - - // 連投防止 - $(document).on('click','.status_form.ready .active_submit_button', function(e) { - e.stopImmediatePropagation() - return false; - }); - -}); - -/*----------------------------------- - Reset Buttons ------------------------------------*/ - -$(function() { - - $(document).on('click', function(e) { - $('.header_my_account_nav').addClass('invisible'); - $('.expand_menu').addClass('invisible'); - }); - -}) - -/*---------------------------------- - Get Media attachment UI -----------------------------------*/ - -function mediaattachments_template(status) { - - let media_views = ""; - - if ( status.media_attachments[0].url === "/files/original/missing.png" ) { - return ""; - } else if ( !status.sensitive ) { - // NORMAL CONTENT - media_views = `
    `; - } else { - // SENSITIVE CONTENT - media_views = ` -
    -
    - Sensitive content - Click to view -
    - `; - } - - if ( status.media_attachments[0].type === "video" | status.media_attachments[0].type === "gifv" ) { - // VIDEO CONTENT - media_views += (` -
    - -
    - `); - } else { - // IMAGE CONTENT LENGTH 1 OR 2 - if ( status.media_attachments.length <= 2 ) { - for ( let i in status.media_attachments ) { - media_views += (` -
    - -
    - `); - } - // IMAGE CONTENT LENGTH 3 OR MORE THAN - } else { - for ( let i in status.media_attachments ) { - if (Number(i) === 1) { - media_views += (` -
    - -
    - -
    - `); - } else { - media_views += (` -
    - -
    - `); - } - } - media_views += "
    "; - } - media_views += "
    "; - } - - return media_views; -} - -/*---------------------------------- - Get Timeline UI -----------------------------------*/ - -function timeline_template(status) { - - if (status.reblog === null) { - - // What to follow - if ( - status.account.id !== JSON.parse(localStorage.getItem("what_to_follow_0")).id & - status.account.id !== JSON.parse(localStorage.getItem("what_to_follow_1")).id & - status.account.id !== JSON.parse(localStorage.getItem("what_to_follow_2")).id & - status.account.id !== current_id - ) { - localStorage.setItem("what_to_follow_"+String(Math.floor(Math.random()*3)), JSON.stringify(status.account) ); - } - - const status_account_link = getRelativeURL(status.account.url, status.account.id), - status_datetime = getRelativeDatetime(Date.now(), getConversionedDate(null, status.created_at)), - status_attr_datetime = getConversionedDate(null, status.created_at); - - let alart_text = "", - article_option = "", - toot_reblogs_count = "", - toot_favourites_count = "", - media_views = ""; - - // CONTENT WARNING - if ( status.spoiler_text ) { - alart_text = ""+status.spoiler_text+"", - article_option = "content_warning"; - } - - // REBLOGS COUNT - if (status.reblogs_count) { - toot_reblogs_count = status.reblogs_count; - } - - // FAVOURITES COUNT - if (status.favourites_count) { - toot_favourites_count = status.favourites_count; - } - - // MEDIA ATTACHMENTS - if ( status.media_attachments.length ) { - media_views = mediaattachments_template(status); - } - - // TEMPLATE - const html=(` -
  • -
    - - -
    - -
    -
    - -
    - -
    - - -
    - -
    - ${alart_text} - - ${status.content} - - ${media_views} -
    - -
    -
    - -
    -
    - -
    -
    - -
    -
    - -
    -
    -
  • - `); - - return $(html) - - } else { - - // What to follow - if ( - status.reblog.account.id !== JSON.parse(localStorage.getItem("what_to_follow_0")).id & - status.reblog.account.id !== JSON.parse(localStorage.getItem("what_to_follow_1")).id & - status.reblog.account.id !== JSON.parse(localStorage.getItem("what_to_follow_2")).id & - status.account.id !== current_id - ) { - localStorage.setItem("what_to_follow_" + String(Math.floor(Math.random()*3)), JSON.stringify(status.reblog.account)); - } - - const status_datetime = getRelativeDatetime(Date.now(), getConversionedDate(null, status.reblog.created_at)), - status_attr_datetime = getConversionedDate(null, status.reblog.created_at), - status_reblog_account_link = getRelativeURL(status.reblog.account.url, status.reblog.account.id), - status_account_link = getRelativeURL(status.account.url, status.account.id); - - let alart_text = "", - article_option = "", - toot_reblogs_count = "", - toot_favourites_count = "", - media_views = ""; - - // CONTENT WARNING - if ( status.reblog.spoiler_text ) { - alart_text = ""+status.reblog.spoiler_text+"", - article_option = "content_warning"; - } - - // REBLOGS COUNT - if (status.reblog.reblogs_count) { - toot_reblogs_count = status.reblog.reblogs_count; - } - - // FAVOURTITES COUNT - if (status.reblog.favourites_count) { - toot_favourites_count = status.reblog.favourites_count; - } - - // MEDIA ATTACHMENTS - if ( status.reblog.media_attachments.length ) { - media_views = mediaattachments_template(status.reblog); - } - - // TEMPLATE - const html = (` -
  • - -
    - - -
    - -
    -
    - -
    - -
    - - -
    - -
    - ${alart_text} - - ${status.reblog.content} - - ${media_views} -
    - -
    -
    - -
    -
    - -
    -
    - -
    -
    - -
    -
    -
  • - `); - - return $(html) - - } -} - -/*---------------------------------- - Get Notifications UI -----------------------------------*/ - -function notifications_template(NotificationObj) { - - // Defined for Fav/Bos/Fol/Men - const notice_author_link = getRelativeURL(NotificationObj.account.url, NotificationObj.account.id); - - // Defined for Fav/Bos - if ( NotificationObj.type === 'favourite' | NotificationObj.type === 'reblog' ) { - - const toot_author_link = getRelativeURL(NotificationObj.status.account.url, NotificationObj.status.account.id), - toot_datetime = getRelativeDatetime(Date.now(), getConversionedDate(null, NotificationObj.status.created_at)), - toot_attr_datetime = getConversionedDate(null, NotificationObj.status.created_at); - - if( NotificationObj.type=='favourite' ){ - const html = (` -
  • - -
    -
    -
    - -
    -
    -

    ${NotificationObj.status.content}

    -
    -
    -
    -
    -
  • - `); - return $(html); - - } else if ( NotificationObj.type === 'reblog' ) { - - const sid = NotificationObj.status.id, - html = (` -
  • - -
    -
    -
    - -
    -
    -

    ${NotificationObj.status.content}

    -
    -
    -
    -
    -
  • - `); - return $(html); - } - - } else if ( NotificationObj.type === 'mention' ) { - - const toot_author_link = getRelativeURL(NotificationObj.status.account.url, NotificationObj.status.account.id), - toot_datetime = getRelativeDatetime(Date.now(), getConversionedDate(null, NotificationObj.status.created_at)), - toot_attr_datetime = getConversionedDate(null, NotificationObj.status.created_at); - - let alart_text = "", - article_option = "", - toot_reblogs_count = "", - toot_favourites_count = "", - media_views = ""; - - // CONTENT WARNING - if (NotificationObj.status.spoiler_text) { - alart_text = ''+NotificationObj.status.spoiler_text+'', - article_option = 'content_warning'; - } - - // REBLOGS COUNT - if (NotificationObj.status.reblogs_count) { - toot_reblogs_count = NotificationObj.status.reblogs_count; - } - - // FAVOURTITES COUNT - if (NotificationObj.status.favourites_count) { - toot_favourites_count = NotificationObj.status.favourites_count; - } - - // MEDIA ATTACHMENTS - if (NotificationObj.status.media_attachments.length) { - media_views = mediaattachments_template(NotificationObj.status); - } - - const html=(` -
  • -
    - -
    - -
    -
    -
    - -
    - - -
    - -
    - ${alart_text} - - ${NotificationObj.status.content} - - ${media_views} -
    - -
    -
    - -
    -
    - -
    -
    - -
    -
    - -
    -
    -
  • - `); - return $(html); - - } else { - const html=(` -
  • - -
  • - `); - return $(html); - } -} - -/*---------------------------------- - Get Follows UI -----------------------------------*/ - -function follows_template(AccountObj) { - - const array = AccountObj.url.split('/'), - profile_link = '/'+array[array.length-1]+'@'+array[array.length-2]+'?mid='+AccountObj.id+'&'; - - const html = (` -
    - -
    - -
    - -
    - -
    - -
    - - - - - -
    -

    ${AccountObj.note}

    -
    - -
    -
    - `); - - return $(html) - -} - -/*---------------------------------- - Get Status UI -----------------------------------*/ - -function status_template(status, class_options) { - - if ( status.reblog === null ) { - - const status_account_link = getRelativeURL(status.account.url, status.account.id), - status_datetime = getConversionedDate(null, status.created_at), - status_attr_datetime = getConversionedDate(null, status.created_at); - - let alart_text = "", - article_option = "", - toot_reblogs_count = "", - toot_favourites_count = "", - media_views = ""; - - // CONTENT WARNING - if (status.spoiler_text) { - alart_text = ''+status.spoiler_text+'', - article_option = 'content_warning'; - } - - // REBLOGS COUNT - if (status.reblogs_count) { - toot_reblogs_count = status.reblogs_count; - } - - // FAVOURITES COUNT - if (status.favourites_count) { - toot_favourites_count = status.favourites_count; - } - - // MEDIA ATTACHMENTS - if (status.media_attachments.length) { - media_views = mediaattachments_template(status); - } - - // TEMPLATE - const html=(` -
    -
    -
    -
    - -
    - - - ${status.account.display_name} - - - @${status.account.acct} - - - -
    -
    -
    - ${alart_text} - - ${status.content} - - ${media_views} -
    - -
    -
    -
    - -
    -
    - -
    -
    - -
    -
    -
    -
    - -
    - -
    - -
    - -
    - - -
    - -
    - - -
    - - - - - -
    - -
    - - - -
    - `); - - // change URL - history.pushState(null, null, getRelativeURL(status.account.url, status.account.id, '/status/'+status.id)); - - return $(html) - - } else { - - const status_datetime = getConversionedDate(null, status.reblog.created_at), - status_attr_datetime = getConversionedDate(null, status.reblog.created_at), - status_reblog_account_link = getRelativeURL(status.reblog.account.url, status.reblog.account.id), - status_account_link = getRelativeURL(status.reblog.account.url, status.reblog.account.id); - - let alart_text = "", - article_option = "", - toot_reblogs_count = "", - toot_favourites_count = "", - media_views = ""; - - // CONTENT WARNING - if (status.spoiler_text) { - alart_text = ''+status.reblog.spoiler_text+'', - article_option = 'content_warning'; - } - - // REBLOGS COUNT - if (status.reblog.reblogs_count) { - toot_reblogs_count = status.reblog.reblogs_count; - } - - // FAVOURTITES COUNT - if (status.reblog.favourites_count) { - toot_favourites_count = status.reblog.favourites_count; - } - - // MEDIA ATTACHMENTS - if(status.reblog.media_attachments.length){ - media_views = mediaattachments_template(status.reblog); - } - - // TEMPLATE - const html=(` -
    -
    - -
    -
    - -
    - - - - ${status.reblog.account.display_name} - - - @${status.reblog.account.acct} - - - - - -
    - -
    - -
    - ${alart_text} - - ${status.reblog.content} - - ${media_views} -
    - - - -
    - -
    -
    - -
    -
    - -
    -
    - -
    -
    - -
    -
    - -
    - -
    - -
    - -
    - - -
    - -
    - - -
    - - - - - -
    - -
    - - - -
    - `); - - // change URL - history.pushState(null, null, getRelativeURL(status.reblog.account.url, status.reblog.id, '/status/'+status.reblog.id)); - return $(html) - - } -} - -/*---------------------------------- - Get Media UI -----------------------------------*/ - -function media_template(status, mediaURL) { - - if ( !status ) { - const html = (` -
    - -
    - -
    - -
    - `); - return $(html) - } else { - - const status_template = timeline_template(status).html(), - html = (` -
    - -
    - -
    - -
    - ${status_template} -
    - -
    - `); - return $(html) - } - -} - -/*---------------------------------- - Get Context UI -----------------------------------*/ - -function context_template(status, class_options) { - - if ( status.reblog === null ) { - - const status_account_link = getRelativeURL(status.account.url, status.account.id), - status_datetime = getRelativeDatetime(Date.now(), getConversionedDate(null, status.created_at)), - status_attr_datetime = getConversionedDate(null, status.created_at); - - let alart_text = "", - article_option = "", - toot_reblogs_count = "", - toot_favourites_count = "", - media_views = ""; - - // CONTENT WARNING - if ( status.spoiler_text ) { - alart_text = ''+status.spoiler_text+'', - article_option = 'content_warning'; - } - - // REBLOGS COUNT - if (status.reblogs_count) { - toot_reblogs_count = status.reblogs_count; - } - - // FAVOURITES COUNT - if (status.favourites_count) { - toot_favourites_count = status.favourites_count; - } - - // MEDIA ATTACHMENTS - if( status.media_attachments.length) { - media_views = mediaattachments_template(status); - } - - // TEMPLATE - const html=(` -
    -
    - -
    - -
    -
    - -
    - - - ${status.account.display_name} - - - @${status.account.acct} - - - - -
    - -
    - ${alart_text} - - ${status.content} - - ${media_views} -
    - -
    -
    - -
    -
    - -
    -
    - -
    -
    - -
    -
    -
    - `); - - return $(html) - - } else { - - const status_datetime = getRelativeDatetime(Date.now(), getConversionedDate(null, status.reblog.created_at)), - status_attr_datetime = getConversionedDate(null, status.reblog.created_at), - status_reblog_account_link = getRelativeURL(status.reblog.account.url, status.reblog.account.id), - status_account_link = getRelativeURL(status.account.url, status.account.id); - - let alart_text = "", - article_option = "", - toot_reblogs_count = "", - toot_favourites_count = "", - media_views = ""; - - // CONTENT WARNING - if ( status.spoiler_text ) { - alart_text = ''+status.reblog.spoiler_text+'', - article_option = 'content_warning'; - } - - // REBLOGS COUNT - if (status.reblog.reblogs_count) { - toot_reblogs_count = status.reblog.reblogs_count; - } - - // FAVOURTITES COUNT - if (status.reblog.favourites_count) { - toot_favourites_count = status.reblog.favourites_count; - } - - // MEDIA ATTACHMENTS - if (status.reblog.media_attachments.length) { - media_views = mediaattachments_template(status.reblog); - } - - // TEMPLATE - const html=(` -
    - -
    -
    - -
    -
    - -
    - - - ${status.reblog.account.display_name} - - - @${status.reblog.account.acct} - - - - -
    - -
    - ${alart_text} - - ${status.reblog.content} - - ${media_views} -
    - -
    -
    - -
    -
    - -
    -
    - -
    -
    - -
    -
    -
    - `); - - return $(html) - - } -} - -/*---------------------------------- - Set Timeline -----------------------------------*/ - -function setTimeline(level,load_options) { - - let isSyncing = true; - - if ( load_options === undefined ) { - var load_options = []; - } - - // Get timeline - api.get(level, load_options, function(statuses) { - - let reply_sources = {}; - for ( let i in statuses ) { - - timeline_template(statuses[i]).appendTo("#js-timeline"); - - if (statuses[i].in_reply_to_id && level === "timelines/home" | level === "timelines/public" ) { - - // 同じ返信先が無い場合 - if (!reply_sources[statuses[i].in_reply_to_id] & !$(".toot_entry[sid='"+statuses[i].in_reply_to_id+"']").length ) { - reply_sources[statuses[i].in_reply_to_id] = statuses[i].id; - api.get('statuses/'+statuses[i].in_reply_to_id, function(in_reply_statuses) { - $("#js-timeline .toot_entry[sid='"+reply_sources[in_reply_statuses.id]+"']").before(context_template(in_reply_statuses, 'ancestors_status default_padding')); - replace_emoji(); - }); - } - - } - - }; - - links = getLinkFromXHRHeader(responce_headers); - replaceInternalLink(); - replace_emoji(); - - if (!statuses.length) { - $('#js-timeline_footer > i').css({"display":"none"}); - } - - isSyncing = false; - - }); - - // Infinite scroll - $(window).scroll(function () { - - // Load before 700px from last - if ( $(window).scrollTop()+window.innerHeight >= $(document).height()-700 ) { - - if (!isSyncing) { - - isSyncing = true; - load_options.unshift( {name:"max_id",data:links['next'].match(/max_id=(.+)&?/)[1]} ); - - api.get(level, load_options, function(statuses) { - - if (statuses.length) { - - let reply_sources = {}; - for ( let i in statuses ) { - - timeline_template(statuses[i]).appendTo("#js-timeline"); - - if (statuses[i].in_reply_to_id && level === "timelines/home" | level === "timelines/public" ) { - if (!reply_sources[statuses[i].in_reply_to_id] & !$(".toot_entry[sid='"+statuses[i].in_reply_to_id+"']").length) { - reply_sources[statuses[i].in_reply_to_id] = statuses[i].id; - api.get('statuses/'+statuses[i].in_reply_to_id, function(in_reply_statuses) { - $("#js-timeline .toot_entry[sid='"+reply_sources[in_reply_statuses.id]+"']").before(context_template(in_reply_statuses, 'ancestors_status default_padding')); - replace_emoji(); - }); - } - - } - - }; - - links = getLinkFromXHRHeader(responce_headers); - replaceInternalLink(); - replace_emoji(); - isSyncing = false; - - } else { - - $('.timeline_footer > i').css({"display":"none"}); - $('.timeline_footer').append(''); - isSyncing = true; - - } - }); - - load_options.shift(); - - }; - - }; - - }); - - // Streaming - $(function() { - - if ( level === "timelines/home" ) { - var streamscope = "user", - scope = "home"; - } else if ( level === "timelines/public" & load_options.length) { - var streamscope = "public:local", - scope = "local"; - } else if ( level === "timelines/public" & !load_options.length) { - var streamscope = "public", - scope = "federated"; - } - - let statuses = []; - const original_title = $('title').text(); - - api.stream(streamscope, function(userstream) { - - if (userstream.event === "update") { - - const streaming_option = localStorage.getItem("setting_post_stream"); - - if ( streaming_option === "manual" ) { - // Is alredy exist? - if ( !$('.toot_entry[sid="'+userstream.payload.id+'"]').length ) { - - $('#js-stream_update').css({'display':'block','height':'auto','padding':'10px'}); - statuses.unshift(userstream.payload); - $('#js-stream_update > button > span').text(statuses.length); - $('title').text("("+statuses.length+") "+original_title); - - $('#header .header_nav_list .'+scope+'_badge').removeClass('invisible'); - - } - } else if ( streaming_option === "auto" ) { - // Is not alredy exist - if ( !$('.toot_entry[sid="'+userstream.payload.id+'"]').length ) { - - timeline_template(userstream.payload).prependTo("#js-timeline"); - replaceInternalLink(); - replace_emoji(); - - //context - if ( level === "timelines/home" | level === "timelines/public" ) { - if (userstream.payload.in_reply_to_id & !$(".toot_entry[sid='"+userstream.in_reply_to_id+"']").length) { - let reply_source = userstream.payload.id; - api.get('statuses/'+userstream.payload.in_reply_to_id, function(in_reply_statuses) { - $("#js-timeline .toot_entry[sid='"+reply_source+"']").before(context_template(in_reply_statuses, 'ancestors_status default_padding')); - replaceInternalLink(); - replace_emoji(); - }); - } - } - - } - } - } - }); - - $(document).on('click','#js-stream_update', function(e) { - - $('#header .header_nav_list .'+scope+'_badge').addClass('invisible'); - $('#js-stream_update').css({'display':'none','height':'0','padding':'0px'}); - - statuses.reverse(); - - for ( let i in statuses ) { - timeline_template(statuses[i]).prependTo("#js-timeline"); - replace_emoji(); - - // context - if ( level === "timelines/home" | level === "timelines/public" ) { - if (statuses[i].in_reply_to_id) { - const reply_source = statuses[i].id; - api.get('statuses/'+statuses[i].in_reply_to_id, function(in_reply_statuses) { - $("#js-timeline .toot_entry[sid='"+reply_source+"']").before(context_template(in_reply_statuses, 'ancestors_status default_padding')); - replace_emoji(); - }); - } - } - - $('title').text(original_title); - }; - - statuses = []; - - }); - - }); - -}; - -/*---------------------------------- - Set Other Timeline -----------------------------------*/ - -function setOtherTimeline(instance, load_options) { - - let isSyncing = true; - - if ( load_options === undefined ) { - var load_options = []; - } - - // Get timeline - const loadstatus = instance + "timelines/public" - api.getOther(loadstatus, load_options, function(statuses) { - - let reply_sources = {}; - for ( let i in statuses ) { - - timeline_template(statuses[i]).appendTo("#js-timeline"); - - if (statuses[i].in_reply_to_id ) { - // Is Alredy exist - if (!reply_sources[statuses[i].in_reply_to_id]) { - reply_sources[statuses[i].in_reply_to_id] = statuses[i].id; - api.getOther(instance + 'statuses/'+statuses[i].in_reply_to_id, function(in_reply_statuses) { - $("#js-timeline .toot_entry[sid='"+reply_sources[in_reply_statuses.id]+"']").before(context_template(in_reply_statuses, 'ancestors_status default_padding')); - replace_emoji(); - }); - } - } - - }; - - $('.toot_entry .toot_footer').addClass('invisible'); - links = getLinkFromXHRHeader(responce_headers); - replaceInternalLink(); - replace_emoji(); - - if (!statuses.length) { - $('#js-timeline_footer > i').css({"display":"none"}); - } - - isSyncing = false; - - }); - - // Infinite scroll - $(window).scroll(function () { - - // Load before 700px from last - if ( $(window).scrollTop()+window.innerHeight >= $(document).height()-700 ) { - - if (!isSyncing) { - - isSyncing = true; - load_options.unshift( {name:"max_id",data:links['next'].match(/max_id=(.+)&?/)[1]} ); - - api.getOther(loadstatus, load_options, function(statuses) { - - if (statuses.length) { - - let reply_sources = {}; - for ( let i in statuses ) { - - timeline_template(statuses[i]).appendTo("#js-timeline"); - - if (statuses[i].in_reply_to_id ) { - // alredy exist - if (!reply_sources[statuses[i].in_reply_to_id]) { - reply_sources[statuses[i].in_reply_to_id] = statuses[i].id; - api.getOther(instance+'statuses/'+statuses[i].in_reply_to_id, function(in_reply_statuses) { - $("#js-timeline .toot_entry[sid='"+reply_sources[in_reply_statuses.id]+"']").before(context_template(in_reply_statuses, 'ancestors_status default_padding')); - replace_emoji(); - }); - } - } - - }; - - $('.toot_entry .toot_footer').addClass('invisible'); - links = getLinkFromXHRHeader(responce_headers); - replaceInternalLink(); - replace_emoji(); - isSyncing = false; - - } else { - - $('.timeline_footer > i').css({"display":"none"}); - $('.timeline_footer').append(''); - isSyncing = true; - - } - }); - - load_options.shift(); - - }; - - }; - - }); - -}; - -/*---------------------------------- - Set notifications -----------------------------------*/ - -function setNotifications(load_options) { - - let isSyncing = true; - - if (load_options === undefined) { - var load_options = []; - } - - // Get notice - api.get('notifications', load_options, function(NotificationObj) { - - for (let i in NotificationObj) { - notifications_template(NotificationObj[i]).appendTo("#js-timeline"); - }; - - links = getLinkFromXHRHeader(responce_headers); - replaceInternalLink(); - replace_emoji(); - - if (!NotificationObj.length) { - $('#js-timeline_footer > i').css({"display":"none"}); - } - - isSyncing = false; - - }); - - // Infinite scroll - $(window).scroll(function () { - - // Load before 700px - if($(window).scrollTop() + window.innerHeight >= $(document).height()-700) { - - if( !isSyncing ){ - - isSyncing = true; - // get latest status id - load_options.unshift( {name:"max_id",data:links['next'].match(/max_id=(.+)&?/)[1]} ); - - api.get('notifications', load_options, function(NotificationObj) { - - if (NotificationObj.length) { - - for (let i in NotificationObj) { - notifications_template(NotificationObj[i]).appendTo("#js-timeline"); - }; - - links = getLinkFromXHRHeader(responce_headers); - replaceInternalLink(); - replace_emoji(); - isSyncing = false; - - } else { - - $('.timeline_footer > i').css({"display":"none"}); - $('.timeline_footer').append(''); - isSyncing = true; - - } - - }); - - load_options.shift(); - - }; - - }; - - }); - - api.stream("user", function(userstream) { - const original_title = $('title').text(); - - if (userstream.event === "notification") { - - const streaming_option = localStorage.getItem("setting_post_stream"); - - if ( streaming_option === "manual" ) { - // todo - } else if ( streaming_option === "auto" ) { - notifications_template(userstream.payload).prependTo("#js-timeline"); - replaceInternalLink(); - replace_emoji(); - } - - } - }); - -} - -/*---------------------------------- - Set Following/Followers -----------------------------------*/ - -function setFollows(mid, param, load_options) { - - let isSyncing = true, - followsList = []; - - api.get('accounts/'+mid+'/'+param, load_options, function(follows) { - - - for (let i in follows) { - follows_template(follows[i]).appendTo("#js-follows_profile"); - followsList.unshift(follows[i].id); - }; - - api.getArray('accounts/relationships', [{name:'id', data:followsList}], function(RelationshipsObj) { - for ( let i in RelationshipsObj ) { - if ( RelationshipsObj[i].following ) { - const button = $('#js-follows_profile .follow_button[mid="'+RelationshipsObj[i].id+'"]'); - button.removeClass("follow_button"); - button.addClass("following_button"); - button.text('Following'); - } - } - }); - - links = getLinkFromXHRHeader(responce_headers); - replace_emoji(); - - $("#js-follows_footer > i").css({"display":"none"}); - isSyncing = false; - - }); - - // Infinite scroll - $(window).scroll(function () { - - if ($(window).scrollTop() + window.innerHeight >= $(document).height()-700) { - - if( !isSyncing ){ - isSyncing = true; - - // get latest id - load_options.unshift( {name:"max_id",data:links['next'].match(/max_id=(.+)&?/)[1]} ); - - api.get('accounts/'+mid+'/'+param, load_options, function(follows) { - - let followsList = []; - - if (follows.length) { - - for(let i in follows) { - follows_template(follows[i]).appendTo("#js-follows_profile"); - followsList.unshift(follows[i].id); - }; - - api.getArray('accounts/relationships', [{name:'id', data:followsList}], function(RelationshipsObj) { - for ( let i in RelationshipsObj ) { - if ( RelationshipsObj[i].following ) { - const button = $('#js-follows_profile .follow_button[mid="'+RelationshipsObj[i].id+'"]'); - button.removeClass("follow_button"); - button.addClass("following_button"); - button.text('Following'); - } - } - }); - - links = getLinkFromXHRHeader(responce_headers); - replace_emoji(); - isSyncing = false; - - } else { - isSyncing = true; - } - - }); - - load_options.shift(); - - }; - - }; - - }); - -}; - -/*---------------------------------- - Set user search -----------------------------------*/ - -function setUserSearch(query) { - - api.get('search', [{name:'q',data:query},{name:'resolve',data:'true'}], function(search) { - - for(let i in search.accounts) { - follows_template(search.accounts[i]).appendTo("#js-follows_profile");; - } - - $("#js-follows_footer > i").css({"display":"none"}); - replace_emoji(); - - }); - -}; - -/*---------------------------------- - Set Relationship -----------------------------------*/ - -function setAccount(AccountObj) { - - $("#js_header_image").attr('src', AccountObj.header); - $("#js_profile_image").attr('src', AccountObj.avatar); - $("#js_toots_count").text(AccountObj.statuses_count); - $("#js_following_count").text(AccountObj.following_count); - $("#js_followers_count").text(AccountObj.followers_count); - $("#js_profile_displayname").text(AccountObj.display_name); - $("#js_profile_username").text(AccountObj.acct); - $("#js_profile_bio").html(AccountObj.note); - - if( AccountObj.id === current_id ) { - - $(` - - - `).appendTo('.profile_button_box'); - - $(` - -

    FAVOURITES

    - Show -
    - `).appendTo("#js-profile_nav_favourites"); - - } else { - - api.get('accounts/relationships', [{name:'id', data:String(AccountObj.id)}], function(RelationshipObj) { - - if (RelationshipObj[0].followed_by) { - $('#main .profile_username .profile_followed_by').removeClass('invisible'); - } - - if (RelationshipObj[0].blocking) { - $(` - - `).appendTo('.profile_button_box'); - - } else if (RelationshipObj[0].muting) { - $(` - - `).appendTo('.profile_button_box'); - - } else if (RelationshipObj[0].requested) { - $(` - - - `).appendTo('.profile_button_box'); - - } else if(RelationshipObj[0].following){ - $(` - - `).appendTo('.profile_button_box'); - - } else { - $(` - - `).appendTo('.profile_button_box'); - } - }); - }; - - replace_emoji(); - -} - -/*---------------------------------- - Set User recent images -----------------------------------*/ - -function setRecentImages(mid) { - - api.get("accounts/"+mid+"/statuses", [{name:'only_media',data:'true'},{name:'limit',data:'6'}], function(statuses) { - - if ( statuses.length ) { - - $('#js_profile_recent_images span').text(`${statuses[0].account.statuses_count} Photos and toots`); - $('#js_profile_recent_images a').attr('href', $("#media_link").attr('href')); - - for ( i in statuses ) { - $(` -
    - -
    - `).appendTo('#js_profile_recent_images_box'); - }; - - } - - }); - -}; - -/*---------------------------------- - Header tabs badge -----------------------------------*/ - -function badges_update(){ - - let current_count = Number(localStorage.getItem("notification_count")); - if ( current_count ) { - $('#header .header_nav_list .notification_badge').removeClass('invisible'); - $('#header .header_nav_list .notification_badge').text( current_count ); - } - - api.stream("user", function(userstream) { - - if (userstream.event === "update" & location.pathname !== "/" ) { - $('#header .header_nav_list .home_badge').removeClass('invisible'); - } else if (userstream.event === "notification" & location.pathname !== "/notifications") { - current_count += 1; - localStorage.setItem("notification_count", current_count ); - $('#header .header_nav_list .notification_badge').text( current_count ); - if ( $('#header .header_nav_list .notification_badge').hasClass('invisible') ) { - $('#header .header_nav_list .notification_badge').removeClass('invisible') - } - } - - }); -} - -/*---------------------------------- - [T]Set Overlay status -----------------------------------*/ - -function setOverlayStatus(sid) { - - // Check seletcting text or not - if ( !window.getSelection().toString() ) { - - // RESET - $("#js-overlay_content .temporary_object").empty() - - // If not seletcting text, show status details - $('#js-overlay_content_wrap').addClass('view'); - $('#js-overlay_content_wrap').addClass('black_05'); - - api.get('statuses/'+sid+'/', function(status) { - - $('
    ').appendTo("#js-overlay_content .temporary_object"); - status_template(status, 'main_status').appendTo('#js-overlay_content .toot_detail_wrap'); - - replaceInternalLink(); - replace_emoji(); - - api.get('statuses/'+sid+'/context', function(status) { - - if (status.ancestors.length) { - status.ancestors.reverse(); - for ( let i in status.ancestors ) { - context_template(status.ancestors[i], 'ancestors_status').prependTo("#js-overlay_content .temporary_object .toot_detail_wrap"); - } - } - - if (status.descendants.length) { - for ( let i in status.descendants) { - context_template(status.descendants[i], 'descendants_status').appendTo("#js-overlay_content .temporary_object .toot_detail_wrap"); - } - } - - replaceInternalLink(); - replace_emoji(); - - }); - - }); - } - -} - -// triger -$(function() { - - // PREFIX - $(document).on('click','.toot_entry.ancestors_status, .toot_entry.descendants_status', function(e) { - $("#js-overlay_content .temporary_object").empty(); - }); - - // toot status - $(document).on('click','.toot_entry', function(e) { - setOverlayStatus($(this).attr('sid')); - }); - -}) - -/*---------------------------------- - [T]Set Overlay media -----------------------------------*/ - -function setOverlayMedia(sid,url) { - - // RESET - $("#js-overlay_content .temporary_object").empty() - - // If not seletcting text, show status details - $('#js-overlay_content_wrap').addClass('view'); - $('#js-overlay_content_wrap').addClass('black_08'); - $('#js-overlay_content .temporary_object').addClass('visible'); - - api.get("statuses/"+sid, function(status) { - - if ( !status.reblog ) { - media_template(status, url).appendTo("#js-overlay_content .temporary_object"); - replaceInternalLink(); - replace_emoji(); - } else { - media_template(status.reblog, url).appendTo("#js-overlay_content .temporary_object"); - replaceInternalLink(); - replace_emoji(); - } - - }); - -} - -// triger -$(function() { - - // overlay media - $(document).on('click','.media_attachment[otype="image"]', function(e) { - // Stop setOverlayStatus() - e.stopPropagation(); - setOverlayMedia($(this).attr('sid'),$(this).attr('url')); - $('.media_detail .toot_entry .media_views').addClass('invisible'); - }); - -}) - -/*---------------------------------- - [T]Set Overlay media without status -----------------------------------*/ - -function setOverlayMediaWithoutStatus(url) { - - // RESET - $("#js-overlay_content .temporary_object").empty() - - // If not seletcting text, show status details - $('#js-overlay_content_wrap').addClass('view'); - $('#js-overlay_content_wrap').addClass('black_05'); - - media_template(null, url).appendTo("#js-overlay_content .temporary_object"); - -} - -// triger -$(function() { - - // overlay media - $(document).on('click','img[mediaaccess="true"]', function(e) { - // Stop setOverlayStatus() - e.stopPropagation(); - setOverlayMediaWithoutStatus($(this).attr('src')); - }); - -}) - -/*----------------------------------- - [P]Create status: Overlay ------------------------------------*/ - -$(function() { - - // EXPAND - $(document).on('click', '#creat_status', function(e) { - - $('.overlay_status').removeClass('invisible'); - $("#js-overlay_content_wrap .temporary_object").empty(); - - $('#js-overlay_content_wrap').addClass('view'); - $('#js-overlay_content_wrap').addClass('black_08'); - $('#overlay_status_form .status_textarea textarea').addClass('focus'); - $('.overlay_status .submit_status_label').addClass('active_submit_button'); - $('#overlay_status_form .status_textarea textarea').focus() - $('#overlay_status_form input[name="privacy_option"]').val([localStorage.getItem("setting_post_privacy")]); - $('#overlay_status_form .expand_privacy_menu_button > i').attr('class', "fa " + localStorage.getItem("setting_post_privacy")); - - }); - - // TEXTAREA - $(document).on('change keyup','#overlay_status_form textarea, #overlay_status_form .status_spoiler', function(e) { - - if ( - e.keyCode !== 224 & - e.keyCode !== 17 & - e.keyCode !== undefined - //!$('#overlay_status_form').hasClass('ready') - ) { - - const textCount = $('#overlay_status_form textarea').val().length + $('#overlay_status_form .status_spoiler').val().length; - let textLen = ( 512 - textCount ); - - if ( textLen <= -1 ) { - $('#overlay_status_form .character_count').addClass('red'); - $('#overlay_status_form').addClass('ready'); - } else if ( textLen === 512 ) { - $('#overlay_status_form').addClass('ready'); - } else { - $('#overlay_status_form .character_count').removeClass('red'); - $('#overlay_status_form').removeClass('ready'); - } - - $(this).val(replaced_emoji_return($(this).val())); - $('#overlay_status_form .character_count').text(textLen); - - } - - }); - - // CONTENT WARNING BUTTON - $(document).on('click','#overlay_status_form .status_CW', function(e) { - $('#overlay_status_form .status_spoiler').toggleClass('invisible'); - }); - - // EXPAND PRIVACY - $(document).on('click','#overlay_status_form .expand_privacy_menu_button', function(e) { - $('#overlay_status_form .expand_privacy_menu').removeClass('invisible'); - }); - - // SET PRIVACY - $(document).on('click','#overlay_status_form .status_privacy.select_privacy', function(e) { - e.stopPropagation(); - $('#overlay_status_form .expand_privacy_menu_button > i').attr('class', $(this).attr('privacyicon')); - $('#overlay_status_form .expand_privacy_menu').addClass('invisible'); - }); - - // MEDIA ATTACHMENT - $(document).on('change','#overlay_status_media_atta', function(e) { - - $('#overlay_status_form .media_attachments_preview_area').empty(); - $('#overlay_status_form .status_textarea .media_attachments_preview_area').removeClass('invisible'); - - for ( let i = 0, f; f = e.target.files[i]; i++ ) { - - let reader = new FileReader(); - reader.readAsDataURL(f); - reader.onloadend = (function() { - return function (e) { - const html = (` -
    - -
    - `); - $(html).appendTo('#overlay_status_form .media_attachments_preview_area'); - } - })(f); - - } - }); - - // NOT SAFE FOR WORK - $(document).on('click','#overlay_status_form .status_NSFW', function(e) { - $('#overlay_status_form .media_attachments_preview_area').toggleClass('nsfw'); - }); - - // TOOT SUBMIT BUTTON - $(document).on('click','#overlay_status_form .submit_status_label', function(e) { - - $('#overlay_status_form').addClass('ready'); - $('#overlay_status_form .status_textarea').addClass('disallow_select'); - $('#overlay_status_form .character_count').html(''); - - const form = document.forms.overlay_status_form; - if ( !$('#overlay_status_media_atta')[0].files.length ) { - - const params = { - status : form.status_textarea.value, - sensitive : form.status_nsfw.checked, - spoiler_text : form.status_spoiler.value, - visibility : form.privacy_option.value - } - - api.post("statuses", params, function (data) { - $('#overlay_status_form .media_attachments_preview_area').empty(); - $('#overlay_status_form .status_spoiler').addClass('invisible'); - $('#overlay_status_form .status_textarea .media_attachments_preview_area').addClass('invisible'); - form.reset(); - $('#overlay_status_form').removeClass('ready'); - $('#overlay_status_form .status_textarea').removeClass('disallow_select'); - $('#overlay_status_form .character_count').html('512'); - $('.overlay_status .submit_status_label').removeClass('active_submit_button'); - $('.overlay_status').addClass('invisible'); - $('#js-overlay_content_wrap').removeClass('view'); - $('#js-overlay_content_wrap').removeClass('black_05'); - putMessage('Your Toot was posted!'); - }); - - } else { - - const dummy_form = $('
    ').append($('#overlay_status_media_atta')), - files = dummy_form[0][0].files, - filesLen = files.length -1; - - let media_array = []; - - $("#overlay_status_form .status_bottom").append($('')); - - for (let i=0; i i').attr('class', $(this).attr('privacyicon')); - $('#header_status_form .expand_privacy_menu').addClass('invisible'); - }); - - // EXPAND TEXT AREA - $(document).on('click','#header_status_form', function(e) { - if(!$('#header_status_form .status_textarea textarea').hasClass('focus')) { - $('#header_status_form input[name="privacy_option"]').val([localStorage.getItem("setting_post_privacy")]); - $('#header_status_form .expand_privacy_menu_button > i').attr('class', "fa " + localStorage.getItem("setting_post_privacy")); - $('#header_status_form .status_textarea textarea').addClass('focus'); - $('#header_status_form .status_bottom').removeClass('invisible'); - $('#header_status_form .submit_status_label').addClass('active_submit_button'); - } - }); - - // MEDIA ATTACHMENT - $(document).on('change','#header_status_media_atta', function(e) { - - $('#header_status_form .media_attachments_preview_area').empty(); - $('#header_status_form .status_textarea .media_attachments_preview_area').removeClass('invisible'); - - for ( let i = 0, f; f = e.target.files[i]; i++ ) { - - let reader = new FileReader(); - reader.readAsDataURL(f); - reader.onloadend = (function() { - return function (e) { - const html = (` -
    - -
    - `); - $(html).appendTo('#header_status_form .media_attachments_preview_area'); - } - })(f); - - } - }); - - // NOT SAFE FOR WORK - $(document).on('click','#header_status_form .status_NSFW', function(e) { - $('#header_status_form .media_attachments_preview_area').toggleClass('nsfw'); - }); - - // TOOT SUBMIT BUTTON - $(document).on('click','#header_status_form .submit_status_label', function(e) { - - $('#header_status_form').addClass('ready'); - $('#header_status_form .status_textarea').addClass('disallow_select'); - $('#header_status_form .character_count').html(''); - - const form = document.forms.header_status_form; - if ( !$('#header_status_media_atta')[0].files.length ) { - - const params = { - status : form.status_textarea.value, - sensitive : form.status_nsfw.checked, - spoiler_text : form.status_spoiler.value, - visibility : form.privacy_option.value - } - - api.post("statuses", params, function (data) { - $('#header_status_form .media_attachments_preview_area').empty(); - $('#header_status_form .status_spoiler').addClass('invisible'); - $('#header_status_form .status_textarea .media_attachments_preview_area').addClass('invisible'); - form.reset(); - $('#header_status_form').removeClass('ready'); - $('#header_status_form .status_textarea').removeClass('disallow_select'); - $('#header_status_form .character_count').html('512'); - }); - - } else { - - // 擬似formに追加。そのあとクローンを元の位置に戻す。 - const dummy_form = $('
    ').append($('#header_status_media_atta')), - files = dummy_form[0][0].files, - filesLen = files.length -1; - - let media_array = []; - - $("#header_status_form .status_bottom").append($('')); - - for (let i=0; i i').attr('class', "fa " + localStorage.getItem("setting_post_privacy")); - } - }); - - // TEXTAREA - $(document).on('change keyup','#reply_status_form textarea, #reply_status_form .status_spoiler', function(e) { - - if ( - e.keyCode !== 224 & - e.keyCode !== 17 & - e.keyCode !== undefined - //!$('#overlay_status_form').hasClass('ready') - ) { - - const textCount = $('#reply_status_form textarea').val().length + $('#reply_status_form .status_spoiler').val().length; - let textLen = ( 512 - textCount ); - - if ( textLen <= -1 ) { - $('#reply_status_form .character_count').addClass('red'); - $('#reply_status_form').addClass('ready'); - } else if ( textLen === 512 ) { - $('#reply_status_form').addClass('ready'); - } else { - $('#reply_status_form .character_count').removeClass('red'); - $('#reply_status_form').removeClass('ready'); - } - - $(this).val(replaced_emoji_return($(this).val())); - $('#reply_status_form .character_count').text(textLen); - - } - - }); - - // CONTENT WARNING BUTTON - $(document).on('click','#reply_status_form .status_CW', function(e) { - $('#reply_status_form .status_spoiler').toggleClass('invisible'); - }); - - // EXPAND PRIVACY - $(document).on('click','#reply_status_form .expand_privacy_menu_button', function(e) { - $('#reply_status_form .expand_privacy_menu').removeClass('invisible'); - }); - - // SET PRIVACY - $(document).on('click','#reply_status_form .status_privacy.select_privacy', function(e) { - e.stopPropagation(); - $('#reply_status_form .expand_privacy_menu_button > i').attr('class', $(this).attr('privacyicon')); - $('#reply_status_form .expand_privacy_menu').addClass('invisible'); - }); - - // MEDIA ATTACHMENT - $(document).on('change','#reply_status_media_atta', function(e) { - - $('#reply_status_form .media_attachments_preview_area').empty(); - $('#reply_status_form .status_textarea .media_attachments_preview_area').removeClass('invisible'); - - for ( let i = 0, f; f = e.target.files[i]; i++ ) { - - let reader = new FileReader(); - reader.readAsDataURL(f); - reader.onloadend = (function() { - return function (e) { - const html = (` -
    - -
    - `); - $(html).appendTo('#reply_status_form .media_attachments_preview_area'); - } - })(f); - - } - }); - - // NOT SAFE FOR WORK - $(document).on('click','#reply_status_form .status_NSFW', function(e) { - $('#reply_status_form .media_attachments_preview_area').toggleClass('nsfw'); - }); - - // TOOT SUBMIT BUTTON - $(document).on('click','#reply_status_form .submit_status_label', function(e) { - - $('#reply_status_form').addClass('ready'); - $('#reply_status_form .status_textarea').addClass('disallow_select'); - $('#reply_status_form .character_count').html(''); - - let form = document.forms.reply_status_form; - if ( !$('#reply_status_media_atta')[0].files.length ) { - - const params = { - status : form.status_textarea.value, - sensitive : form.status_nsfw.checked, - spoiler_text : form.status_spoiler.value, - visibility : form.privacy_option.value, - in_reply_to_id : $('#reply_status_form').attr('sid') - } - - api.post("statuses", params, function (data) { - $('#reply_status_form .media_attachments_preview_area').empty(); - $('#reply_status_form .status_spoiler').addClass('invisible'); - $('#reply_status_form .status_textarea .media_attachments_preview_area').addClass('invisible'); - form.reset(); - $('#reply_status_form').removeClass('ready'); - $('#reply_status_form .status_textarea').removeClass('disallow_select'); - $('#reply_status_form .character_count').html('512'); - $('.reply_status .submit_status_label').removeClass('active_submit_button'); - context_template(data, 'descendants_status').appendTo("#js-overlay_content .temporary_object .toot_detail_wrap"); - replace_emoji(); - putMessage('Your Toot was posted!'); - }); - - } else { - - const dummy_form = $('
    ').append($('#reply_status_media_atta')), - files = dummy_form[0][0].files, - filesLen = files.length -1; - - let media_array = []; - - $('#reply_status_form .status_bottom').append($('')); - - for (let i=0; i i').attr('class', "fa " + localStorage.getItem("setting_post_privacy")); - - $('#single_reply_status_form').attr('tid',sid); - $('.single_reply_status .single_reply_status_header span').text("Reply to "+display_name); - $('#single_reply_status_form textarea').val(acct+" "); - - api.get('statuses/'+sid+'/', function(status) { - timeline_template(status).appendTo(".single_reply_status .status_preview"); - replace_emoji(); - }); - - return false; - - }); - - // TEXTAREA - $(document).on('change keyup','#single_reply_status_form textarea, #single_reply_status_form .status_spoiler', function(e) { - - if ( - e.keyCode !== 224 & - e.keyCode !== 17 & - e.keyCode !== undefined - //!$('#single_reply_status_form').hasClass('ready') - ) { - - const textCount = $('#single_reply_status_form textarea').val().length + $('#single_reply_status_form .status_spoiler').val().length; - let textLen = ( 512 - textCount ); - - if ( textLen <= -1 ) { - $('#single_reply_status_form .character_count').addClass('red'); - $('#single_reply_status_form').addClass('ready'); - } else if ( textLen === 512 ) { - $('#single_reply_status_form').addClass('ready'); - } else { - $('#single_reply_status_form .character_count').removeClass('red'); - $('#single_reply_status_form').removeClass('ready'); - } - - $(this).val(replaced_emoji_return($(this).val())); - $('#single_reply_status_form .character_count').text(textLen); - - } - - }); - - // CONTENT WARNING BUTTON - $(document).on('click','#single_reply_status_form .status_CW', function(e) { - $('#single_reply_status_form .status_spoiler').toggleClass('invisible'); - }); - - // EXPAND PRIVACY - $(document).on('click','#single_reply_status_form .expand_privacy_menu_button', function(e) { - $('#single_reply_status_form .expand_privacy_menu').removeClass('invisible'); - }); - - // SET PRIVACY - $(document).on('click','#single_reply_status_form .status_privacy.select_privacy', function(e) { - e.stopPropagation(); - $('#single_reply_status_form .expand_privacy_menu_button > i').attr('class', $(this).attr('privacyicon')); - $('#single_reply_status_form .expand_privacy_menu').addClass('invisible'); - }); - - // MEDIA ATTACHMENT - $(document).on('change','#single_reply_status_media_atta', function(e) { - - $('#single_reply_status_form .media_attachments_preview_area').empty(); - $('#single_reply_status_form .status_textarea .media_attachments_preview_area').removeClass('invisible'); - - for ( let i = 0, f; f = e.target.files[i]; i++ ) { - - let reader = new FileReader(); - reader.readAsDataURL(f); - reader.onloadend = (function() { - return function (e) { - const html = (` -
    - -
    - `); - $(html).appendTo('#single_reply_status_form .media_attachments_preview_area'); - } - })(f); - - } - }); - - // NOT SAFE FOR WORK - $(document).on('click','#single_reply_status_form .status_NSFW', function(e) { - $('#single_reply_status_form .media_attachments_preview_area').toggleClass('nsfw'); - }); - - // TOOT SUBMIT BUTTON - $(document).on('click','#single_reply_status_form .submit_status_label', function(e) { - - $('#single_reply_status_form').addClass('ready'); - $('#single_reply_status_form .status_textarea').addClass('disallow_select'); - $('#single_reply_status_form .character_count').html(''); - - let form = document.forms.single_reply_status_form; - if ( !$('#single_reply_status_media_atta')[0].files.length ) { - - const params = { - status : form.status_textarea.value, - sensitive : form.status_nsfw.checked, - spoiler_text : form.status_spoiler.value, - visibility : form.privacy_option.value, - in_reply_to_id : $('#single_reply_status_form').attr('tid') - } - - api.post("statuses", params, function (data) { - $('#single_reply_status_form .media_attachments_preview_area').empty(); - $('#single_reply_status_form .status_spoiler').addClass('invisible'); - $('#single_reply_status_form .status_textarea .media_attachments_preview_area').addClass('invisible'); - form.reset(); - $('#single_reply_status_form').removeClass('ready'); - $('#single_reply_status_form .status_textarea').removeClass('disallow_select'); - $('#single_reply_status_form .character_count').html('512'); - $('.single_reply_status .submit_status_label').removeClass('active_submit_button'); - $('.single_reply_status').addClass('invisible'); - $('#js-overlay_content_wrap').removeClass('view'); - $('#js-overlay_content_wrap').removeClass('black_05'); - $("#js-overlay_content_wrap .single_reply_status .status_preview").empty(); - putMessage('Your Reply was posted!'); - }); - - } else { - - const dummy_form = $('
    ').append($('#single_reply_status_media_atta')), - files = dummy_form[0][0].files, - filesLen = files.length -1; - - let media_array = []; - - $("#single_reply_status_form .status_bottom").append($('')); - - for (let i=0; i *, .parmanent_object > *', function(e) { - // オーバーレイ最上位子要素で止める感じ - e.stopPropagation(); - }); - - // HIDE ALL - $(document).on('click','#js-overlay_content_wrap', function(e) { - - // hide myself - $(this).removeClass('view'); - - // empty here - $("#js-overlay_content_wrap .temporary_object").empty(); - $("#js-overlay_content_wrap .single_reply_status .status_preview").empty(); - - // add here - $('#js-overlay_content_wrap .overlay_status').addClass('invisible'); - $('#js-overlay_content_wrap .single_reply_status').addClass('invisible'); - $('#js-overlay_content_wrap .overlay_copy_link').addClass('invisible'); - - // remove here - $('#js-overlay_content .temporary_object, #js-overlay_content .parmanent_object').removeClass('visible'); - $('#js-overlay_content_wrap .overlay_status .submit_status_label').removeClass('active_submit_button'); - $('#js-overlay_content_wrap .single_reply_status .submit_status_label').removeClass('active_submit_button'); - $('#js-overlay_content_wrap #reply_status_form .submit_status_label').removeClass('active_submit_button'); - $('#js-overlay_content_wrap #header_status_form .submit_status_label').removeClass('active_submit_button'); - - $('#js-overlay_content_wrap').removeClass('black_05'); - $('#js-overlay_content_wrap').removeClass('black_08'); - - // fix to original link ( using for overlay_status ) - if ( current_file === "/user" ) { - history.pushState(null, null, "/"+location.pathname.split("/")[1]+location.search); - } else { - history.pushState(null, null, current_file); - } - - }); - -}) - -/*---------------------------------- - Stream options menu -----------------------------------*/ - -$(function () { - - // EXPAND SIDE STREAM options - $(document).on('click','.side_widget.stream_options .form_title button', function(e) { - - $(this).parent().next('.pulldown_form').toggleClass('view'); - - if ( $(this).text() === "SHOW" ) { - $(this).text("HIDE"); - } else { - $(this).text("SHOW"); - } - - const html_post_steraming = $(` - - `) - - const html_post_privacy = $(` - - `) - - const html_local_instance = $(` - - `) - - const html_search_filter = $(` - - `) - - html_post_steraming.val(localStorage.getItem("setting_post_stream")); - html_post_privacy.val(localStorage.getItem("setting_post_privacy")); - html_local_instance.val(localStorage.getItem("setting_local_instance")); - html_search_filter.val(localStorage.getItem("setting_search_filter")); - - $('.post_steraming_wrap').html(html_post_steraming) - $('.post_privacy_wrap').html(html_post_privacy); - $('.local_instance_wrap').html(html_local_instance); - $('.search_filter_wrap').html(html_search_filter); - - return false; - }); - - $(document).on('change',".post_steraming_wrap select[name='post_steraming']", function(e) { - localStorage.setItem("setting_post_stream", $(this).val() ); - putMessage("Changed setting to "+$(this).val() ); - }); - - $(document).on('change', ".post_privacy_wrap select[name='post_privacy']", function(e) { - localStorage.setItem("setting_post_privacy", $(this).val() ); - putMessage("Changed setting to "+$(this).val() ); - }); - - $(document).on('change',".search_filter_wrap select[name='search_filter']", function(e) { - localStorage.setItem("setting_search_filter", $(this).val() ); - putMessage("Changed setting to "+$(this).val() ); - }); - - $(document).on('focus',".local_instance_wrap input[name='local_instance']", function(e) { - $(this).attr("placeholder","https://"+current_instance); - }); - - $(document).on('change',".local_instance_wrap input[name='local_instance']", function(e) { - if ( $(this).val() ) { - localStorage.setItem("setting_local_instance", $(this).val() ); - } else { - localStorage.setItem("setting_local_instance", "default" ); - } - putMessage("Changed setting to "+$(this).val() ); - }); - -}) - -/*---------------------------------- - Keyboard shortcut ------------------------------------*/ - -$(function() { - - shortcut.add("n",function() { - $("#creat_status").click(); - },{ - "disable_in_input":true, - }); - - shortcut.add("/",function() { - $("#search_form").focus(); - },{ - "disable_in_input":true, - 'keycode':191 - }); - - shortcut.add("Meta+Enter",function() { - $(".active_submit_button").click(); - }); - - shortcut.add("Ctrl+Enter",function() { - $(".active_submit_button").click(); - }); - - shortcut.add(".",function() { - $("#js-stream_update").click(); - },{ - "disable_in_input":true, - }); - - shortcut.add("Shift+h",function() { - location.href="/home"; - },{ - "disable_in_input":true, - }); - - shortcut.add("Shift+l",function() { - location.href="/local"; - },{ - "disable_in_input":true, - }); - - shortcut.add("Shift+f",function() { - location.href="/federated"; - },{ - "disable_in_input":true, - }); - - shortcut.add("Shift+n",function() { - location.href="/notifications"; - },{ - "disable_in_input":true, - }); - - shortcut.add("Shift+p",function() { - location.href=current_url; - },{ - "disable_in_input":true, - }); - - shortcut.add("Shift+v",function() { - location.href=current_favourites_link; - },{ - "disable_in_input":true, - }); - - shortcut.add("esc",function() { - $("#js-overlay_content_wrap").click(); - }); - -}); - -/*---------------------------------- - Yamada elf -----------------------------------*/ - -function setYaruki() { - $('.toot_entry_body .icon_box img').attr('src','/assets/images/elf.jpg') - $('.toot_content .displayname').text('山田エルフ'); - $('.toot_content .username').text('©KADOKAWA©ASCIIMediaWorks'); - putMessage('やる気MAXファイアー!'); - /* this is a joke function */ -} diff --git a/public_html/assets/js/jquery-cookie/.DS_Store b/public_html/assets/js/jquery-cookie/.DS_Store deleted file mode 100644 index d655808..0000000 Binary files a/public_html/assets/js/jquery-cookie/.DS_Store and /dev/null differ diff --git a/public_html/assets/js/jquery-cookie/CHANGELOG.md b/public_html/assets/js/jquery-cookie/CHANGELOG.md deleted file mode 100644 index 59d868f..0000000 --- a/public_html/assets/js/jquery-cookie/CHANGELOG.md +++ /dev/null @@ -1,73 +0,0 @@ -HEAD ------ - -1.4.1 ------ -- Added support for CommonJS. - -- Added support for package managers: Jam (http://jamjs.org), volo (http://volojs.org), Component (http://component.io), jspm (http://jspm.io). - -- The expires option now interpretes fractions of numbers (e.g. days) correctly. - -1.4.0 ------ -- Support for AMD. - -- Removed deprecated method `$.cookie('name', null)` for deleting a cookie, - use `$.removeCookie('name')`. - -- `$.cookie('name')` now returns `undefined` in case such cookie does not exist - (was `null`). Because the return value is still falsy, testing for existence - of a cookie like `if ( $.cookie('foo') )` keeps working without change. - -- Renamed bower package definition (component.json -> bower.json) for usage - with up-to-date bower. - -- Badly encoded cookies no longer throw exception upon reading but do return - undefined (similar to how we handle JSON parse errors with json = true). - -- Added conversion function as optional last argument for reading, - so that values can be changed to a different representation easily on the fly. - Useful for parsing numbers for instance: - - ```javascript - $.cookie('foo', '42'); - $.cookie('foo', Number); // => 42 - ``` - -1.3.1 ------ -- Fixed issue where it was no longer possible to check for an arbitrary cookie, - while json is set to true, there was a SyntaxError thrown from JSON.parse. - -- Fixed issue where RFC 2068 decoded cookies were not properly read. - -1.3.0 ------ -- Configuration options: `raw`, `json`. Replaces raw option, becomes config: - - ```javascript - $.cookie.raw = true; // bypass encoding/decoding the cookie value - $.cookie.json = true; // automatically JSON stringify/parse value - ``` - - Thus the default options now cleanly contain cookie attributes only. - -- Removing licensing under GPL Version 2, the plugin is now released under MIT License only -(keeping it simple and following the jQuery library itself here). - -- Bugfix: Properly handle RFC 2068 quoted cookie values. - -- Added component.json for bower. - -- Added jQuery plugin package manifest. - -- `$.cookie()` returns all available cookies. - -1.2.0 ------ -- Adding `$.removeCookie('foo')` for deleting a cookie, using `$.cookie('foo', null)` is now deprecated. - -1.1 ---- -- Adding default options. diff --git a/public_html/assets/js/jquery-cookie/CONTRIBUTING.md b/public_html/assets/js/jquery-cookie/CONTRIBUTING.md deleted file mode 100644 index 608c33e..0000000 --- a/public_html/assets/js/jquery-cookie/CONTRIBUTING.md +++ /dev/null @@ -1,51 +0,0 @@ -##Issues - -- Report issues or feature requests on [GitHub Issues](https://github.com/carhartl/jquery-cookie/issues). -- If reporting a bug, please add a [simplified example](http://sscce.org/). - -##Pull requests -- Create a new topic branch for every separate change you make. -- Create a test case if you are fixing a bug or implementing an important feature. -- Make sure the build runs successfully. - -## Development - -###Tools -We use the following tools for development: - -- [Qunit](http://qunitjs.com/) for tests. -- [NodeJS](http://nodejs.org/download/) required to run grunt. -- [Grunt](http://gruntjs.com/getting-started) for task management. - -###Getting started -Install [NodeJS](http://nodejs.org/). -Install globally grunt-cli using the following command: - - $ npm install -g grunt-cli - -Browse to the project root directory and install the dev dependencies: - - $ npm install -d - -To execute the build and tests run the following command in the root of the project: - - $ grunt - -You should see a green message in the console: - - Done, without errors. - -###Tests -You can also run the tests in the browser. -Start a test server from the project root: - - $ grunt connect:tests - -This will automatically open the test suite at http://127.0.0.1:9998 in the default browser, with livereload enabled. - -_Note: we recommend cleaning all the browser cookies before running the tests, that can avoid false positive failures._ - -###Automatic build -You can build automatically after a file change using the following command: - - $ grunt watch diff --git a/public_html/assets/js/jquery-cookie/Gruntfile.js b/public_html/assets/js/jquery-cookie/Gruntfile.js deleted file mode 100644 index 5ac9db5..0000000 --- a/public_html/assets/js/jquery-cookie/Gruntfile.js +++ /dev/null @@ -1,168 +0,0 @@ -/*jshint node:true, quotmark:single */ -'use strict'; - -module.exports = function (grunt) { - - grunt.initConfig({ - pkg: grunt.file.readJSON('package.json'), - qunit: { - all: 'test/index.html' - }, - jshint: { - options: { - jshintrc: true - }, - grunt: 'Gruntfile.js', - source: 'src/**/*.js', - tests: 'test/**/*.js' - }, - uglify: { - options: { - banner: '/*! <%= pkg.name %> v<%= pkg.version %> | <%= pkg.license %> */\n' - }, - build: { - files: { - 'build/jquery.cookie-<%= pkg.version %>.min.js': 'src/jquery.cookie.js' - } - } - }, - watch: { - options: { - livereload: true - }, - files: '{src,test}/**/*.js', - tasks: 'default' - }, - compare_size: { - files: [ - 'build/jquery.cookie-<%= pkg.version %>.min.js', - 'src/jquery.cookie.js' - ], - options: { - compress: { - gz: function (fileContents) { - return require('gzip-js').zip(fileContents, {}).length; - } - } - } - }, - connect: { - saucelabs: { - options: { - port: 9999, - base: ['.', 'test'] - } - }, - tests: { - options: { - port: 9998, - base: ['.', 'test'], - open: 'http://127.0.0.1:9998', - keepalive: true, - livereload: true - } - } - }, - 'saucelabs-qunit': { - all: { - options: { - urls: ['http://127.0.0.1:9999'], - build: process.env.TRAVIS_JOB_ID, - browsers: [ - // iOS - { - browserName: 'iphone', - platform: 'OS X 10.9', - version: '7.1' - }, - { - browserName: 'ipad', - platform: 'OS X 10.9', - version: '7.1' - }, - // Android - { - browserName: 'android', - platform: 'Linux', - version: '4.3' - }, - // OS X - { - browserName: 'safari', - platform: 'OS X 10.9', - version: '7' - }, - { - browserName: 'safari', - platform: 'OS X 10.8', - version: '6' - }, - { - browserName: 'firefox', - platform: 'OS X 10.9', - version: '28' - }, - // Windows - { - browserName: 'internet explorer', - platform: 'Windows 8.1', - version: '11' - }, - { - browserName: 'internet explorer', - platform: 'Windows 8', - version: '10' - }, - { - browserName: 'internet explorer', - platform: 'Windows 7', - version: '11' - }, - { - browserName: 'internet explorer', - platform: 'Windows 7', - version: '10' - }, - { - browserName: 'internet explorer', - platform: 'Windows 7', - version: '9' - }, - { - browserName: 'internet explorer', - platform: 'Windows 7', - version: '8' - }, - { - browserName: 'firefox', - platform: 'Windows 7', - version: '29' - }, - { - browserName: 'chrome', - platform: 'Windows 7', - version: '34' - }, - // Linux - { - browserName: 'firefox', - platform: 'Linux', - version: '29' - } - ] - } - } - } - }); - - // Loading dependencies - for (var key in grunt.file.readJSON('package.json').devDependencies) { - if (key !== 'grunt' && key.indexOf('grunt') === 0) { - grunt.loadNpmTasks(key); - } - } - - grunt.registerTask('default', ['jshint', 'qunit', 'uglify', 'compare_size']); - grunt.registerTask('saucelabs', ['connect:saucelabs', 'saucelabs-qunit']); - grunt.registerTask('ci', ['jshint', 'qunit', 'saucelabs']); -}; diff --git a/public_html/assets/js/jquery-cookie/README.md b/public_html/assets/js/jquery-cookie/README.md deleted file mode 100644 index 3100800..0000000 --- a/public_html/assets/js/jquery-cookie/README.md +++ /dev/null @@ -1,162 +0,0 @@ -# IMPORTANT! - -This project was moved to https://github.com/js-cookie/js-cookie, check [the discussion](https://github.com/carhartl/jquery-cookie/issues/349). - -New issues should be opened at https://github.com/js-cookie/js-cookie/issues - -# jquery.cookie [![Build Status](https://travis-ci.org/carhartl/jquery-cookie.png?branch=master)](https://travis-ci.org/carhartl/jquery-cookie) [![Code Climate](https://codeclimate.com/github/carhartl/jquery-cookie.png)](https://codeclimate.com/github/carhartl/jquery-cookie) - -A simple, lightweight jQuery plugin for reading, writing and deleting cookies. - -**If you're viewing this, you're reading the documentation for the old repository. -[View documentation for the latest backwards compatible release (1.5.1).](https://github.com/js-cookie/js-cookie/tree/v1.5.1)** - -## Build Status Matrix - -[![Selenium Test Status](https://saucelabs.com/browser-matrix/jquery-cookie.svg)](https://saucelabs.com/u/jquery-cookie) - -## Installation - -Include script *after* the jQuery library (unless you are packaging scripts somehow else): - -```html - -``` - -**Do not include the script directly from GitHub (http://raw.github.com/...).** The file is being served as text/plain and as such being blocked -in Internet Explorer on Windows 7 for instance (because of the wrong MIME type). Bottom line: GitHub is not a CDN. - -The plugin can also be loaded as AMD or CommonJS module. - -## Usage - -Create session cookie: - -```javascript -$.cookie('name', 'value'); -``` - -Create expiring cookie, 7 days from then: - -```javascript -$.cookie('name', 'value', { expires: 7 }); -``` - -Create expiring cookie, valid across entire site: - -```javascript -$.cookie('name', 'value', { expires: 7, path: '/' }); -``` - -Read cookie: - -```javascript -$.cookie('name'); // => "value" -$.cookie('nothing'); // => undefined -``` - -Read all available cookies: - -```javascript -$.cookie(); // => { "name": "value" } -``` - -Delete cookie: - -```javascript -// Returns true when cookie was successfully deleted, otherwise false -$.removeCookie('name'); // => true -$.removeCookie('nothing'); // => false - -// Need to use the same attributes (path, domain) as what the cookie was written with -$.cookie('name', 'value', { path: '/' }); -// This won't work! -$.removeCookie('name'); // => false -// This will work! -$.removeCookie('name', { path: '/' }); // => true -``` - -*Note: when deleting a cookie, you must pass the exact same path, domain and secure options that were used to set the cookie, unless you're relying on the default options that is.* - -## Configuration - -### raw - -By default the cookie value is encoded/decoded when writing/reading, using `encodeURIComponent`/`decodeURIComponent`. Bypass this by setting raw to true: - -```javascript -$.cookie.raw = true; -``` - -### json - -Turn on automatic storage of JSON objects passed as the cookie value. Assumes `JSON.stringify` and `JSON.parse`: - -```javascript -$.cookie.json = true; -``` - -## Cookie Options - -Cookie attributes can be set globally by setting properties of the `$.cookie.defaults` object or individually for each call to `$.cookie()` by passing a plain object to the options argument. Per-call options override the default options. - -### expires - - expires: 365 - -Define lifetime of the cookie. Value can be a `Number` which will be interpreted as days from time of creation or a `Date` object. If omitted, the cookie becomes a session cookie. - -### path - - path: '/' - -Define the path where the cookie is valid. *By default the path of the cookie is the path of the page where the cookie was created (standard browser behavior).* If you want to make it available for instance across the entire domain use `path: '/'`. Default: path of page where the cookie was created. - -**Note regarding Internet Explorer:** - -> Due to an obscure bug in the underlying WinINET InternetGetCookie implementation, IE’s document.cookie will not return a cookie if it was set with a path attribute containing a filename. - -(From [Internet Explorer Cookie Internals (FAQ)](http://blogs.msdn.com/b/ieinternals/archive/2009/08/20/wininet-ie-cookie-internals-faq.aspx)) - -This means one cannot set a path using `path: window.location.pathname` in case such pathname contains a filename like so: `/check.html` (or at least, such cookie cannot be read correctly). - -### domain - - domain: 'example.com' - -Define the domain where the cookie is valid. Default: domain of page where the cookie was created. - -### secure - - secure: true - -If true, the cookie transmission requires a secure protocol (https). Default: `false`. - -## Converters - -Provide a conversion function as optional last argument for reading, in order to change the cookie's value -to a different representation on the fly. - -Example for parsing a value into a number: - -```javascript -$.cookie('foo', '42'); -$.cookie('foo', Number); // => 42 -``` - -Dealing with cookies that have been encoded using `escape` (3rd party cookies): - -```javascript -$.cookie.raw = true; -$.cookie('foo', unescape); -``` - -You can pass an arbitrary conversion function. - -## Contributing - -Check out the [Contributing Guidelines](CONTRIBUTING.md) - -## Authors - -[Klaus Hartl](https://github.com/carhartl) diff --git a/public_html/assets/js/jquery-cookie/bower.json b/public_html/assets/js/jquery-cookie/bower.json deleted file mode 100644 index 3862b74..0000000 --- a/public_html/assets/js/jquery-cookie/bower.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "name": "jquery.cookie", - "version": "1.4.1", - "main": [ - "src/jquery.cookie.js" - ], - "dependencies": { - "jquery": ">=1.2" - }, - "ignore": [ - "test", - ".*", - "*.json", - "*.md", - "*.txt", - "Gruntfile.js" - ] -} diff --git a/public_html/assets/js/jquery-cookie/component.json b/public_html/assets/js/jquery-cookie/component.json deleted file mode 100644 index 0fad480..0000000 --- a/public_html/assets/js/jquery-cookie/component.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "name": "jquery.cookie", - "repo": "carhartl/jquery-cookie", - "description": "A simple, lightweight jQuery plugin for reading, writing and deleting cookies", - "version": "1.4.1", - "keywords": [], - "dependencies": {}, - "development": {}, - "license": "MIT", - "main": "src/jquery.cookie.js", - "scripts": [ - "src/jquery.cookie.js" - ] -} diff --git a/public_html/assets/js/jquery-cookie/cookie.jquery.json b/public_html/assets/js/jquery-cookie/cookie.jquery.json deleted file mode 100644 index 69d5748..0000000 --- a/public_html/assets/js/jquery-cookie/cookie.jquery.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "name": "cookie", - "version": "1.4.1", - "title": "jQuery Cookie", - "description": "A simple, lightweight jQuery plugin for reading, writing and deleting cookies.", - "author": { - "name": "Klaus Hartl", - "url": "https://github.com/carhartl" - }, - "maintainers": [ - { - "name": "Klaus Hartl", - "url": "https://github.com/carhartl" - }, - { - "name": "Fagner Martins", - "url": "https://github.com/FagnerMartinsBrack" - } - ], - "licenses": [ - { - "type": "MIT", - "url": "https://raw.github.com/carhartl/jquery-cookie/master/MIT-LICENSE.txt" - } - ], - "dependencies": { - "jquery": ">=1.2" - }, - "bugs": "https://github.com/carhartl/jquery-cookie/issues", - "homepage": "https://github.com/carhartl/jquery-cookie", - "docs": "https://github.com/carhartl/jquery-cookie#readme" -} diff --git a/public_html/assets/js/jquery-cookie/package.json b/public_html/assets/js/jquery-cookie/package.json deleted file mode 100644 index 38abffe..0000000 --- a/public_html/assets/js/jquery-cookie/package.json +++ /dev/null @@ -1,50 +0,0 @@ -{ - "name": "jquery.cookie", - "version": "1.4.1", - "description": "A simple, lightweight jQuery plugin for reading, writing and deleting cookies.", - "main": "src/jquery.cookie.js", - "directories": { - "test": "test" - }, - "scripts": { - "test": "grunt" - }, - "repository": { - "type": "git", - "url": "git://github.com/carhartl/jquery-cookie.git" - }, - "author": "Klaus Hartl", - "license": "MIT", - "gitHead": "bd3c9713222bace68d25fe2128c0f8633cad1269", - "readmeFilename": "README.md", - "devDependencies": { - "grunt": "~0.4.1", - "grunt-contrib-jshint": "~0.10.0", - "grunt-contrib-uglify": "~0.2.0", - "grunt-contrib-qunit": "~0.2.0", - "grunt-contrib-watch": "~0.6.1", - "grunt-compare-size": "~0.4.0", - "grunt-saucelabs": "~7.0.0", - "grunt-contrib-connect": "~0.7.1", - "gzip-js": "~0.3.0" - }, - "volo": { - "url": "https://raw.github.com/carhartl/jquery-cookie/v{version}/src/jquery.cookie.js" - }, - "jspm": { - "main": "jquery.cookie", - "files": ["src/jquery.cookie.js"], - "buildConfig": { - "uglify": true - } - }, - "jam": { - "dependencies": { - "jquery": ">=1.2" - }, - "main": "src/jquery.cookie.js", - "include": [ - "src/jquery.cookie.js" - ] - } -} diff --git a/public_html/assets/js/jquery-cookie/src/.jshintrc b/public_html/assets/js/jquery-cookie/src/.jshintrc deleted file mode 100644 index 241dd9f..0000000 --- a/public_html/assets/js/jquery-cookie/src/.jshintrc +++ /dev/null @@ -1,13 +0,0 @@ -{ - "browser": true, - "camelcase": true, - "jquery": true, - "quotmark": "single", - "globals": { - "define": true, - "module": true, - "require": true - }, - - "extends": "../.jshintrc" -} diff --git a/public_html/assets/js/jquery-cookie/src/jquery.cookie.js b/public_html/assets/js/jquery-cookie/src/jquery.cookie.js deleted file mode 100644 index 8218817..0000000 --- a/public_html/assets/js/jquery-cookie/src/jquery.cookie.js +++ /dev/null @@ -1,114 +0,0 @@ -/*! - * jQuery Cookie Plugin v1.4.1 - * https://github.com/carhartl/jquery-cookie - * - * Copyright 2006, 2014 Klaus Hartl - * Released under the MIT license - */ -(function (factory) { - if (typeof define === 'function' && define.amd) { - // AMD (Register as an anonymous module) - define(['jquery'], factory); - } else if (typeof exports === 'object') { - // Node/CommonJS - module.exports = factory(require('jquery')); - } else { - // Browser globals - factory(jQuery); - } -}(function ($) { - - var pluses = /\+/g; - - function encode(s) { - return config.raw ? s : encodeURIComponent(s); - } - - function decode(s) { - return config.raw ? s : decodeURIComponent(s); - } - - function stringifyCookieValue(value) { - return encode(config.json ? JSON.stringify(value) : String(value)); - } - - function parseCookieValue(s) { - if (s.indexOf('"') === 0) { - // This is a quoted cookie as according to RFC2068, unescape... - s = s.slice(1, -1).replace(/\\"/g, '"').replace(/\\\\/g, '\\'); - } - - try { - // Replace server-side written pluses with spaces. - // If we can't decode the cookie, ignore it, it's unusable. - // If we can't parse the cookie, ignore it, it's unusable. - s = decodeURIComponent(s.replace(pluses, ' ')); - return config.json ? JSON.parse(s) : s; - } catch(e) {} - } - - function read(s, converter) { - var value = config.raw ? s : parseCookieValue(s); - return $.isFunction(converter) ? converter(value) : value; - } - - var config = $.cookie = function (key, value, options) { - - // Write - - if (arguments.length > 1 && !$.isFunction(value)) { - options = $.extend({}, config.defaults, options); - - if (typeof options.expires === 'number') { - var days = options.expires, t = options.expires = new Date(); - t.setMilliseconds(t.getMilliseconds() + days * 864e+5); - } - - return (document.cookie = [ - encode(key), '=', stringifyCookieValue(value), - options.expires ? '; expires=' + options.expires.toUTCString() : '', // use expires attribute, max-age is not supported by IE - options.path ? '; path=' + options.path : '', - options.domain ? '; domain=' + options.domain : '', - options.secure ? '; secure' : '' - ].join('')); - } - - // Read - - var result = key ? undefined : {}, - // To prevent the for loop in the first place assign an empty array - // in case there are no cookies at all. Also prevents odd result when - // calling $.cookie(). - cookies = document.cookie ? document.cookie.split('; ') : [], - i = 0, - l = cookies.length; - - for (; i < l; i++) { - var parts = cookies[i].split('='), - name = decode(parts.shift()), - cookie = parts.join('='); - - if (key === name) { - // If second argument (value) is a function it's a converter... - result = read(cookie, value); - break; - } - - // Prevent storing a cookie that we couldn't decode. - if (!key && (cookie = read(cookie)) !== undefined) { - result[name] = cookie; - } - } - - return result; - }; - - config.defaults = {}; - - $.removeCookie = function (key, options) { - // Must not alter options, thus extending a fresh object... - $.cookie(key, '', $.extend({}, options, { expires: -1 })); - return !$.cookie(key); - }; - -})); diff --git a/public_html/assets/js/jquery-cookie/test/.jshintrc b/public_html/assets/js/jquery-cookie/test/.jshintrc deleted file mode 100644 index bc52b0a..0000000 --- a/public_html/assets/js/jquery-cookie/test/.jshintrc +++ /dev/null @@ -1,9 +0,0 @@ -{ - "browser": true, - "jquery": true, - "qunit": true, - - "-W053": true, - - "extends": "../.jshintrc" -} diff --git a/public_html/assets/js/jquery-cookie/test/index.html b/public_html/assets/js/jquery-cookie/test/index.html deleted file mode 100644 index ade6830..0000000 --- a/public_html/assets/js/jquery-cookie/test/index.html +++ /dev/null @@ -1,16 +0,0 @@ - - - - - jquery.cookie Test Suite - - - - - - - -
    -
    - - diff --git a/public_html/assets/js/jquery-cookie/test/malformed_cookie.html b/public_html/assets/js/jquery-cookie/test/malformed_cookie.html deleted file mode 100644 index 74178d4..0000000 --- a/public_html/assets/js/jquery-cookie/test/malformed_cookie.html +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - - - diff --git a/public_html/assets/js/jquery-cookie/test/tests.js b/public_html/assets/js/jquery-cookie/test/tests.js deleted file mode 100644 index 68b47cc..0000000 --- a/public_html/assets/js/jquery-cookie/test/tests.js +++ /dev/null @@ -1,345 +0,0 @@ -// Required for exposing test results to the Sauce Labs API. -// Can be removed when the following issue is fixed: -// https://github.com/axemclion/grunt-saucelabs/issues/84 -QUnit.done(function (details) { - window.global_test_results = details; -}); - - -var lifecycle = { - teardown: function () { - $.cookie.defaults = {}; - delete $.cookie.raw; - delete $.cookie.json; - $.each($.cookie(), $.removeCookie); - } -}; - - -module('read', lifecycle); - -test('simple value', function () { - expect(1); - document.cookie = 'c=v'; - strictEqual($.cookie('c'), 'v', 'should return value'); -}); - -test('empty value', function () { - expect(1); - // IE saves cookies with empty string as "c; ", e.g. without "=" as opposed to EOMB, which - // resulted in a bug while reading such a cookie. - $.cookie('c', ''); - strictEqual($.cookie('c'), '', 'should return value'); -}); - -test('not existing', function () { - expect(1); - strictEqual($.cookie('whatever'), undefined, 'return undefined'); -}); - -test('RFC 2068 quoted string', function () { - expect(1); - document.cookie = 'c="v@address.com\\"\\\\\\""'; - strictEqual($.cookie('c'), 'v@address.com"\\"', 'should decode RFC 2068 quoted string'); -}); - -test('decode', function () { - expect(1); - document.cookie = encodeURIComponent(' c') + '=' + encodeURIComponent(' v'); - strictEqual($.cookie(' c'), ' v', 'should decode key and value'); -}); - -test('decode pluses to space for server side written cookie', function () { - expect(1); - document.cookie = 'c=foo+bar'; - strictEqual($.cookie('c'), 'foo bar', 'should convert pluses back to space'); -}); - -test('raw = true', function () { - expect(2); - $.cookie.raw = true; - - document.cookie = 'c=%20v'; - strictEqual($.cookie('c'), '%20v', 'should not decode value'); - - // see https://github.com/carhartl/jquery-cookie/issues/50 - $.cookie('c', 'foo=bar'); - strictEqual($.cookie('c'), 'foo=bar', 'should include the entire value'); -}); - -test('json = true', function () { - expect(1); - - if ('JSON' in window) { - $.cookie.json = true; - $.cookie('c', { foo: 'bar' }); - deepEqual($.cookie('c'), { foo: 'bar' }, 'should parse JSON'); - } else { - ok(true); - } -}); - -test('not existing with json = true', function () { - expect(1); - - if ('JSON' in window) { - $.cookie.json = true; - strictEqual($.cookie('whatever'), undefined, "won't throw exception"); - } else { - ok(true); - } -}); - -test('string with json = true', function () { - expect(1); - - if ('JSON' in window) { - $.cookie.json = true; - $.cookie('c', 'v'); - strictEqual($.cookie('c'), 'v', 'should return value'); - } else { - ok(true); - } -}); - -test('invalid JSON string with json = true', function () { - expect(1); - - if ('JSON' in window) { - $.cookie('c', 'v'); - $.cookie.json = true; - strictEqual($.cookie('c'), undefined, "won't throw exception, returns undefined"); - } else { - ok(true); - } -}); - -test('invalid URL encoding', function () { - expect(1); - document.cookie = 'bad=foo%'; - strictEqual($.cookie('bad'), undefined, "won't throw exception, returns undefined"); - // Delete manually here because it requires raw === true... - $.cookie.raw = true; - $.removeCookie('bad'); -}); - -asyncTest('malformed cookie value in IE (#88, #117)', function () { - expect(1); - // Sandbox in an iframe so that we can poke around with document.cookie. - var iframe = $('')[0]; - $(iframe).on('load', function () { - start(); - if (iframe.contentWindow.ok) { - strictEqual(iframe.contentWindow.testValue, 'two', 'reads all cookie values, skipping duplicate occurences of "; "'); - } else { - // Skip the test where we can't stub document.cookie using - // Object.defineProperty. Seems to work fine in - // Chrome, Firefox and IE 8+. - ok(true, 'N/A'); - } - }); - document.body.appendChild(iframe); -}); - -test('Call to read all when there are cookies', function () { - $.cookie('c', 'v'); - $.cookie('foo', 'bar'); - deepEqual($.cookie(), { c: 'v', foo: 'bar' }, 'returns object containing all cookies'); -}); - -test('Call to read all when there are no cookies at all', function () { - deepEqual($.cookie(), {}, 'returns empty object'); -}); - -test('Call to read all with json: true', function () { - $.cookie.json = true; - $.cookie('c', { foo: 'bar' }); - deepEqual($.cookie(), { c: { foo: 'bar' } }, 'returns JSON parsed cookies'); -}); - -test('Call to read all with a badly encoded cookie', function () { - expect(1); - document.cookie = 'bad=foo%'; - document.cookie = 'good=foo'; - deepEqual($.cookie(), { good: 'foo' }, 'returns object containing all decodable cookies'); - // Delete manually here because it requires raw === true... - $.cookie.raw = true; - $.removeCookie('bad'); -}); - - -module('write', lifecycle); - -test('String primitive', function () { - expect(1); - $.cookie('c', 'v'); - strictEqual($.cookie('c'), 'v', 'should write value'); -}); - -test('String object', function () { - expect(1); - $.cookie('c', new String('v')); - strictEqual($.cookie('c'), 'v', 'should write value'); -}); - -test('value "[object Object]"', function () { - expect(1); - $.cookie('c', '[object Object]'); - strictEqual($.cookie('c'), '[object Object]', 'should write value'); -}); - -test('number', function () { - expect(1); - $.cookie('c', 1234); - strictEqual($.cookie('c'), '1234', 'should write value'); -}); - -test('null', function () { - expect(1); - $.cookie('c', null); - strictEqual($.cookie('c'), 'null', 'should write value'); -}); - -test('undefined', function () { - expect(1); - $.cookie('c', undefined); - strictEqual($.cookie('c'), 'undefined', 'should write value'); -}); - -test('expires option as days from now', function () { - expect(1); - var sevenDaysFromNow = new Date(); - sevenDaysFromNow.setDate(sevenDaysFromNow.getDate() + 21); - strictEqual($.cookie('c', 'v', { expires: 21 }), 'c=v; expires=' + sevenDaysFromNow.toUTCString(), - 'should write the cookie string with expires'); -}); - -test('expires option as fraction of a day', function () { - expect(1); - - var now = new Date().getTime(); - var expires = Date.parse($.cookie('c', 'v', { expires: 0.5 }).replace(/.+expires=/, '')); - - // When we were using Date.setDate() fractions have been ignored - // and expires resulted in the current date. Allow 1000 milliseconds - // difference for execution time. - ok(expires > now + 1000, 'should write expires attribute with the correct date'); -}); - -test('expires option as Date instance', function () { - expect(1); - var sevenDaysFromNow = new Date(); - sevenDaysFromNow.setDate(sevenDaysFromNow.getDate() + 7); - strictEqual($.cookie('c', 'v', { expires: sevenDaysFromNow }), 'c=v; expires=' + sevenDaysFromNow.toUTCString(), - 'should write the cookie string with expires'); -}); - -test('return value', function () { - expect(1); - strictEqual($.cookie('c', 'v'), 'c=v', 'should return written cookie string'); -}); - -test('defaults', function () { - expect(2); - $.cookie.defaults.path = '/foo'; - ok($.cookie('c', 'v').match(/path=\/foo/), 'should use options from defaults'); - ok($.cookie('c', 'v', { path: '/bar' }).match(/path=\/bar/), 'options argument has precedence'); -}); - -test('raw = true', function () { - expect(1); - $.cookie.raw = true; - strictEqual($.cookie('c[1]', 'v[1]'), 'c[1]=v[1]', 'should not encode'); - // Delete manually here because it requires raw === true... - $.removeCookie('c[1]'); -}); - -test('json = true', function () { - expect(1); - $.cookie.json = true; - - if ('JSON' in window) { - $.cookie('c', { foo: 'bar' }); - strictEqual(document.cookie, 'c=' + encodeURIComponent(JSON.stringify({ foo: 'bar' })), 'should stringify JSON'); - } else { - ok(true); - } -}); - - -module('removeCookie', lifecycle); - -test('deletion', function () { - expect(1); - $.cookie('c', 'v'); - $.removeCookie('c'); - strictEqual(document.cookie, '', 'should delete the cookie'); -}); - -test('when sucessfully deleted', function () { - expect(1); - $.cookie('c', 'v'); - strictEqual($.removeCookie('c'), true, 'returns true'); -}); - -test('when cookie does not exist', function () { - expect(1); - strictEqual($.removeCookie('c'), true, 'returns true'); -}); - -test('when deletion failed', function () { - expect(1); - $.cookie('c', 'v'); - - var originalCookie = $.cookie; - $.cookie = function () { - // Stub deletion... - if (arguments.length === 1) { - return originalCookie.apply(null, arguments); - } - }; - - strictEqual($.removeCookie('c'), false, 'returns false'); - - $.cookie = originalCookie; -}); - -test('with options', function () { - expect(1); - var options = { path: '/' }; - $.cookie('c', 'v', options); - $.removeCookie('c', options); - strictEqual(document.cookie, '', 'should delete the cookie'); -}); - -test('passing options reference', function () { - expect(1); - var options = { path: '/' }; - $.cookie('c', 'v', options); - $.removeCookie('c', options); - deepEqual(options, { path: '/' }, "won't alter options object"); -}); - -test('[] used in name', function () { - expect(1); - $.cookie.raw = true; - document.cookie = 'c[1]=foo'; - $.removeCookie('c[1]'); - strictEqual(document.cookie, '', 'delete the cookie'); -}); - - -module('conversion', lifecycle); - -test('read converter', function() { - expect(1); - $.cookie('c', '1'); - strictEqual($.cookie('c', Number), 1, 'converts read value'); -}); - -test('read converter with raw = true', function() { - expect(1); - $.cookie.raw = true; - $.cookie('c', '1'); - strictEqual($.cookie('c', Number), 1, 'does not decode, but converts read value'); -}); diff --git a/public_html/assets/js/mastodon.js/.DS_Store b/public_html/assets/js/mastodon.js/.DS_Store deleted file mode 100644 index 5008ddf..0000000 Binary files a/public_html/assets/js/mastodon.js/.DS_Store and /dev/null differ diff --git a/public_html/assets/js/mastodon.js/README b/public_html/assets/js/mastodon.js/README deleted file mode 100644 index 43c1553..0000000 --- a/public_html/assets/js/mastodon.js/README +++ /dev/null @@ -1,3 +0,0 @@ -Javascript Mastodon API Client Library for Browser Clients - -Check out index.html for a "how-to" \ No newline at end of file diff --git a/public_html/assets/js/mastodon.js/index.html b/public_html/assets/js/mastodon.js/index.html deleted file mode 100644 index 76d7668..0000000 --- a/public_html/assets/js/mastodon.js/index.html +++ /dev/null @@ -1,117 +0,0 @@ - - - - - - - - - - \ No newline at end of file diff --git a/public_html/assets/js/mastodon.js/mastodon.js b/public_html/assets/js/mastodon.js/mastodon.js deleted file mode 100644 index 0745836..0000000 --- a/public_html/assets/js/mastodon.js/mastodon.js +++ /dev/null @@ -1,277 +0,0 @@ -// mastodon javascript lib -// by @kirschn@pleasehug.me 2017 -// no fucking copyright -// do whatever you want with it -// but please don't hurt it (and keep this header) - -var MastodonAPI = function(config) { - var apiBase = config.instance + "/api/v1/"; - return { - setConfig: function (key, value) { - // modify initial config afterwards - config[key] = value; - }, - getConfig: function(key) { - //get config key - return config[key]; - }, - get: function (endpoint) { - // for GET API calls - // can be called with two or three parameters - // endpoint, callback - // or - // endpoint, queryData, callback - // where querydata is an object {["paramname1", "paramvalue1], ["paramname2","paramvalue2"]} - - // variables - var queryData, callback, - queryStringAppend = "?"; - - // check with which arguments we're supplied - if (typeof arguments[1] === "function") { - queryData = {}; - callback = arguments[1]; - } else { - queryData = arguments[1]; - callback = arguments[2]; - } - // build queryData Object into a URL Query String - for (var i in queryData) { - if (queryData.hasOwnProperty(i)) { - if (typeof queryData[i] === "string") { - queryStringAppend += queryData[i] + "&"; - } else if (typeof queryData[i] === "object") { - queryStringAppend += queryData[i].name + "="+ queryData[i].data + "&"; - } - } - } - // ajax function - $.ajax({ - url: apiBase + endpoint + queryStringAppend, - type: "GET", - headers: {"Authorization": "Bearer " + config.api_user_token}, - success: function(data, textStatus, xhr) { - - //weeey it was successful - console.log("Successful GET API request to " +apiBase+endpoint); - responce_headers = xhr.getAllResponseHeaders(); - - //aaand start the callback - //might have to check what "textStatus" actually is, jquery docs are a bit dodgy - callback(data,textStatus); - }, - error: function(xhr, textStatus, errorThrown) { - putMessage(`[${xhr.status}] ${xhr.responseJSON['error']}`); - if ( xhr.status === 401 ) { - location.href = "/logout" - } - } - }); - }, - getArray: function (endpoint) { - // for GET API calls - // can be called with two or three parameters - // endpoint, callback - // or - // endpoint, queryData, callback - // where querydata is an object {["paramname1", "paramvalue1], ["paramname2","paramvalue2"]} - - // variables - var queryData, callback, - queryStringAppend = "?"; - - // check with which arguments we're supplied - if (typeof arguments[1] === "function") { - queryData = {}; - callback = arguments[1]; - } else { - queryData = arguments[1]; - callback = arguments[2]; - } - // build queryData Object into a URL Query String - for (var i in queryData) { - if (queryData.hasOwnProperty(i)) { - if (typeof queryData[i] === "string") { - queryStringAppend += queryData[i] + "&"; - } else if (typeof queryData[i] === "object") { - for ( var j in queryData[i].data ){ - queryStringAppend += queryData[i].name + "[]="+ queryData[i].data[j] + "&"; - } - } - } - } - // ajax function - $.ajax({ - url: apiBase + endpoint + queryStringAppend, - type: "GET", - headers: {"Authorization": "Bearer " + config.api_user_token}, - success: function(data, textStatus, xhr) { - - //weeey it was successful - console.log("Successful GET API request to " +apiBase+endpoint); - responce_headers = xhr.getAllResponseHeaders(); - - //aaand start the callback - //might have to check what "textStatus" actually is, jquery docs are a bit dodgy - callback(data,textStatus); - }, - error: function(xhr, textStatus, errorThrown) { - putMessage(`[${xhr.status}] ${xhr.responseJSON['error']}`); - if ( xhr.status === 401 ) { - location.href = "/logout" - } - } - }); - }, - getOther: function (domainAndEndpoint) { - - var queryData, callback, - queryStringAppend = "?"; - - // check with which arguments we're supplied - if (typeof arguments[1] === "function") { - queryData = {}; - callback = arguments[1]; - } else { - queryData = arguments[1]; - callback = arguments[2]; - } - // build queryData Object into a URL Query String - for (var i in queryData) { - if (queryData.hasOwnProperty(i)) { - if (typeof queryData[i] === "string") { - queryStringAppend += queryData[i] + "&"; - } else if (typeof queryData[i] === "object") { - queryStringAppend += queryData[i].name + "="+ queryData[i].data + "&"; - } - } - } - // ajax function - $.ajax({ - url: domainAndEndpoint + queryStringAppend, - type: "GET", - success: function(data, textStatus, xhr) { - - //weeey it was successful - console.log("Successful GET API request to " +domainAndEndpoint); - responce_headers = xhr.getAllResponseHeaders(); - - //aaand start the callback - //might have to check what "textStatus" actually is, jquery docs are a bit dodgy - callback(data,textStatus); - }, - error: function(xhr, textStatus, errorThrown) { - putMessage(`[${xhr.status}] ${xhr.responseJSON['error']}`); - if ( xhr.status === 401 ) { - location.href = "/logout" - } - } - }); - }, - post: function (endpoint) { - // for POST API calls - var postData, callback; - // check with which arguments we're supplied - if (typeof arguments[1] === "function") { - postData = {}; - callback = arguments[1]; - } else { - postData = arguments[1]; - callback = arguments[2]; - } - $.ajax({ - url: apiBase + endpoint, - type: "POST", - data: postData, - headers: {"Authorization": "Bearer " + config.api_user_token}, - success: function(data, textStatus) { - console.log("Successful POST API request to " +apiBase+endpoint); - callback(data,textStatus) - }, - error: function(xhr, textStatus, errorThrown) { - putMessage(`[${xhr.status}] ${xhr.responseJSON['error']}`); - if ( xhr.status === 401 ) { - location.href = "/logout" - } - } - }); - }, - postMedia: function (endpoint) { - - // for POST API calls - var postData, callback; - // check with which arguments we're supplied - if (typeof arguments[1] === "function") { - postData = {}; - callback = arguments[1]; - } else { - postData = arguments[1]; - callback = arguments[2]; - } - - $.ajax({ - url: apiBase + endpoint, - type: "POST", - data: postData, - contentType: false, - processData: false, - headers: {"Authorization": "Bearer " + config.api_user_token}, - success: function(data, textStatus) { - console.log("Successful POST API request to " +apiBase+endpoint); - callback(data,textStatus) - }, - error: function(xhr, textStatus, errorThrown) { - putMessage(`[${xhr.status}] ${xhr.responseJSON['error']}`); - if ( xhr.status === 401 ) { - location.href = "/logout" - } - } - }); - - }, - delete: function (endpoint, callback) { - // for DELETE API calls. - $.ajax({ - url: apiBase + endpoint, - type: "DELETE", - headers: {"Authorization": "Bearer " + config.api_user_token}, - success: function(data, textStatus) { - console.log("Successful DELETE API request to " +apiBase+endpoint); - callback(data,textStatus) - }, - error: function(xhr, textStatus, errorThrown) { - putMessage(`[${xhr.status}] ${xhr.responseJSON['error']}`); - if ( xhr.status === 401 ) { - location.href = "/logout" - } - } - }); - }, - stream: function (streamType, onData) { - // Event Stream Support - // websocket streaming is undocumented. i had to reverse engineer the fucking web client. - // streamType is either - // user for your local home TL and notifications - // public for your federated TL - // public:local for your home TL - // hashtag&tag=fuckdonaldtrump for the stream of #fuckdonaldtrump - // callback gets called whenever new data ist recieved - // callback { event: (eventtype), payload: {mastodon object as described in the api docs} } - // eventtype could be notification (=notification) or update (= new toot in TL) - var es = new WebSocket("wss://" + apiBase.substr(8) - +"streaming?access_token=" + config.api_user_token + "&stream=" + streamType); - var listener = function (event) { - console.log("Got Data from Stream " + streamType); - event = JSON.parse(event.data); - event.payload = JSON.parse(event.payload); - onData(event); - }; - es.onmessage = listener; - - - } - }; -}; - -// node.js -if (typeof module !== 'undefined') { module.exports = MastodonAPI; }; diff --git a/public_html/assets/js/replace_emoji.js b/public_html/assets/js/replace_emoji.js deleted file mode 100644 index a7980ca..0000000 --- a/public_html/assets/js/replace_emoji.js +++ /dev/null @@ -1,3475 +0,0 @@ -const emoji_dict = { ":hash:": "#⃣", - ":zero:": "0⃣", - ":one:": "1⃣", - ":two:": "2⃣", - ":three:": "3⃣", - ":four:": "4⃣", - ":five:": "5⃣", - ":six:": "6⃣", - ":seven:": "7⃣", - ":eight:": "8⃣", - ":nine:": "9⃣", - ":copyright:": "©", - ":registered:": "®", - ":bangbang:": "‼", - ":interrobang:": "⁉", - ":tm:": "™", - ":information_source:": "ℹ", - ":left_right_arrow:": "↔", - ":arrow_up_down:": "↕", - ":arrow_upper_left:": "↖", - ":third_place:": "🥉", - ":third_place_medal:": "🥉", - ":arrow_upper_right:": "↗", - ":arrow_lower_right:": "↘", - ":arrow_lower_left:": "↙", - ":second_place:": "🥈", - ":second_place_medal:": "🥈", - ":leftwards_arrow_with_hook:": "↩", - ":arrow_right_hook:": "↪", - ":watch:": "⌚", - ":hourglass:": "⌛", - ":fast_forward:": "⏩", - ":rewind:": "⏪", - ":arrow_double_up:": "⏫", - ":arrow_double_down:": "⏬", - ":alarm_clock:": "⏰", - ":hourglass_flowing_sand:": "⏳", - ":m:": "Ⓜ", - ":black_small_square:": "▪", - ":white_small_square:": "▫", - ":arrow_forward:": "▶", - ":arrow_backward:": "◀", - ":white_medium_square:": "◻", - ":black_medium_square:": "◼", - ":white_medium_small_square:": "◽", - ":black_medium_small_square:": "◾", - ":sunny:": "☀", - ":cloud:": "☁", - ":telephone:": "☎", - ":ballot_box_with_check:": "☑", - ":umbrella:": "☔", - ":coffee:": "☕", - ":point_up:": "☝", - ":relaxed:": "☺", - ":aries:": "♈", - ":first_place:": "🥇", - ":first_place_medal:": "🥇", - ":taurus:": "♉", - ":fencer:": "🤺", - ":fencing:": "🤺", - ":gemini:": "♊", - ":cancer:": "♋", - ":goal:": "🥅", - ":goal_net:": "🥅", - ":leo:": "♌", - ":asterisk_symbol:": "*", - ":virgo:": "♍", - ":handball:": "🤾", - ":libra:": "♎", - ":regional_indicator_z:": "🇿", - ":water_polo:": "🤽", - ":scorpius:": "♏", - ":sagittarius:": "♐", - ":martial_arts_uniform:": "🥋", - ":karate_uniform:": "🥋", - ":capricorn:": "♑", - ":boxing_glove:": "🥊", - ":boxing_gloves:": "🥊", - ":aquarius:": "♒", - ":wrestlers:": "🤼", - ":wrestling:": "🤼", - ":pisces:": "♓", - ":spades:": "♠", - ":clubs:": "♣", - ":hearts:": "♥", - ":diamonds:": "♦", - ":hotsprings:": "♨", - ":recycle:": "♻", - ":juggling:": "🤹", - ":juggler:": "🤹", - ":wheelchair:": "♿", - ":anchor:": "⚓", - ":warning:": "⚠", - ":zap:": "⚡", - ":white_circle:": "⚪", - ":black_circle:": "⚫", - ":soccer:": "⚽", - ":baseball:": "⚾", - ":snowman:": "⛄", - ":partly_sunny:": "⛅", - ":ophiuchus:": "⛎", - ":cartwheel:": "🤸", - ":person_doing_cartwheel:": "🤸", - ":no_entry:": "⛔", - ":church:": "⛪", - ":fountain:": "⛲", - ":canoe:": "🛶", - ":kayak:": "🛶", - ":golf:": "⛳", - ":sailboat:": "⛵", - ":tent:": "⛺", - ":fuelpump:": "⛽", - ":scissors:": "✂", - ":white_check_mark:": "✅", - ":airplane:": "✈", - ":envelope:": "✉", - ":fist:": "✊", - ":raised_hand:": "✋", - ":v:": "✌", - ":pencil2:": "✏", - ":black_nib:": "✒", - ":heavy_check_mark:": "✔", - ":heavy_multiplication_x:": "✖", - ":sparkles:": "✨", - ":eight_spoked_asterisk:": "✳", - ":eight_pointed_black_star:": "✴", - ":snowflake:": "❄", - ":sparkle:": "❇", - ":x:": "❌", - ":negative_squared_cross_mark:": "❎", - ":question:": "❓", - ":grey_question:": "❔", - ":motor_scooter:": "🛵", - ":motorbike:": "🛵", - ":grey_exclamation:": "❕", - ":exclamation:": "❗", - ":heart:": "❤", - ":heavy_plus_sign:": "➕", - ":heavy_minus_sign:": "➖", - ":heavy_division_sign:": "➗", - ":arrow_right:": "➡", - ":curly_loop:": "➰", - ":arrow_heading_up:": "⤴", - ":arrow_heading_down:": "⤵", - ":arrow_left:": "⬅", - ":arrow_up:": "⬆", - ":scooter:": "🛴", - ":arrow_down:": "⬇", - ":black_large_square:": "⬛", - ":white_large_square:": "⬜", - ":star:": "⭐", - ":o:": "⭕", - ":wavy_dash:": "〰", - ":part_alternation_mark:": "〽", - ":congratulations:": "㊗", - ":shopping_cart:": "🛒", - ":shopping_trolley:": "🛒", - ":secret:": "㊙", - ":mahjong:": "🀄", - ":black_joker:": "🃏", - ":a:": "🅰", - ":b:": "🅱", - ":o2:": "🅾", - ":parking:": "🅿", - ":octagonal_sign:": "🛑", - ":stop_sign:": "🛑", - ":ab:": "🆎", - ":cl:": "🆑", - ":regional_indicator_y:": "🇾", - ":cool:": "🆒", - ":free:": "🆓", - ":id:": "🆔", - ":new:": "🆕", - ":ng:": "🆖", - ":ok:": "🆗", - ":sos:": "🆘", - ":spoon:": "🥄", - ":up:": "🆙", - ":vs:": "🆚", - ":flag_cn:": "🇨🇳", - ":cn:": "🇨🇳", - ":flag_de:": "🇩🇪", - ":de:": "🇩🇪", - ":flag_es:": "🇪🇸", - ":es:": "🇪🇸", - ":flag_fr:": "🇫🇷", - ":fr:": "🇫🇷", - ":flag_gb:": "🇬🇧", - ":gb:": "🇬🇧", - ":champagne_glass:": "🥂", - ":clinking_glass:": "🥂", - ":tumbler_glass:": "🥃", - ":whisky:": "🥃", - ":flag_it:": "🇮🇹", - ":it:": "🇮🇹", - ":flag_jp:": "🇯🇵", - ":jp:": "🇯🇵", - ":flag_kr:": "🇰🇷", - ":kr:": "🇰🇷", - ":flag_us:": "🇺🇸", - ":us:": "🇺🇸", - ":flag_ru:": "🇷🇺", - ":ru:": "🇷🇺", - ":koko:": "🈁", - ":sa:": "🈂", - ":u7121:": "🈚", - ":u6307:": "🈯", - ":stuffed_flatbread:": "🥙", - ":stuffed_pita:": "🥙", - ":u7981:": "🈲", - ":u7a7a:": "🈳", - ":u5408:": "🈴", - ":u6e80:": "🈵", - ":u6709:": "🈶", - ":shallow_pan_of_food:": "🥘", - ":paella:": "🥘", - ":u6708:": "🈷", - ":u7533:": "🈸", - ":u5272:": "🈹", - ":salad:": "🥗", - ":green_salad:": "🥗", - ":u55b6:": "🈺", - ":ideograph_advantage:": "🉐", - ":accept:": "🉑", - ":cyclone:": "🌀", - ":french_bread:": "🥖", - ":baguette_bread:": "🥖", - ":foggy:": "🌁", - ":closed_umbrella:": "🌂", - ":night_with_stars:": "🌃", - ":sunrise_over_mountains:": "🌄", - ":sunrise:": "🌅", - ":city_dusk:": "🌆", - ":carrot:": "🥕", - ":city_sunset:": "🌇", - ":city_sunrise:": "🌇", - ":rainbow:": "🌈", - ":potato:": "🥔", - ":bridge_at_night:": "🌉", - ":ocean:": "🌊", - ":volcano:": "🌋", - ":milky_way:": "🌌", - ":earth_asia:": "🌏", - ":new_moon:": "🌑", - ":bacon:": "🥓", - ":first_quarter_moon:": "🌓", - ":waxing_gibbous_moon:": "🌔", - ":full_moon:": "🌕", - ":crescent_moon:": "🌙", - ":first_quarter_moon_with_face:": "🌛", - ":star2:": "🌟", - ":cucumber:": "🥒", - ":stars:": "🌠", - ":chestnut:": "🌰", - ":avocado:": "🥑", - ":seedling:": "🌱", - ":palm_tree:": "🌴", - ":cactus:": "🌵", - ":tulip:": "🌷", - ":cherry_blossom:": "🌸", - ":rose:": "🌹", - ":hibiscus:": "🌺", - ":sunflower:": "🌻", - ":blossom:": "🌼", - ":corn:": "🌽", - ":croissant:": "🥐", - ":ear_of_rice:": "🌾", - ":herb:": "🌿", - ":four_leaf_clover:": "🍀", - ":maple_leaf:": "🍁", - ":fallen_leaf:": "🍂", - ":leaves:": "🍃", - ":mushroom:": "🍄", - ":tomato:": "🍅", - ":eggplant:": "🍆", - ":grapes:": "🍇", - ":melon:": "🍈", - ":watermelon:": "🍉", - ":tangerine:": "🍊", - ":wilted_rose:": "🥀", - ":wilted_flower:": "🥀", - ":banana:": "🍌", - ":pineapple:": "🍍", - ":apple:": "🍎", - ":green_apple:": "🍏", - ":peach:": "🍑", - ":cherries:": "🍒", - ":strawberry:": "🍓", - ":rhino:": "🦏", - ":rhinoceros:": "🦏", - ":hamburger:": "🍔", - ":pizza:": "🍕", - ":meat_on_bone:": "🍖", - ":lizard:": "🦎", - ":poultry_leg:": "🍗", - ":rice_cracker:": "🍘", - ":rice_ball:": "🍙", - ":gorilla:": "🦍", - ":rice:": "🍚", - ":curry:": "🍛", - ":deer:": "🦌", - ":ramen:": "🍜", - ":spaghetti:": "🍝", - ":bread:": "🍞", - ":fries:": "🍟", - ":butterfly:": "🦋", - ":sweet_potato:": "🍠", - ":dango:": "🍡", - ":fox:": "🦊", - ":fox_face:": "🦊", - ":oden:": "🍢", - ":sushi:": "🍣", - ":owl:": "🦉", - ":fried_shrimp:": "🍤", - ":fish_cake:": "🍥", - ":shark:": "🦈", - ":icecream:": "🍦", - ":bat:": "🦇", - ":shaved_ice:": "🍧", - ":regional_indicator_x:": "🇽", - ":ice_cream:": "🍨", - ":duck:": "🦆", - ":doughnut:": "🍩", - ":eagle:": "🦅", - ":cookie:": "🍪", - ":black_heart:": "🖤", - ":chocolate_bar:": "🍫", - ":candy:": "🍬", - ":lollipop:": "🍭", - ":custard:": "🍮", - ":pudding:": "🍮", - ":flan:": "🍮", - ":honey_pot:": "🍯", - ":fingers_crossed:": "🤞", - ":hand_with_index_and_middle_finger_crossed:": "🤞", - ":cake:": "🍰", - ":bento:": "🍱", - ":stew:": "🍲", - ":handshake:": "🤝", - ":shaking_hands:": "🤝", - ":cooking:": "🍳", - ":fork_and_knife:": "🍴", - ":tea:": "🍵", - ":sake:": "🍶", - ":wine_glass:": "🍷", - ":cocktail:": "🍸", - ":tropical_drink:": "🍹", - ":beer:": "🍺", - ":beers:": "🍻", - ":ribbon:": "🎀", - ":gift:": "🎁", - ":birthday:": "🎂", - ":jack_o_lantern:": "🎃", - ":left_facing_fist:": "🤛", - ":left_fist:": "🤛", - ":right_facing_fist:": "🤜", - ":right_fist:": "🤜", - ":christmas_tree:": "🎄", - ":santa:": "🎅", - ":fireworks:": "🎆", - ":raised_back_of_hand:": "🤚", - ":back_of_hand:": "🤚", - ":sparkler:": "🎇", - ":balloon:": "🎈", - ":tada:": "🎉", - ":confetti_ball:": "🎊", - ":tanabata_tree:": "🎋", - ":crossed_flags:": "🎌", - ":call_me:": "🤙", - ":call_me_hand:": "🤙", - ":bamboo:": "🎍", - ":man_dancing:": "🕺", - ":male_dancer:": "🕺", - ":dolls:": "🎎", - ":selfie:": "🤳", - ":flags:": "🎏", - ":pregnant_woman:": "🤰", - ":expecting_woman:": "🤰", - ":wind_chime:": "🎐", - ":face_palm:": "🤦", - ":facepalm:": "🤦", - ":shrug:": "🤷", - ":rice_scene:": "🎑", - ":school_satchel:": "🎒", - ":mortar_board:": "🎓", - ":carousel_horse:": "🎠", - ":ferris_wheel:": "🎡", - ":roller_coaster:": "🎢", - ":fishing_pole_and_fish:": "🎣", - ":microphone:": "🎤", - ":pound_symbol:": "#", - ":movie_camera:": "🎥", - ":cinema:": "🎦", - ":headphones:": "🎧", - ":mrs_claus:": "🤶", - ":mother_christmas:": "🤶", - ":art:": "🎨", - ":man_in_tuxedo:": "🤵", - ":tophat:": "🎩", - ":circus_tent:": "🎪", - ":prince:": "🤴", - ":ticket:": "🎫", - ":clapper:": "🎬", - ":performing_arts:": "🎭", - ":sneezing_face:": "🤧", - ":sneeze:": "🤧", - ":video_game:": "🎮", - ":dart:": "🎯", - ":slot_machine:": "🎰", - ":8ball:": "🎱", - ":game_die:": "🎲", - ":bowling:": "🎳", - ":flower_playing_cards:": "🎴", - ":lying_face:": "🤥", - ":liar:": "🤥", - ":musical_note:": "🎵", - ":notes:": "🎶", - ":saxophone:": "🎷", - ":drooling_face:": "🤤", - ":drool:": "🤤", - ":guitar:": "🎸", - ":musical_keyboard:": "🎹", - ":trumpet:": "🎺", - ":rofl:": "🤣", - ":rolling_on_the_floor_laughing:": "🤣", - ":violin:": "🎻", - ":musical_score:": "🎼", - ":running_shirt_with_sash:": "🎽", - ":nauseated_face:": "🤢", - ":sick:": "🤢", - ":tennis:": "🎾", - ":ski:": "🎿", - ":basketball:": "🏀", - ":checkered_flag:": "🏁", - ":clown:": "🤡", - ":clown_face:": "🤡", - ":snowboarder:": "🏂", - ":runner:": "🏃", - ":surfer:": "🏄", - ":trophy:": "🏆", - ":football:": "🏈", - ":swimmer:": "🏊", - ":house:": "🏠", - ":house_with_garden:": "🏡", - ":office:": "🏢", - ":post_office:": "🏣", - ":hospital:": "🏥", - ":bank:": "🏦", - ":atm:": "🏧", - ":hotel:": "🏨", - ":love_hotel:": "🏩", - ":convenience_store:": "🏪", - ":school:": "🏫", - ":department_store:": "🏬", - ":cowboy:": "🤠", - ":face_with_cowboy_hat:": "🤠", - ":factory:": "🏭", - ":izakaya_lantern:": "🏮", - ":japanese_castle:": "🏯", - ":european_castle:": "🏰", - ":snail:": "🐌", - ":snake:": "🐍", - ":racehorse:": "🐎", - ":sheep:": "🐑", - ":monkey:": "🐒", - ":chicken:": "🐔", - ":boar:": "🐗", - ":elephant:": "🐘", - ":octopus:": "🐙", - ":shell:": "🐚", - ":prince_tone1:": "🤴🏻", - ":bug:": "🐛", - ":ant:": "🐜", - ":bee:": "🐝", - ":beetle:": "🐞", - ":fish:": "🐟", - ":tropical_fish:": "🐠", - ":blowfish:": "🐡", - ":turtle:": "🐢", - ":hatching_chick:": "🐣", - ":baby_chick:": "🐤", - ":hatched_chick:": "🐥", - ":bird:": "🐦", - ":penguin:": "🐧", - ":koala:": "🐨", - ":poodle:": "🐩", - ":camel:": "🐫", - ":dolphin:": "🐬", - ":mouse:": "🐭", - ":cow:": "🐮", - ":tiger:": "🐯", - ":rabbit:": "🐰", - ":cat:": "🐱", - ":dragon_face:": "🐲", - ":whale:": "🐳", - ":horse:": "🐴", - ":monkey_face:": "🐵", - ":dog:": "🐶", - ":pig:": "🐷", - ":frog:": "🐸", - ":hamster:": "🐹", - ":wolf:": "🐺", - ":bear:": "🐻", - ":panda_face:": "🐼", - ":pig_nose:": "🐽", - ":feet:": "🐾", - ":paw_prints:": "🐾", - ":prince_tone2:": "🤴🏼", - ":eyes:": "👀", - ":ear:": "👂", - ":nose:": "👃", - ":lips:": "👄", - ":tongue:": "👅", - ":prince_tone3:": "🤴🏽", - ":point_up_2:": "👆", - ":point_down:": "👇", - ":point_left:": "👈", - ":point_right:": "👉", - ":punch:": "👊", - ":wave:": "👋", - ":ok_hand:": "👌", - ":thumbsup:": "👍", - ":+1:": "👍", - ":thumbup:": "👍", - ":thumbsdown:": "👎", - ":1:": "👎", - ":thumbdown:": "👎", - ":clap:": "👏", - ":open_hands:": "👐", - ":crown:": "👑", - ":womans_hat:": "👒", - ":eyeglasses:": "👓", - ":necktie:": "👔", - ":shirt:": "👕", - ":prince_tone4:": "🤴🏾", - ":jeans:": "👖", - ":dress:": "👗", - ":kimono:": "👘", - ":prince_tone5:": "🤴🏿", - ":bikini:": "👙", - ":womans_clothes:": "👚", - ":purse:": "👛", - ":handbag:": "👜", - ":pouch:": "👝", - ":mans_shoe:": "👞", - ":athletic_shoe:": "👟", - ":high_heel:": "👠", - ":sandal:": "👡", - ":boot:": "👢", - ":footprints:": "👣", - ":bust_in_silhouette:": "👤", - ":mrs_claus_tone1:": "🤶🏻", - ":mother_christmas_tone1:": "🤶🏻", - ":boy:": "👦", - ":girl:": "👧", - ":man:": "👨", - ":woman:": "👩", - ":family:": "👪", - ":couple:": "👫", - ":cop:": "👮", - ":dancers:": "👯", - ":bride_with_veil:": "👰", - ":person_with_blond_hair:": "👱", - ":man_with_gua_pi_mao:": "👲", - ":man_with_turban:": "👳", - ":older_man:": "👴", - ":older_woman:": "👵", - ":grandma:": "👵", - ":baby:": "👶", - ":construction_worker:": "👷", - ":princess:": "👸", - ":japanese_ogre:": "👹", - ":mrs_claus_tone2:": "🤶🏼", - ":mother_christmas_tone2:": "🤶🏼", - ":japanese_goblin:": "👺", - ":ghost:": "👻", - ":angel:": "👼", - ":alien:": "👽", - ":space_invader:": "👾", - ":mrs_claus_tone3:": "🤶🏽", - ":mother_christmas_tone3:": "🤶🏽", - ":imp:": "👿", - ":skull:": "💀", - ":skeleton:": "💀", - ":card_index:": "📇", - ":information_desk_person:": "💁", - ":guardsman:": "💂", - ":dancer:": "💃", - ":lipstick:": "💄", - ":nail_care:": "💅", - ":ledger:": "📒", - ":massage:": "💆", - ":notebook:": "📓", - ":haircut:": "💇", - ":notebook_with_decorative_cover:": "📔", - ":barber:": "💈", - ":closed_book:": "📕", - ":syringe:": "💉", - ":book:": "📖", - ":pill:": "💊", - ":green_book:": "📗", - ":kiss:": "💋", - ":blue_book:": "📘", - ":love_letter:": "💌", - ":orange_book:": "📙", - ":ring:": "💍", - ":books:": "📚", - ":gem:": "💎", - ":mrs_claus_tone4:": "🤶🏾", - ":mother_christmas_tone4:": "🤶🏾", - ":name_badge:": "📛", - ":couplekiss:": "💏", - ":scroll:": "📜", - ":bouquet:": "💐", - ":pencil:": "📝", - ":mrs_claus_tone5:": "🤶🏿", - ":mother_christmas_tone5:": "🤶🏿", - ":couple_with_heart:": "💑", - ":telephone_receiver:": "📞", - ":wedding:": "💒", - ":pager:": "📟", - ":fax:": "📠", - ":heartbeat:": "💓", - ":satellite:": "📡", - ":loudspeaker:": "📢", - ":man_in_tuxedo_tone1:": "🤵🏻", - ":tuxedo_tone1:": "🤵🏻", - ":broken_heart:": "💔", - ":mega:": "📣", - ":outbox_tray:": "📤", - ":two_hearts:": "💕", - ":inbox_tray:": "📥", - ":package:": "📦", - ":man_in_tuxedo_tone2:": "🤵🏼", - ":tuxedo_tone2:": "🤵🏼", - ":sparkling_heart:": "💖", - ":email:": "📧", - ":incoming_envelope:": "📨", - ":heartpulse:": "💗", - ":man_in_tuxedo_tone3:": "🤵🏽", - ":tuxedo_tone3:": "🤵🏽", - ":envelope_with_arrow:": "📩", - ":mailbox_closed:": "📪", - ":cupid:": "💘", - ":mailbox:": "📫", - ":man_in_tuxedo_tone4:": "🤵🏾", - ":tuxedo_tone4:": "🤵🏾", - ":postbox:": "📮", - ":blue_heart:": "💙", - ":newspaper:": "📰", - ":man_in_tuxedo_tone5:": "🤵🏿", - ":tuxedo_tone5:": "🤵🏿", - ":iphone:": "📱", - ":green_heart:": "💚", - ":shrug_tone1:": "🤷🏻", - ":calling:": "📲", - ":vibration_mode:": "📳", - ":yellow_heart:": "💛", - ":shrug_tone2:": "🤷🏼", - ":mobile_phone_off:": "📴", - ":signal_strength:": "📶", - ":shrug_tone3:": "🤷🏽", - ":purple_heart:": "💜", - ":shrug_tone4:": "🤷🏾", - ":camera:": "📷", - ":video_camera:": "📹", - ":gift_heart:": "💝", - ":tv:": "📺", - ":shrug_tone5:": "🤷🏿", - ":radio:": "📻", - ":revolving_hearts:": "💞", - ":vhs:": "📼", - ":face_palm_tone1:": "🤦🏻", - ":facepalm_tone1:": "🤦🏻", - ":arrows_clockwise:": "🔃", - ":heart_decoration:": "💟", - ":loud_sound:": "🔊", - ":battery:": "🔋", - ":diamond_shape_with_a_dot_inside:": "💠", - ":electric_plug:": "🔌", - ":mag:": "🔍", - ":face_palm_tone2:": "🤦🏼", - ":facepalm_tone2:": "🤦🏼", - ":bulb:": "💡", - ":mag_right:": "🔎", - ":lock_with_ink_pen:": "🔏", - ":anger:": "💢", - ":closed_lock_with_key:": "🔐", - ":key:": "🔑", - ":bomb:": "💣", - ":lock:": "🔒", - ":unlock:": "🔓", - ":zzz:": "💤", - ":bell:": "🔔", - ":bookmark:": "🔖", - ":boom:": "💥", - ":face_palm_tone3:": "🤦🏽", - ":facepalm_tone3:": "🤦🏽", - ":link:": "🔗", - ":radio_button:": "🔘", - ":sweat_drops:": "💦", - ":back:": "🔙", - ":end:": "🔚", - ":droplet:": "💧", - ":face_palm_tone4:": "🤦🏾", - ":facepalm_tone4:": "🤦🏾", - ":on:": "🔛", - ":soon:": "🔜", - ":dash:": "💨", - ":top:": "🔝", - ":underage:": "🔞", - ":poop:": "💩", - ":shit:": "💩", - ":hankey:": "💩", - ":poo:": "💩", - ":keycap_ten:": "🔟", - ":muscle:": "💪", - ":capital_abcd:": "🔠", - ":abcd:": "🔡", - ":dizzy:": "💫", - ":face_palm_tone5:": "🤦🏿", - ":facepalm_tone5:": "🤦🏿", - ":1234:": "🔢", - ":symbols:": "🔣", - ":speech_balloon:": "💬", - ":abc:": "🔤", - ":fire:": "🔥", - ":flame:": "🔥", - ":white_flower:": "💮", - ":flashlight:": "🔦", - ":wrench:": "🔧", - ":100:": "💯", - ":hammer:": "🔨", - ":nut_and_bolt:": "🔩", - ":moneybag:": "💰", - ":knife:": "🔪", - ":gun:": "🔫", - ":currency_exchange:": "💱", - ":pregnant_woman_tone1:": "🤰🏻", - ":expecting_woman_tone1:": "🤰🏻", - ":crystal_ball:": "🔮", - ":heavy_dollar_sign:": "💲", - ":six_pointed_star:": "🔯", - ":credit_card:": "💳", - ":beginner:": "🔰", - ":trident:": "🔱", - ":yen:": "💴", - ":pregnant_woman_tone2:": "🤰🏼", - ":expecting_woman_tone2:": "🤰🏼", - ":black_square_button:": "🔲", - ":white_square_button:": "🔳", - ":dollar:": "💵", - ":red_circle:": "🔴", - ":blue_circle:": "🔵", - ":money_with_wings:": "💸", - ":large_orange_diamond:": "🔶", - ":large_blue_diamond:": "🔷", - ":chart:": "💹", - ":pregnant_woman_tone3:": "🤰🏽", - ":expecting_woman_tone3:": "🤰🏽", - ":small_orange_diamond:": "🔸", - ":small_blue_diamond:": "🔹", - ":seat:": "💺", - ":small_red_triangle:": "🔺", - ":small_red_triangle_down:": "🔻", - ":computer:": "💻", - ":arrow_up_small:": "🔼", - ":briefcase:": "💼", - ":arrow_down_small:": "🔽", - ":clock1:": "🕐", - ":minidisc:": "💽", - ":clock2:": "🕑", - ":floppy_disk:": "💾", - ":pregnant_woman_tone4:": "🤰🏾", - ":expecting_woman_tone4:": "🤰🏾", - ":clock3:": "🕒", - ":cd:": "💿", - ":clock4:": "🕓", - ":dvd:": "📀", - ":clock5:": "🕔", - ":clock6:": "🕕", - ":file_folder:": "📁", - ":clock7:": "🕖", - ":clock8:": "🕗", - ":open_file_folder:": "📂", - ":clock9:": "🕘", - ":clock10:": "🕙", - ":page_with_curl:": "📃", - ":clock11:": "🕚", - ":clock12:": "🕛", - ":page_facing_up:": "📄", - ":mount_fuji:": "🗻", - ":tokyo_tower:": "🗼", - ":date:": "📅", - ":statue_of_liberty:": "🗽", - ":japan:": "🗾", - ":calendar:": "📆", - ":moyai:": "🗿", - ":grin:": "😁", - ":joy:": "😂", - ":smiley:": "😃", - ":chart_with_upwards_trend:": "📈", - ":smile:": "😄", - ":sweat_smile:": "😅", - ":chart_with_downwards_trend:": "📉", - ":laughing:": "😆", - ":satisfied:": "😆", - ":wink:": "😉", - ":bar_chart:": "📊", - ":blush:": "😊", - ":yum:": "😋", - ":clipboard:": "📋", - ":relieved:": "😌", - ":heart_eyes:": "😍", - ":pushpin:": "📌", - ":smirk:": "😏", - ":unamused:": "😒", - ":round_pushpin:": "📍", - ":sweat:": "😓", - ":pensive:": "😔", - ":paperclip:": "📎", - ":confounded:": "😖", - ":kissing_heart:": "😘", - ":pregnant_woman_tone5:": "🤰🏿", - ":expecting_woman_tone5:": "🤰🏿", - ":straight_ruler:": "📏", - ":kissing_closed_eyes:": "😚", - ":stuck_out_tongue_winking_eye:": "😜", - ":triangular_ruler:": "📐", - ":stuck_out_tongue_closed_eyes:": "😝", - ":disappointed:": "😞", - ":bookmark_tabs:": "📑", - ":angry:": "😠", - ":rage:": "😡", - ":cry:": "😢", - ":persevere:": "😣", - ":triumph:": "😤", - ":disappointed_relieved:": "😥", - ":fearful:": "😨", - ":weary:": "😩", - ":sleepy:": "😪", - ":tired_face:": "😫", - ":sob:": "😭", - ":cold_sweat:": "😰", - ":scream:": "😱", - ":astonished:": "😲", - ":flushed:": "😳", - ":dizzy_face:": "😵", - ":mask:": "😷", - ":smile_cat:": "😸", - ":joy_cat:": "😹", - ":smiley_cat:": "😺", - ":heart_eyes_cat:": "😻", - ":smirk_cat:": "😼", - ":kissing_cat:": "😽", - ":pouting_cat:": "😾", - ":crying_cat_face:": "😿", - ":scream_cat:": "🙀", - ":no_good:": "🙅", - ":ok_woman:": "🙆", - ":bow:": "🙇", - ":see_no_evil:": "🙈", - ":man_dancing_tone1:": "🕺🏻", - ":male_dancer_tone1:": "🕺🏻", - ":hear_no_evil:": "🙉", - ":speak_no_evil:": "🙊", - ":man_dancing_tone2:": "🕺🏼", - ":male_dancer_tone2:": "🕺🏼", - ":raising_hand:": "🙋", - ":raised_hands:": "🙌", - ":person_frowning:": "🙍", - ":person_with_pouting_face:": "🙎", - ":pray:": "🙏", - ":rocket:": "🚀", - ":railway_car:": "🚃", - ":bullettrain_side:": "🚄", - ":bullettrain_front:": "🚅", - ":metro:": "🚇", - ":station:": "🚉", - ":bus:": "🚌", - ":busstop:": "🚏", - ":ambulance:": "🚑", - ":fire_engine:": "🚒", - ":police_car:": "🚓", - ":taxi:": "🚕", - ":red_car:": "🚗", - ":blue_car:": "🚙", - ":truck:": "🚚", - ":ship:": "🚢", - ":speedboat:": "🚤", - ":traffic_light:": "🚥", - ":construction:": "🚧", - ":rotating_light:": "🚨", - ":triangular_flag_on_post:": "🚩", - ":door:": "🚪", - ":man_dancing_tone3:": "🕺🏽", - ":male_dancer_tone3:": "🕺🏽", - ":no_entry_sign:": "🚫", - ":smoking:": "🚬", - ":no_smoking:": "🚭", - ":bike:": "🚲", - ":walking:": "🚶", - ":mens:": "🚹", - ":womens:": "🚺", - ":man_dancing_tone4:": "🕺🏾", - ":male_dancer_tone4:": "🕺🏾", - ":restroom:": "🚻", - ":baby_symbol:": "🚼", - ":man_dancing_tone5:": "🕺🏿", - ":male_dancer_tone5:": "🕺🏿", - ":toilet:": "🚽", - ":wc:": "🚾", - ":selfie_tone1:": "🤳🏻", - ":bath:": "🛀", - ":metal:": "🤘", - ":sign_of_the_horns:": "🤘", - ":grinning:": "😀", - ":innocent:": "😇", - ":smiling_imp:": "😈", - ":sunglasses:": "😎", - ":neutral_face:": "😐", - ":expressionless:": "😑", - ":confused:": "😕", - ":kissing:": "😗", - ":selfie_tone2:": "🤳🏼", - ":kissing_smiling_eyes:": "😙", - ":stuck_out_tongue:": "😛", - ":worried:": "😟", - ":frowning:": "😦", - ":anguished:": "😧", - ":grimacing:": "😬", - ":open_mouth:": "😮", - ":hushed:": "😯", - ":sleeping:": "😴", - ":no_mouth:": "😶", - ":helicopter:": "🚁", - ":steam_locomotive:": "🚂", - ":train2:": "🚆", - ":light_rail:": "🚈", - ":tram:": "🚊", - ":oncoming_bus:": "🚍", - ":trolleybus:": "🚎", - ":minibus:": "🚐", - ":oncoming_police_car:": "🚔", - ":oncoming_taxi:": "🚖", - ":oncoming_automobile:": "🚘", - ":articulated_lorry:": "🚛", - ":selfie_tone3:": "🤳🏽", - ":tractor:": "🚜", - ":monorail:": "🚝", - ":mountain_railway:": "🚞", - ":suspension_railway:": "🚟", - ":mountain_cableway:": "🚠", - ":aerial_tramway:": "🚡", - ":rowboat:": "🚣", - ":vertical_traffic_light:": "🚦", - ":selfie_tone4:": "🤳🏾", - ":put_litter_in_its_place:": "🚮", - ":do_not_litter:": "🚯", - ":selfie_tone5:": "🤳🏿", - ":potable_water:": "🚰", - ":nonpotable_water:": "🚱", - ":no_bicycles:": "🚳", - ":fingers_crossed_tone1:": "🤞🏻", - ":hand_with_index_and_middle_fingers_crossed_tone1:": "🤞🏻", - ":bicyclist:": "🚴", - ":mountain_bicyclist:": "🚵", - ":no_pedestrians:": "🚷", - ":children_crossing:": "🚸", - ":shower:": "🚿", - ":bathtub:": "🛁", - ":passport_control:": "🛂", - ":fingers_crossed_tone2:": "🤞🏼", - ":hand_with_index_and_middle_fingers_crossed_tone2:": "🤞🏼", - ":customs:": "🛃", - ":baggage_claim:": "🛄", - ":fingers_crossed_tone3:": "🤞🏽", - ":hand_with_index_and_middle_fingers_crossed_tone3:": "🤞🏽", - ":left_luggage:": "🛅", - ":earth_africa:": "🌍", - ":earth_americas:": "🌎", - ":globe_with_meridians:": "🌐", - ":waxing_crescent_moon:": "🌒", - ":waning_gibbous_moon:": "🌖", - ":last_quarter_moon:": "🌗", - ":waning_crescent_moon:": "🌘", - ":new_moon_with_face:": "🌚", - ":last_quarter_moon_with_face:": "🌜", - ":full_moon_with_face:": "🌝", - ":sun_with_face:": "🌞", - ":evergreen_tree:": "🌲", - ":deciduous_tree:": "🌳", - ":lemon:": "🍋", - ":fingers_crossed_tone4:": "🤞🏾", - ":hand_with_index_and_middle_fingers_crossed_tone4:": "🤞🏾", - ":pear:": "🍐", - ":baby_bottle:": "🍼", - ":horse_racing:": "🏇", - ":rugby_football:": "🏉", - ":european_post_office:": "🏤", - ":rat:": "🐀", - ":mouse2:": "🐁", - ":ox:": "🐂", - ":water_buffalo:": "🐃", - ":cow2:": "🐄", - ":tiger2:": "🐅", - ":leopard:": "🐆", - ":rabbit2:": "🐇", - ":cat2:": "🐈", - ":dragon:": "🐉", - ":crocodile:": "🐊", - ":whale2:": "🐋", - ":ram:": "🐏", - ":goat:": "🐐", - ":rooster:": "🐓", - ":dog2:": "🐕", - ":pig2:": "🐖", - ":fingers_crossed_tone5:": "🤞🏿", - ":hand_with_index_and_middle_fingers_crossed_tone5:": "🤞🏿", - ":dromedary_camel:": "🐪", - ":busts_in_silhouette:": "👥", - ":two_men_holding_hands:": "👬", - ":two_women_holding_hands:": "👭", - ":thought_balloon:": "💭", - ":euro:": "💶", - ":call_me_tone1:": "🤙🏻", - ":call_me_hand_tone1:": "🤙🏻", - ":pound:": "💷", - ":mailbox_with_mail:": "📬", - ":mailbox_with_no_mail:": "📭", - ":call_me_tone2:": "🤙🏼", - ":call_me_hand_tone2:": "🤙🏼", - ":postal_horn:": "📯", - ":no_mobile_phones:": "📵", - ":twisted_rightwards_arrows:": "🔀", - ":repeat:": "🔁", - ":repeat_one:": "🔂", - ":arrows_counterclockwise:": "🔄", - ":call_me_tone3:": "🤙🏽", - ":call_me_hand_tone3:": "🤙🏽", - ":low_brightness:": "🔅", - ":high_brightness:": "🔆", - ":mute:": "🔇", - ":sound:": "🔉", - ":no_bell:": "🔕", - ":microscope:": "🔬", - ":telescope:": "🔭", - ":clock130:": "🕜", - ":clock230:": "🕝", - ":clock330:": "🕞", - ":clock430:": "🕟", - ":clock530:": "🕠", - ":clock630:": "🕡", - ":clock730:": "🕢", - ":clock830:": "🕣", - ":clock930:": "🕤", - ":clock1030:": "🕥", - ":clock1130:": "🕦", - ":clock1230:": "🕧", - ":speaker:": "🔈", - ":train:": "🚋", - ":loop:": "➿", - ":flag_af:": "🇦🇫", - ":af:": "🇦🇫", - ":flag_al:": "🇦🇱", - ":al:": "🇦🇱", - ":flag_dz:": "🇩🇿", - ":dz:": "🇩🇿", - ":flag_ad:": "🇦🇩", - ":ad:": "🇦🇩", - ":flag_ao:": "🇦🇴", - ":ao:": "🇦🇴", - ":flag_ag:": "🇦🇬", - ":ag:": "🇦🇬", - ":flag_ar:": "🇦🇷", - ":ar:": "🇦🇷", - ":flag_am:": "🇦🇲", - ":am:": "🇦🇲", - ":flag_au:": "🇦🇺", - ":au:": "🇦🇺", - ":flag_at:": "🇦🇹", - ":at:": "🇦🇹", - ":flag_az:": "🇦🇿", - ":az:": "🇦🇿", - ":flag_bs:": "🇧🇸", - ":bs:": "🇧🇸", - ":flag_bh:": "🇧🇭", - ":bh:": "🇧🇭", - ":flag_bd:": "🇧🇩", - ":bd:": "🇧🇩", - ":flag_bb:": "🇧🇧", - ":bb:": "🇧🇧", - ":flag_by:": "🇧🇾", - ":by:": "🇧🇾", - ":flag_be:": "🇧🇪", - ":be:": "🇧🇪", - ":flag_bz:": "🇧🇿", - ":bz:": "🇧🇿", - ":flag_bj:": "🇧🇯", - ":bj:": "🇧🇯", - ":flag_bt:": "🇧🇹", - ":bt:": "🇧🇹", - ":flag_bo:": "🇧🇴", - ":bo:": "🇧🇴", - ":flag_ba:": "🇧🇦", - ":ba:": "🇧🇦", - ":flag_bw:": "🇧🇼", - ":bw:": "🇧🇼", - ":flag_br:": "🇧🇷", - ":br:": "🇧🇷", - ":flag_bn:": "🇧🇳", - ":bn:": "🇧🇳", - ":flag_bg:": "🇧🇬", - ":bg:": "🇧🇬", - ":flag_bf:": "🇧🇫", - ":bf:": "🇧🇫", - ":flag_bi:": "🇧🇮", - ":bi:": "🇧🇮", - ":flag_kh:": "🇰🇭", - ":kh:": "🇰🇭", - ":flag_cm:": "🇨🇲", - ":cm:": "🇨🇲", - ":flag_ca:": "🇨🇦", - ":ca:": "🇨🇦", - ":flag_cv:": "🇨🇻", - ":cv:": "🇨🇻", - ":call_me_tone4:": "🤙🏾", - ":call_me_hand_tone4:": "🤙🏾", - ":flag_cf:": "🇨🇫", - ":cf:": "🇨🇫", - ":flag_td:": "🇹🇩", - ":td:": "🇹🇩", - ":flag_cl:": "🇨🇱", - ":chile:": "🇨🇱", - ":flag_co:": "🇨🇴", - ":co:": "🇨🇴", - ":flag_km:": "🇰🇲", - ":km:": "🇰🇲", - ":flag_cr:": "🇨🇷", - ":cr:": "🇨🇷", - ":flag_ci:": "🇨🇮", - ":ci:": "🇨🇮", - ":flag_hr:": "🇭🇷", - ":hr:": "🇭🇷", - ":flag_cu:": "🇨🇺", - ":cu:": "🇨🇺", - ":flag_cy:": "🇨🇾", - ":cy:": "🇨🇾", - ":flag_cz:": "🇨🇿", - ":cz:": "🇨🇿", - ":call_me_tone5:": "🤙🏿", - ":call_me_hand_tone5:": "🤙🏿", - ":flag_cd:": "🇨🇩", - ":congo:": "🇨🇩", - ":left_facing_fist_tone1:": "🤛🏻", - ":left_fist_tone1:": "🤛🏻", - ":flag_dk:": "🇩🇰", - ":dk:": "🇩🇰", - ":flag_dj:": "🇩🇯", - ":dj:": "🇩🇯", - ":flag_dm:": "🇩🇲", - ":dm:": "🇩🇲", - ":flag_do:": "🇩🇴", - ":do:": "🇩🇴", - ":flag_tl:": "🇹🇱", - ":tl:": "🇹🇱", - ":flag_ec:": "🇪🇨", - ":ec:": "🇪🇨", - ":flag_eg:": "🇪🇬", - ":eg:": "🇪🇬", - ":flag_sv:": "🇸🇻", - ":sv:": "🇸🇻", - ":flag_gq:": "🇬🇶", - ":gq:": "🇬🇶", - ":flag_er:": "🇪🇷", - ":er:": "🇪🇷", - ":flag_ee:": "🇪🇪", - ":ee:": "🇪🇪", - ":flag_et:": "🇪🇹", - ":et:": "🇪🇹", - ":left_facing_fist_tone2:": "🤛🏼", - ":left_fist_tone2:": "🤛🏼", - ":flag_fj:": "🇫🇯", - ":fj:": "🇫🇯", - ":flag_fi:": "🇫🇮", - ":fi:": "🇫🇮", - ":flag_ga:": "🇬🇦", - ":ga:": "🇬🇦", - ":flag_gm:": "🇬🇲", - ":gm:": "🇬🇲", - ":flag_ge:": "🇬🇪", - ":ge:": "🇬🇪", - ":flag_gh:": "🇬🇭", - ":gh:": "🇬🇭", - ":flag_gr:": "🇬🇷", - ":gr:": "🇬🇷", - ":flag_gd:": "🇬🇩", - ":gd:": "🇬🇩", - ":flag_gt:": "🇬🇹", - ":gt:": "🇬🇹", - ":flag_gn:": "🇬🇳", - ":gn:": "🇬🇳", - ":flag_gw:": "🇬🇼", - ":gw:": "🇬🇼", - ":flag_gy:": "🇬🇾", - ":gy:": "🇬🇾", - ":flag_ht:": "🇭🇹", - ":ht:": "🇭🇹", - ":flag_hn:": "🇭🇳", - ":hn:": "🇭🇳", - ":flag_hu:": "🇭🇺", - ":hu:": "🇭🇺", - ":flag_is:": "🇮🇸", - ":is:": "🇮🇸", - ":flag_in:": "🇮🇳", - ":in:": "🇮🇳", - ":flag_id:": "🇮🇩", - ":indonesia:": "🇮🇩", - ":flag_ir:": "🇮🇷", - ":ir:": "🇮🇷", - ":flag_iq:": "🇮🇶", - ":iq:": "🇮🇶", - ":flag_ie:": "🇮🇪", - ":ie:": "🇮🇪", - ":flag_il:": "🇮🇱", - ":il:": "🇮🇱", - ":flag_jm:": "🇯🇲", - ":jm:": "🇯🇲", - ":flag_jo:": "🇯🇴", - ":jo:": "🇯🇴", - ":flag_kz:": "🇰🇿", - ":kz:": "🇰🇿", - ":flag_ke:": "🇰🇪", - ":ke:": "🇰🇪", - ":flag_ki:": "🇰🇮", - ":ki:": "🇰🇮", - ":flag_xk:": "🇽🇰", - ":xk:": "🇽🇰", - ":flag_kw:": "🇰🇼", - ":kw:": "🇰🇼", - ":flag_kg:": "🇰🇬", - ":kg:": "🇰🇬", - ":left_facing_fist_tone3:": "🤛🏽", - ":left_fist_tone3:": "🤛🏽", - ":flag_la:": "🇱🇦", - ":la:": "🇱🇦", - ":flag_lv:": "🇱🇻", - ":lv:": "🇱🇻", - ":flag_lb:": "🇱🇧", - ":lb:": "🇱🇧", - ":flag_ls:": "🇱🇸", - ":ls:": "🇱🇸", - ":flag_lr:": "🇱🇷", - ":lr:": "🇱🇷", - ":flag_ly:": "🇱🇾", - ":ly:": "🇱🇾", - ":flag_li:": "🇱🇮", - ":li:": "🇱🇮", - ":flag_lt:": "🇱🇹", - ":lt:": "🇱🇹", - ":flag_lu:": "🇱🇺", - ":lu:": "🇱🇺", - ":flag_mk:": "🇲🇰", - ":mk:": "🇲🇰", - ":flag_mg:": "🇲🇬", - ":mg:": "🇲🇬", - ":flag_mw:": "🇲🇼", - ":mw:": "🇲🇼", - ":flag_my:": "🇲🇾", - ":my:": "🇲🇾", - ":flag_mv:": "🇲🇻", - ":mv:": "🇲🇻", - ":flag_ml:": "🇲🇱", - ":ml:": "🇲🇱", - ":flag_mt:": "🇲🇹", - ":mt:": "🇲🇹", - ":flag_mh:": "🇲🇭", - ":mh:": "🇲🇭", - ":flag_mr:": "🇲🇷", - ":mr:": "🇲🇷", - ":flag_mu:": "🇲🇺", - ":mu:": "🇲🇺", - ":flag_mx:": "🇲🇽", - ":mx:": "🇲🇽", - ":flag_fm:": "🇫🇲", - ":fm:": "🇫🇲", - ":flag_md:": "🇲🇩", - ":md:": "🇲🇩", - ":flag_mc:": "🇲🇨", - ":mc:": "🇲🇨", - ":flag_mn:": "🇲🇳", - ":mn:": "🇲🇳", - ":flag_me:": "🇲🇪", - ":me:": "🇲🇪", - ":flag_ma:": "🇲🇦", - ":ma:": "🇲🇦", - ":flag_mz:": "🇲🇿", - ":mz:": "🇲🇿", - ":flag_mm:": "🇲🇲", - ":mm:": "🇲🇲", - ":flag_na:": "🇳🇦", - ":na:": "🇳🇦", - ":flag_nr:": "🇳🇷", - ":nr:": "🇳🇷", - ":flag_np:": "🇳🇵", - ":np:": "🇳🇵", - ":flag_nl:": "🇳🇱", - ":nl:": "🇳🇱", - ":flag_nz:": "🇳🇿", - ":nz:": "🇳🇿", - ":flag_ni:": "🇳🇮", - ":ni:": "🇳🇮", - ":flag_ne:": "🇳🇪", - ":ne:": "🇳🇪", - ":flag_ng:": "🇳🇬", - ":nigeria:": "🇳🇬", - ":flag_kp:": "🇰🇵", - ":kp:": "🇰🇵", - ":flag_no:": "🇳🇴", - ":no:": "🇳🇴", - ":flag_om:": "🇴🇲", - ":om:": "🇴🇲", - ":flag_pk:": "🇵🇰", - ":pk:": "🇵🇰", - ":flag_pw:": "🇵🇼", - ":pw:": "🇵🇼", - ":flag_pa:": "🇵🇦", - ":pa:": "🇵🇦", - ":flag_pg:": "🇵🇬", - ":pg:": "🇵🇬", - ":left_facing_fist_tone4:": "🤛🏾", - ":left_fist_tone4:": "🤛🏾", - ":flag_py:": "🇵🇾", - ":py:": "🇵🇾", - ":flag_pe:": "🇵🇪", - ":pe:": "🇵🇪", - ":flag_ph:": "🇵🇭", - ":ph:": "🇵🇭", - ":flag_pl:": "🇵🇱", - ":pl:": "🇵🇱", - ":flag_pt:": "🇵🇹", - ":pt:": "🇵🇹", - ":flag_qa:": "🇶🇦", - ":qa:": "🇶🇦", - ":flag_tw:": "🇹🇼", - ":tw:": "🇹🇼", - ":flag_cg:": "🇨🇬", - ":cg:": "🇨🇬", - ":flag_ro:": "🇷🇴", - ":ro:": "🇷🇴", - ":flag_rw:": "🇷🇼", - ":rw:": "🇷🇼", - ":flag_kn:": "🇰🇳", - ":kn:": "🇰🇳", - ":flag_lc:": "🇱🇨", - ":lc:": "🇱🇨", - ":flag_vc:": "🇻🇨", - ":vc:": "🇻🇨", - ":flag_ws:": "🇼🇸", - ":ws:": "🇼🇸", - ":flag_sm:": "🇸🇲", - ":sm:": "🇸🇲", - ":flag_st:": "🇸🇹", - ":st:": "🇸🇹", - ":flag_sa:": "🇸🇦", - ":saudiarabia:": "🇸🇦", - ":saudi:": "🇸🇦", - ":left_facing_fist_tone5:": "🤛🏿", - ":left_fist_tone5:": "🤛🏿", - ":flag_sn:": "🇸🇳", - ":sn:": "🇸🇳", - ":flag_rs:": "🇷🇸", - ":rs:": "🇷🇸", - ":flag_sc:": "🇸🇨", - ":sc:": "🇸🇨", - ":flag_sl:": "🇸🇱", - ":sl:": "🇸🇱", - ":flag_sg:": "🇸🇬", - ":sg:": "🇸🇬", - ":flag_sk:": "🇸🇰", - ":sk:": "🇸🇰", - ":flag_si:": "🇸🇮", - ":si:": "🇸🇮", - ":flag_sb:": "🇸🇧", - ":sb:": "🇸🇧", - ":flag_so:": "🇸🇴", - ":so:": "🇸🇴", - ":flag_za:": "🇿🇦", - ":za:": "🇿🇦", - ":flag_lk:": "🇱🇰", - ":lk:": "🇱🇰", - ":flag_sd:": "🇸🇩", - ":sd:": "🇸🇩", - ":flag_sr:": "🇸🇷", - ":sr:": "🇸🇷", - ":flag_sz:": "🇸🇿", - ":sz:": "🇸🇿", - ":flag_se:": "🇸🇪", - ":se:": "🇸🇪", - ":flag_ch:": "🇨🇭", - ":ch:": "🇨🇭", - ":flag_sy:": "🇸🇾", - ":sy:": "🇸🇾", - ":flag_tj:": "🇹🇯", - ":tj:": "🇹🇯", - ":flag_tz:": "🇹🇿", - ":tz:": "🇹🇿", - ":flag_th:": "🇹🇭", - ":th:": "🇹🇭", - ":flag_tg:": "🇹🇬", - ":tg:": "🇹🇬", - ":flag_to:": "🇹🇴", - ":to:": "🇹🇴", - ":flag_tt:": "🇹🇹", - ":tt:": "🇹🇹", - ":flag_tn:": "🇹🇳", - ":tn:": "🇹🇳", - ":flag_tr:": "🇹🇷", - ":tr:": "🇹🇷", - ":flag_tm:": "🇹🇲", - ":turkmenistan:": "🇹🇲", - ":flag_tv:": "🇹🇻", - ":tuvalu:": "🇹🇻", - ":flag_ug:": "🇺🇬", - ":ug:": "🇺🇬", - ":flag_ua:": "🇺🇦", - ":ua:": "🇺🇦", - ":flag_ae:": "🇦🇪", - ":ae:": "🇦🇪", - ":flag_uy:": "🇺🇾", - ":uy:": "🇺🇾", - ":flag_uz:": "🇺🇿", - ":uz:": "🇺🇿", - ":flag_vu:": "🇻🇺", - ":vu:": "🇻🇺", - ":flag_va:": "🇻🇦", - ":va:": "🇻🇦", - ":flag_ve:": "🇻🇪", - ":ve:": "🇻🇪", - ":flag_vn:": "🇻🇳", - ":vn:": "🇻🇳", - ":flag_eh:": "🇪🇭", - ":eh:": "🇪🇭", - ":right_facing_fist_tone1:": "🤜🏻", - ":right_fist_tone1:": "🤜🏻", - ":flag_ye:": "🇾🇪", - ":ye:": "🇾🇪", - ":flag_zm:": "🇿🇲", - ":zm:": "🇿🇲", - ":flag_zw:": "🇿🇼", - ":zw:": "🇿🇼", - ":flag_pr:": "🇵🇷", - ":pr:": "🇵🇷", - ":flag_ky:": "🇰🇾", - ":ky:": "🇰🇾", - ":flag_bm:": "🇧🇲", - ":bm:": "🇧🇲", - ":flag_pf:": "🇵🇫", - ":pf:": "🇵🇫", - ":flag_ps:": "🇵🇸", - ":ps:": "🇵🇸", - ":flag_nc:": "🇳🇨", - ":nc:": "🇳🇨", - ":right_facing_fist_tone2:": "🤜🏼", - ":right_fist_tone2:": "🤜🏼", - ":flag_sh:": "🇸🇭", - ":sh:": "🇸🇭", - ":flag_aw:": "🇦🇼", - ":aw:": "🇦🇼", - ":flag_vi:": "🇻🇮", - ":vi:": "🇻🇮", - ":flag_hk:": "🇭🇰", - ":hk:": "🇭🇰", - ":flag_ac:": "🇦🇨", - ":ac:": "🇦🇨", - ":flag_ms:": "🇲🇸", - ":ms:": "🇲🇸", - ":flag_gu:": "🇬🇺", - ":gu:": "🇬🇺", - ":flag_gl:": "🇬🇱", - ":gl:": "🇬🇱", - ":flag_nu:": "🇳🇺", - ":nu:": "🇳🇺", - ":flag_wf:": "🇼🇫", - ":wf:": "🇼🇫", - ":flag_mo:": "🇲🇴", - ":mo:": "🇲🇴", - ":right_facing_fist_tone3:": "🤜🏽", - ":right_fist_tone3:": "🤜🏽", - ":flag_fo:": "🇫🇴", - ":fo:": "🇫🇴", - ":flag_fk:": "🇫🇰", - ":fk:": "🇫🇰", - ":flag_je:": "🇯🇪", - ":je:": "🇯🇪", - ":flag_ai:": "🇦🇮", - ":ai:": "🇦🇮", - ":flag_gi:": "🇬🇮", - ":gi:": "🇬🇮", - ":film_frames:": "🎞", - ":tickets:": "🎟", - ":admission_tickets:": "🎟", - ":medal:": "🏅", - ":sports_medal:": "🏅", - ":lifter:": "🏋", - ":weight_lifter:": "🏋", - ":golfer:": "🏌", - ":motorcycle:": "🏍", - ":racing_motorcycle:": "🏍", - ":race_car:": "🏎", - ":racing_car:": "🏎", - ":military_medal:": "🎖", - ":reminder_ribbon:": "🎗", - ":hot_pepper:": "🌶", - ":right_facing_fist_tone4:": "🤜🏾", - ":right_fist_tone4:": "🤜🏾", - ":cloud_rain:": "🌧", - ":cloud_with_rain:": "🌧", - ":cloud_snow:": "🌨", - ":cloud_with_snow:": "🌨", - ":cloud_lightning:": "🌩", - ":cloud_with_lightning:": "🌩", - ":cloud_tornado:": "🌪", - ":cloud_with_tornado:": "🌪", - ":fog:": "🌫", - ":wind_blowing_face:": "🌬", - ":chipmunk:": "🐿", - ":spider:": "🕷", - ":spider_web:": "🕸", - ":thermometer:": "🌡", - ":microphone2:": "🎙", - ":studio_microphone:": "🎙", - ":level_slider:": "🎚", - ":control_knobs:": "🎛", - ":flag_white:": "🏳", - ":waving_white_flag:": "🏳", - ":flag_black:": "🏴", - ":waving_black_flag:": "🏴", - ":rosette:": "🏵", - ":label:": "🏷", - ":camera_with_flash:": "📸", - ":projector:": "📽", - ":film_projector:": "📽", - ":cross:": "✝", - ":latin_cross:": "✝", - ":om_symbol:": "🕉", - ":dove:": "🕊", - ":dove_of_peace:": "🕊", - ":candle:": "🕯", - ":clock:": "🕰", - ":mantlepiece_clock:": "🕰", - ":hole:": "🕳", - ":dark_sunglasses:": "🕶", - ":joystick:": "🕹", - ":paperclips:": "🖇", - ":linked_paperclips:": "🖇", - ":pen_ballpoint:": "🖊", - ":lower_left_ballpoint_pen:": "🖊", - ":pen_fountain:": "🖋", - ":lower_left_fountain_pen:": "🖋", - ":paintbrush:": "🖌", - ":lower_left_paintbrush:": "🖌", - ":crayon:": "🖍", - ":lower_left_crayon:": "🖍", - ":desktop:": "🖥", - ":desktop_computer:": "🖥", - ":printer:": "🖨", - ":right_facing_fist_tone5:": "🤜🏿", - ":right_fist_tone5:": "🤜🏿", - ":keyboard:": "⌨", - ":trackball:": "🖲", - ":raised_back_of_hand_tone1:": "🤚🏻", - ":back_of_hand_tone1:": "🤚🏻", - ":frame_photo:": "🖼", - ":frame_with_picture:": "🖼", - ":dividers:": "🗂", - ":card_index_dividers:": "🗂", - ":card_box:": "🗃", - ":card_file_box:": "🗃", - ":file_cabinet:": "🗄", - ":wastebasket:": "🗑", - ":notepad_spiral:": "🗒", - ":spiral_note_pad:": "🗒", - ":calendar_spiral:": "🗓", - ":spiral_calendar_pad:": "🗓", - ":compression:": "🗜", - ":key2:": "🗝", - ":old_key:": "🗝", - ":newspaper2:": "🗞", - ":rolled_up_newspaper:": "🗞", - ":dagger:": "🗡", - ":dagger_knife:": "🗡", - ":speaking_head:": "🗣", - ":speaking_head_in_silhouette:": "🗣", - ":speech_left:": "🗨", - ":left_speech_bubble:": "🗨", - ":raised_back_of_hand_tone2:": "🤚🏼", - ":back_of_hand_tone2:": "🤚🏼", - ":anger_right:": "🗯", - ":right_anger_bubble:": "🗯", - ":raised_back_of_hand_tone3:": "🤚🏽", - ":back_of_hand_tone3:": "🤚🏽", - ":ballot_box:": "🗳", - ":ballot_box_with_ballot:": "🗳", - ":map:": "🗺", - ":world_map:": "🗺", - ":sleeping_accommodation:": "🛌", - ":tools:": "🛠", - ":hammer_and_wrench:": "🛠", - ":shield:": "🛡", - ":oil:": "🛢", - ":oil_drum:": "🛢", - ":satellite_orbital:": "🛰", - ":fork_knife_plate:": "🍽", - ":fork_and_knife_with_plate:": "🍽", - ":eye:": "👁", - ":levitate:": "🕴", - ":man_in_business_suit_levitating:": "🕴", - ":spy:": "🕵", - ":sleuth_or_spy:": "🕵", - ":writing_hand:": "✍", - ":hand_splayed:": "🖐", - ":raised_hand_with_fingers_splayed:": "🖐", - ":middle_finger:": "🖕", - ":reversed_hand_with_middle_finger_extended:": "🖕", - ":vulcan:": "🖖", - ":raised_hand_with_part_between_middle_and_ring_fingers:": "🖖", - ":slight_frown:": "🙁", - ":slightly_frowning_face:": "🙁", - ":slight_smile:": "🙂", - ":slightly_smiling_face:": "🙂", - ":mountain_snow:": "🏔", - ":snow_capped_mountain:": "🏔", - ":camping:": "🏕", - ":beach:": "🏖", - ":beach_with_umbrella:": "🏖", - ":construction_site:": "🏗", - ":building_construction:": "🏗", - ":homes:": "🏘", - ":house_buildings:": "🏘", - ":cityscape:": "🏙", - ":house_abandoned:": "🏚", - ":derelict_house_building:": "🏚", - ":classical_building:": "🏛", - ":desert:": "🏜", - ":island:": "🏝", - ":desert_island:": "🏝", - ":park:": "🏞", - ":national_park:": "🏞", - ":stadium:": "🏟", - ":couch:": "🛋", - ":couch_and_lamp:": "🛋", - ":raised_back_of_hand_tone4:": "🤚🏾", - ":back_of_hand_tone4:": "🤚🏾", - ":shopping_bags:": "🛍", - ":bellhop:": "🛎", - ":bellhop_bell:": "🛎", - ":bed:": "🛏", - ":motorway:": "🛣", - ":railway_track:": "🛤", - ":railroad_track:": "🛤", - ":motorboat:": "🛥", - ":airplane_small:": "🛩", - ":small_airplane:": "🛩", - ":airplane_departure:": "🛫", - ":airplane_arriving:": "🛬", - ":cruise_ship:": "🛳", - ":passenger_ship:": "🛳", - ":baby_tone1:": "👶🏻", - ":baby_tone2:": "👶🏼", - ":baby_tone3:": "👶🏽", - ":baby_tone4:": "👶🏾", - ":baby_tone5:": "👶🏿", - ":boy_tone1:": "👦🏻", - ":boy_tone2:": "👦🏼", - ":boy_tone3:": "👦🏽", - ":boy_tone4:": "👦🏾", - ":boy_tone5:": "👦🏿", - ":girl_tone1:": "👧🏻", - ":girl_tone2:": "👧🏼", - ":girl_tone3:": "👧🏽", - ":girl_tone4:": "👧🏾", - ":girl_tone5:": "👧🏿", - ":man_tone1:": "👨🏻", - ":man_tone2:": "👨🏼", - ":man_tone3:": "👨🏽", - ":man_tone4:": "👨🏾", - ":man_tone5:": "👨🏿", - ":woman_tone1:": "👩🏻", - ":woman_tone2:": "👩🏼", - ":woman_tone3:": "👩🏽", - ":woman_tone4:": "👩🏾", - ":woman_tone5:": "👩🏿", - ":bride_with_veil_tone1:": "👰🏻", - ":bride_with_veil_tone2:": "👰🏼", - ":raised_back_of_hand_tone5:": "🤚🏿", - ":back_of_hand_tone5:": "🤚🏿", - ":bride_with_veil_tone3:": "👰🏽", - ":bride_with_veil_tone4:": "👰🏾", - ":bride_with_veil_tone5:": "👰🏿", - ":person_with_blond_hair_tone1:": "👱🏻", - ":person_with_blond_hair_tone2:": "👱🏼", - ":person_with_blond_hair_tone3:": "👱🏽", - ":person_with_blond_hair_tone4:": "👱🏾", - ":person_with_blond_hair_tone5:": "👱🏿", - ":man_with_gua_pi_mao_tone1:": "👲🏻", - ":man_with_gua_pi_mao_tone2:": "👲🏼", - ":man_with_gua_pi_mao_tone3:": "👲🏽", - ":man_with_gua_pi_mao_tone4:": "👲🏾", - ":man_with_gua_pi_mao_tone5:": "👲🏿", - ":man_with_turban_tone1:": "👳🏻", - ":man_with_turban_tone2:": "👳🏼", - ":man_with_turban_tone3:": "👳🏽", - ":man_with_turban_tone4:": "👳🏾", - ":man_with_turban_tone5:": "👳🏿", - ":older_man_tone1:": "👴🏻", - ":older_man_tone2:": "👴🏼", - ":older_man_tone3:": "👴🏽", - ":older_man_tone4:": "👴🏾", - ":older_man_tone5:": "👴🏿", - ":older_woman_tone1:": "👵🏻", - ":grandma_tone1:": "👵🏻", - ":older_woman_tone2:": "👵🏼", - ":grandma_tone2:": "👵🏼", - ":older_woman_tone3:": "👵🏽", - ":grandma_tone3:": "👵🏽", - ":older_woman_tone4:": "👵🏾", - ":grandma_tone4:": "👵🏾", - ":older_woman_tone5:": "👵🏿", - ":grandma_tone5:": "👵🏿", - ":cop_tone1:": "👮🏻", - ":cop_tone2:": "👮🏼", - ":cop_tone3:": "👮🏽", - ":cop_tone4:": "👮🏾", - ":cop_tone5:": "👮🏿", - ":construction_worker_tone1:": "👷🏻", - ":construction_worker_tone2:": "👷🏼", - ":construction_worker_tone3:": "👷🏽", - ":construction_worker_tone4:": "👷🏾", - ":construction_worker_tone5:": "👷🏿", - ":princess_tone1:": "👸🏻", - ":princess_tone2:": "👸🏼", - ":princess_tone3:": "👸🏽", - ":princess_tone4:": "👸🏾", - ":cartwheel_tone1:": "🤸🏻", - ":person_doing_cartwheel_tone1:": "🤸🏻", - ":princess_tone5:": "👸🏿", - ":guardsman_tone1:": "💂🏻", - ":guardsman_tone2:": "💂🏼", - ":cartwheel_tone2:": "🤸🏼", - ":person_doing_cartwheel_tone2:": "🤸🏼", - ":guardsman_tone3:": "💂🏽", - ":guardsman_tone4:": "💂🏾", - ":guardsman_tone5:": "💂🏿", - ":cartwheel_tone3:": "🤸🏽", - ":person_doing_cartwheel_tone3:": "🤸🏽", - ":angel_tone1:": "👼🏻", - ":angel_tone2:": "👼🏼", - ":angel_tone3:": "👼🏽", - ":angel_tone4:": "👼🏾", - ":angel_tone5:": "👼🏿", - ":bow_tone1:": "🙇🏻", - ":bow_tone2:": "🙇🏼", - ":bow_tone3:": "🙇🏽", - ":bow_tone4:": "🙇🏾", - ":bow_tone5:": "🙇🏿", - ":information_desk_person_tone1:": "💁🏻", - ":information_desk_person_tone2:": "💁🏼", - ":information_desk_person_tone3:": "💁🏽", - ":cartwheel_tone4:": "🤸🏾", - ":person_doing_cartwheel_tone4:": "🤸🏾", - ":information_desk_person_tone4:": "💁🏾", - ":information_desk_person_tone5:": "💁🏿", - ":no_good_tone1:": "🙅🏻", - ":cartwheel_tone5:": "🤸🏿", - ":person_doing_cartwheel_tone5:": "🤸🏿", - ":no_good_tone2:": "🙅🏼", - ":no_good_tone3:": "🙅🏽", - ":no_good_tone4:": "🙅🏾", - ":no_good_tone5:": "🙅🏿", - ":ok_woman_tone1:": "🙆🏻", - ":ok_woman_tone2:": "🙆🏼", - ":ok_woman_tone3:": "🙆🏽", - ":ok_woman_tone4:": "🙆🏾", - ":ok_woman_tone5:": "🙆🏿", - ":raising_hand_tone1:": "🙋🏻", - ":raising_hand_tone2:": "🙋🏼", - ":raising_hand_tone3:": "🙋🏽", - ":raising_hand_tone4:": "🙋🏾", - ":raising_hand_tone5:": "🙋🏿", - ":person_with_pouting_face_tone1:": "🙎🏻", - ":person_with_pouting_face_tone2:": "🙎🏼", - ":person_with_pouting_face_tone3:": "🙎🏽", - ":person_with_pouting_face_tone4:": "🙎🏾", - ":person_with_pouting_face_tone5:": "🙎🏿", - ":person_frowning_tone1:": "🙍🏻", - ":person_frowning_tone2:": "🙍🏼", - ":person_frowning_tone3:": "🙍🏽", - ":person_frowning_tone4:": "🙍🏾", - ":person_frowning_tone5:": "🙍🏿", - ":massage_tone1:": "💆🏻", - ":massage_tone2:": "💆🏼", - ":massage_tone3:": "💆🏽", - ":massage_tone4:": "💆🏾", - ":massage_tone5:": "💆🏿", - ":haircut_tone1:": "💇🏻", - ":haircut_tone2:": "💇🏼", - ":haircut_tone3:": "💇🏽", - ":haircut_tone4:": "💇🏾", - ":haircut_tone5:": "💇🏿", - ":raised_hands_tone1:": "🙌🏻", - ":raised_hands_tone2:": "🙌🏼", - ":raised_hands_tone3:": "🙌🏽", - ":raised_hands_tone4:": "🙌🏾", - ":raised_hands_tone5:": "🙌🏿", - ":clap_tone1:": "👏🏻", - ":clap_tone2:": "👏🏼", - ":clap_tone3:": "👏🏽", - ":water_polo_tone1:": "🤽🏻", - ":clap_tone4:": "👏🏾", - ":clap_tone5:": "👏🏿", - ":water_polo_tone2:": "🤽🏼", - ":ear_tone1:": "👂🏻", - ":ear_tone2:": "👂🏼", - ":ear_tone3:": "👂🏽", - ":ear_tone4:": "👂🏾", - ":ear_tone5:": "👂🏿", - ":nose_tone1:": "👃🏻", - ":nose_tone2:": "👃🏼", - ":nose_tone3:": "👃🏽", - ":nose_tone4:": "👃🏾", - ":nose_tone5:": "👃🏿", - ":nail_care_tone1:": "💅🏻", - ":nail_care_tone2:": "💅🏼", - ":nail_care_tone3:": "💅🏽", - ":nail_care_tone4:": "💅🏾", - ":nail_care_tone5:": "💅🏿", - ":wave_tone1:": "👋🏻", - ":wave_tone2:": "👋🏼", - ":wave_tone3:": "👋🏽", - ":wave_tone4:": "👋🏾", - ":wave_tone5:": "👋🏿", - ":thumbsup_tone1:": "👍🏻", - ":+1_tone1:": "👍🏻", - ":thumbup_tone1:": "👍🏻", - ":thumbsup_tone2:": "👍🏼", - ":+1_tone2:": "👍🏼", - ":thumbup_tone2:": "👍🏼", - ":thumbsup_tone3:": "👍🏽", - ":+1_tone3:": "👍🏽", - ":thumbup_tone3:": "👍🏽", - ":thumbsup_tone4:": "👍🏾", - ":+1_tone4:": "👍🏾", - ":thumbup_tone4:": "👍🏾", - ":thumbsup_tone5:": "👍🏿", - ":+1_tone5:": "👍🏿", - ":thumbup_tone5:": "👍🏿", - ":thumbsdown_tone1:": "👎🏻", - ":1_tone1:": "👎🏻", - ":thumbdown_tone1:": "👎🏻", - ":thumbsdown_tone2:": "👎🏼", - ":1_tone2:": "👎🏼", - ":thumbdown_tone2:": "👎🏼", - ":thumbsdown_tone3:": "👎🏽", - ":1_tone3:": "👎🏽", - ":thumbdown_tone3:": "👎🏽", - ":thumbsdown_tone4:": "👎🏾", - ":1_tone4:": "👎🏾", - ":thumbdown_tone4:": "👎🏾", - ":thumbsdown_tone5:": "👎🏿", - ":1_tone5:": "👎🏿", - ":thumbdown_tone5:": "👎🏿", - ":point_up_tone1:": "☝🏻", - ":point_up_tone2:": "☝🏼", - ":point_up_tone3:": "☝🏽", - ":point_up_tone4:": "☝🏾", - ":point_up_tone5:": "☝🏿", - ":point_up_2_tone1:": "👆🏻", - ":point_up_2_tone2:": "👆🏼", - ":point_up_2_tone3:": "👆🏽", - ":point_up_2_tone4:": "👆🏾", - ":point_up_2_tone5:": "👆🏿", - ":point_down_tone1:": "👇🏻", - ":point_down_tone2:": "👇🏼", - ":point_down_tone3:": "👇🏽", - ":point_down_tone4:": "👇🏾", - ":point_down_tone5:": "👇🏿", - ":point_left_tone1:": "👈🏻", - ":point_left_tone2:": "👈🏼", - ":point_left_tone3:": "👈🏽", - ":point_left_tone4:": "👈🏾", - ":point_left_tone5:": "👈🏿", - ":point_right_tone1:": "👉🏻", - ":point_right_tone2:": "👉🏼", - ":point_right_tone3:": "👉🏽", - ":point_right_tone4:": "👉🏾", - ":point_right_tone5:": "👉🏿", - ":ok_hand_tone1:": "👌🏻", - ":ok_hand_tone2:": "👌🏼", - ":water_polo_tone3:": "🤽🏽", - ":ok_hand_tone3:": "👌🏽", - ":ok_hand_tone4:": "👌🏾", - ":water_polo_tone4:": "🤽🏾", - ":ok_hand_tone5:": "👌🏿", - ":v_tone1:": "✌🏻", - ":v_tone2:": "✌🏼", - ":v_tone3:": "✌🏽", - ":v_tone4:": "✌🏾", - ":v_tone5:": "✌🏿", - ":punch_tone1:": "👊🏻", - ":punch_tone2:": "👊🏼", - ":punch_tone3:": "👊🏽", - ":punch_tone4:": "👊🏾", - ":punch_tone5:": "👊🏿", - ":fist_tone1:": "✊🏻", - ":fist_tone2:": "✊🏼", - ":fist_tone3:": "✊🏽", - ":fist_tone4:": "✊🏾", - ":fist_tone5:": "✊🏿", - ":raised_hand_tone1:": "✋🏻", - ":raised_hand_tone2:": "✋🏼", - ":raised_hand_tone3:": "✋🏽", - ":raised_hand_tone4:": "✋🏾", - ":raised_hand_tone5:": "✋🏿", - ":muscle_tone1:": "💪🏻", - ":muscle_tone2:": "💪🏼", - ":muscle_tone3:": "💪🏽", - ":muscle_tone4:": "💪🏾", - ":muscle_tone5:": "💪🏿", - ":open_hands_tone1:": "👐🏻", - ":open_hands_tone2:": "👐🏼", - ":open_hands_tone3:": "👐🏽", - ":open_hands_tone4:": "👐🏾", - ":open_hands_tone5:": "👐🏿", - ":pray_tone1:": "🙏🏻", - ":water_polo_tone5:": "🤽🏿", - ":pray_tone2:": "🙏🏼", - ":pray_tone3:": "🙏🏽", - ":handball_tone1:": "🤾🏻", - ":pray_tone4:": "🙏🏾", - ":pray_tone5:": "🙏🏿", - ":handball_tone2:": "🤾🏼", - ":runner_tone1:": "🏃🏻", - ":runner_tone2:": "🏃🏼", - ":runner_tone3:": "🏃🏽", - ":runner_tone4:": "🏃🏾", - ":handball_tone3:": "🤾🏽", - ":runner_tone5:": "🏃🏿", - ":walking_tone1:": "🚶🏻", - ":walking_tone2:": "🚶🏼", - ":walking_tone3:": "🚶🏽", - ":walking_tone4:": "🚶🏾", - ":walking_tone5:": "🚶🏿", - ":dancer_tone1:": "💃🏻", - ":handball_tone4:": "🤾🏾", - ":dancer_tone2:": "💃🏼", - ":dancer_tone3:": "💃🏽", - ":handball_tone5:": "🤾🏿", - ":dancer_tone4:": "💃🏾", - ":dancer_tone5:": "💃🏿", - ":juggling_tone1:": "🤹🏻", - ":juggler_tone1:": "🤹🏻", - ":rowboat_tone1:": "🚣🏻", - ":rowboat_tone2:": "🚣🏼", - ":rowboat_tone3:": "🚣🏽", - ":rowboat_tone4:": "🚣🏾", - ":rowboat_tone5:": "🚣🏿", - ":swimmer_tone1:": "🏊🏻", - ":swimmer_tone2:": "🏊🏼", - ":juggling_tone2:": "🤹🏼", - ":juggler_tone2:": "🤹🏼", - ":swimmer_tone3:": "🏊🏽", - ":swimmer_tone4:": "🏊🏾", - ":swimmer_tone5:": "🏊🏿", - ":juggling_tone3:": "🤹🏽", - ":juggler_tone3:": "🤹🏽", - ":surfer_tone1:": "🏄🏻", - ":surfer_tone2:": "🏄🏼", - ":surfer_tone3:": "🏄🏽", - ":surfer_tone4:": "🏄🏾", - ":surfer_tone5:": "🏄🏿", - ":bath_tone1:": "🛀🏻", - ":bath_tone2:": "🛀🏼", - ":juggling_tone4:": "🤹🏾", - ":juggler_tone4:": "🤹🏾", - ":bath_tone3:": "🛀🏽", - ":bath_tone4:": "🛀🏾", - ":bath_tone5:": "🛀🏿", - ":juggling_tone5:": "🤹🏿", - ":juggler_tone5:": "🤹🏿", - ":bicyclist_tone1:": "🚴🏻", - ":bicyclist_tone2:": "🚴🏼", - ":bicyclist_tone3:": "🚴🏽", - ":rainbow_flag:": "🏳🌈", - ":gay_pride_flag:": "🏳🌈", - ":bicyclist_tone4:": "🚴🏾", - ":bicyclist_tone5:": "🚴🏿", - ":mountain_bicyclist_tone1:": "🚵🏻", - ":mountain_bicyclist_tone2:": "🚵🏼", - ":mountain_bicyclist_tone3:": "🚵🏽", - ":mountain_bicyclist_tone4:": "🚵🏾", - ":mountain_bicyclist_tone5:": "🚵🏿", - ":horse_racing_tone1:": "🏇🏻", - ":horse_racing_tone2:": "🏇🏼", - ":horse_racing_tone3:": "🏇🏽", - ":horse_racing_tone4:": "🏇🏾", - ":horse_racing_tone5:": "🏇🏿", - ":writing_hand_tone1:": "✍🏻", - ":writing_hand_tone2:": "✍🏼", - ":writing_hand_tone3:": "✍🏽", - ":writing_hand_tone4:": "✍🏾", - ":writing_hand_tone5:": "✍🏿", - ":hand_splayed_tone1:": "🖐🏻", - ":raised_hand_with_fingers_splayed_tone1:": "🖐🏻", - ":hand_splayed_tone2:": "🖐🏼", - ":raised_hand_with_fingers_splayed_tone2:": "🖐🏼", - ":hand_splayed_tone3:": "🖐🏽", - ":raised_hand_with_fingers_splayed_tone3:": "🖐🏽", - ":hand_splayed_tone4:": "🖐🏾", - ":raised_hand_with_fingers_splayed_tone4:": "🖐🏾", - ":hand_splayed_tone5:": "🖐🏿", - ":raised_hand_with_fingers_splayed_tone5:": "🖐🏿", - ":middle_finger_tone1:": "🖕🏻", - ":reversed_hand_with_middle_finger_extended_tone1:": "🖕🏻", - ":middle_finger_tone2:": "🖕🏼", - ":reversed_hand_with_middle_finger_extended_tone2:": "🖕🏼", - ":middle_finger_tone3:": "🖕🏽", - ":reversed_hand_with_middle_finger_extended_tone3:": "🖕🏽", - ":middle_finger_tone4:": "🖕🏾", - ":reversed_hand_with_middle_finger_extended_tone4:": "🖕🏾", - ":middle_finger_tone5:": "🖕🏿", - ":reversed_hand_with_middle_finger_extended_tone5:": "🖕🏿", - ":vulcan_tone1:": "🖖🏻", - ":raised_hand_with_part_between_middle_and_ring_fingers_tone1:": "🖖🏻", - ":vulcan_tone2:": "🖖🏼", - ":raised_hand_with_part_between_middle_and_ring_fingers_tone2:": "🖖🏼", - ":vulcan_tone3:": "🖖🏽", - ":raised_hand_with_part_between_middle_and_ring_fingers_tone3:": "🖖🏽", - ":vulcan_tone4:": "🖖🏾", - ":raised_hand_with_part_between_middle_and_ring_fingers_tone4:": "🖖🏾", - ":vulcan_tone5:": "🖖🏿", - ":raised_hand_with_part_between_middle_and_ring_fingers_tone5:": "🖖🏿", - ":family_mmb:": "👨‍👨‍👦", - ":family_mmbb:": "👨‍👨‍👦‍👦", - ":family_mmg:": "👨‍👨‍👧", - ":family_mmgb:": "👨‍👨‍👧‍👦", - ":family_mmgg:": "👨‍👨‍👧‍👧", - ":family_mwbb:": "👨‍👩‍👧‍👦", - ":family_mwg:": "👨‍👩‍👧", - ":family_mwgb:": "👨‍👩‍👧‍👦", - ":family_mwgg:": "👨‍👩‍👧‍👧", - ":family_wwb:": "👩‍👩‍👦", - ":family_wwbb:": "👩‍👩‍👦‍👦", - ":family_wwg:": "👩‍👩‍👧", - ":family_wwgb:": "👩‍👩‍👧‍👦", - ":family_wwgg:": "👩‍👩‍👧‍👧", - ":couple_ww:": "👭", - ":couple_with_heart_ww:": "👩‍❤️‍👩", - ":couple_mm:": "👬", - ":couple_with_heart_mm:": "👨‍❤️‍👨", - ":kiss_ww:": "👩‍❤️‍💋‍👩", - ":couplekiss_ww:": "👩‍❤️‍💋‍👩", - ":kiss_mm:": "👨‍❤️‍💋‍👨", - ":couplekiss_mm:": "👨‍❤️‍💋‍👨", - ":tone1:": "🏻", - ":tone2:": "🏼", - ":tone3:": "🏽", - ":tone4:": "🏾", - ":tone5:": "🏿", - ":asterisk:": "ℍ", - ":keycap_asterisk:": "ℍ", - ":eject:": "⏏", - ":eject_symbol:": "⏏", - ":track_next:": "⏭", - ":next_track:": "⏭", - ":track_previous:": "⏮", - ":previous_track:": "⏮", - ":play_pause:": "⏯", - ":eye_in_speech_bubble:": "👁🗨", - ":stopwatch:": "⏱", - ":timer:": "⏲", - ":timer_clock:": "⏲", - ":pause_button:": "⏸", - ":double_vertical_bar:": "⏸", - ":stop_button:": "⏹", - ":record_button:": "⏺", - ":umbrella2:": "☂", - ":snowman2:": "☃", - ":comet:": "☄", - ":shamrock:": "☘", - ":skull_crossbones:": "☠", - ":skull_and_crossbones:": "☠", - ":radioactive:": "☢", - ":radioactive_sign:": "☢", - ":biohazard:": "☣", - ":biohazard_sign:": "☣", - ":orthodox_cross:": "☦", - ":star_and_crescent:": "☪", - ":peace:": "☮", - ":peace_symbol:": "☮", - ":yin_yang:": "☯", - ":wheel_of_dharma:": "☸", - ":frowning2:": "☹", - ":white_frowning_face:": "☹", - ":hammer_pick:": "⚒", - ":hammer_and_pick:": "⚒", - ":crossed_swords:": "⚔", - ":scales:": "⚖", - ":alembic:": "⚗", - ":gear:": "⚙", - ":atom:": "⚛", - ":atom_symbol:": "⚛", - ":fleurdelis:": "⚜", - ":coffin:": "⚰", - ":urn:": "⚱", - ":funeral_urn:": "⚱", - ":thunder_cloud_rain:": "⛈", - ":thunder_cloud_and_rain:": "⛈", - ":pick:": "⛏", - ":helmet_with_cross:": "⛑", - ":helmet_with_white_cross:": "⛑", - ":chains:": "⛓", - ":shinto_shrine:": "⛩", - ":mountain:": "⛰", - ":beach_umbrella:": "⛱", - ":umbrella_on_ground:": "⛱", - ":ferry:": "⛴", - ":skier:": "⛷", - ":ice_skate:": "⛸", - ":basketball_player:": "⛹", - ":person_with_ball:": "⛹", - ":star_of_david:": "✡", - ":heart_exclamation:": "❣", - ":heavy_heart_exclamation_mark_ornament:": "❣", - ":white_sun_small_cloud:": "🌤", - ":white_sun_with_small_cloud:": "🌤", - ":white_sun_cloud:": "🌥", - ":white_sun_behind_cloud:": "🌥", - ":white_sun_rain_cloud:": "🌦", - ":white_sun_behind_cloud_with_rain:": "🌦", - ":mouse_three_button:": "🖱", - ":three_button_mouse:": "🖱", - ":santa_tone1:": "🎅🏻", - ":santa_tone2:": "🎅🏼", - ":santa_tone3:": "🎅🏽", - ":santa_tone4:": "🎅🏾", - ":santa_tone5:": "🎅🏿", - ":metal_tone1:": "🤘🏻", - ":sign_of_the_horns_tone1:": "🤘🏻", - ":metal_tone2:": "🤘🏼", - ":sign_of_the_horns_tone2:": "🤘🏼", - ":metal_tone3:": "🤘🏽", - ":sign_of_the_horns_tone3:": "🤘🏽", - ":metal_tone4:": "🤘🏾", - ":sign_of_the_horns_tone4:": "🤘🏾", - ":metal_tone5:": "🤘🏿", - ":sign_of_the_horns_tone5:": "🤘🏿", - ":lifter_tone1:": "🏋🏻", - ":weight_lifter_tone1:": "🏋🏻", - ":lifter_tone2:": "🏋🏼", - ":weight_lifter_tone2:": "🏋🏼", - ":lifter_tone3:": "🏋🏽", - ":weight_lifter_tone3:": "🏋🏽", - ":lifter_tone4:": "🏋🏾", - ":weight_lifter_tone4:": "🏋🏾", - ":lifter_tone5:": "🏋🏿", - ":weight_lifter_tone5:": "🏋🏿", - ":basketball_player_tone1:": "⛹🏻", - ":person_with_ball_tone1:": "⛹🏻", - ":basketball_player_tone2:": "⛹🏼", - ":person_with_ball_tone2:": "⛹🏼", - ":basketball_player_tone3:": "⛹🏽", - ":person_with_ball_tone3:": "⛹🏽", - ":basketball_player_tone4:": "⛹🏾", - ":person_with_ball_tone4:": "⛹🏾", - ":basketball_player_tone5:": "⛹🏿", - ":person_with_ball_tone5:": "⛹🏿", - ":upside_down:": "🙃", - ":upside_down_face:": "🙃", - ":money_mouth:": "🤑", - ":money_mouth_face:": "🤑", - ":nerd:": "🤓", - ":nerd_face:": "🤓", - ":hugging:": "🤗", - ":hugging_face:": "🤗", - ":rolling_eyes:": "🙄", - ":face_with_rolling_eyes:": "🙄", - ":thinking:": "🤔", - ":thinking_face:": "🤔", - ":zipper_mouth:": "🤐", - ":zipper_mouth_face:": "🤐", - ":thermometer_face:": "🤒", - ":face_with_thermometer:": "🤒", - ":head_bandage:": "🤕", - ":face_with_head_bandage:": "🤕", - ":robot:": "🤖", - ":robot_face:": "🤖", - ":lion_face:": "🦁", - ":lion:": "🦁", - ":unicorn:": "🦄", - ":unicorn_face:": "🦄", - ":scorpion:": "🦂", - ":crab:": "🦀", - ":turkey:": "🦃", - ":cheese:": "🧀", - ":cheese_wedge:": "🧀", - ":hotdog:": "🌭", - ":hot_dog:": "🌭", - ":taco:": "🌮", - ":burrito:": "🌯", - ":popcorn:": "🍿", - ":champagne:": "🍾", - ":bottle_with_popping_cork:": "🍾", - ":bow_and_arrow:": "🏹", - ":archery:": "🏹", - ":amphora:": "🏺", - ":place_of_worship:": "🛐", - ":worship_symbol:": "🛐", - ":kaaba:": "🕋", - ":mosque:": "🕌", - ":synagogue:": "🕍", - ":menorah:": "🕎", - ":prayer_beads:": "📿", - ":cricket:": "🏏", - ":cricket_bat_ball:": "🏏", - ":volleyball:": "🏐", - ":field_hockey:": "🏑", - ":hockey:": "🏒", - ":ping_pong:": "🏓", - ":table_tennis:": "🏓", - ":badminton:": "🏸", - ":flag_ax:": "🇦🇽", - ":ax:": "🇦🇽", - ":flag_ta:": "🇹🇦", - ":ta:": "🇹🇦", - ":flag_io:": "🇮🇴", - ":io:": "🇮🇴", - ":flag_bq:": "🇧🇶", - ":bq:": "🇧🇶", - ":flag_cx:": "🇨🇽", - ":cx:": "🇨🇽", - ":flag_cc:": "🇨🇨", - ":cc:": "🇨🇨", - ":flag_gg:": "🇬🇬", - ":gg:": "🇬🇬", - ":flag_im:": "🇮🇲", - ":im:": "🇮🇲", - ":flag_yt:": "🇾🇹", - ":yt:": "🇾🇹", - ":flag_nf:": "🇳🇫", - ":nf:": "🇳🇫", - ":flag_pn:": "🇵🇳", - ":pn:": "🇵🇳", - ":flag_bl:": "🇧🇱", - ":bl:": "🇧🇱", - ":flag_pm:": "🇵🇲", - ":pm:": "🇵🇲", - ":flag_gs:": "🇬🇸", - ":gs:": "🇬🇸", - ":flag_tk:": "🇹🇰", - ":tk:": "🇹🇰", - ":flag_bv:": "🇧🇻", - ":bv:": "🇧🇻", - ":flag_hm:": "🇭🇲", - ":hm:": "🇭🇲", - ":flag_sj:": "🇸🇯", - ":sj:": "🇸🇯", - ":flag_um:": "🇺🇲", - ":um:": "🇺🇲", - ":flag_ic:": "🇮🇨", - ":ic:": "🇮🇨", - ":flag_ea:": "🇪🇦", - ":ea:": "🇪🇦", - ":flag_cp:": "🇨🇵", - ":cp:": "🇨🇵", - ":flag_dg:": "🇩🇬", - ":dg:": "🇩🇬", - ":flag_as:": "🇦🇸", - ":as:": "🇦🇸", - ":flag_aq:": "🇦🇶", - ":aq:": "🇦🇶", - ":flag_vg:": "🇻🇬", - ":vg:": "🇻🇬", - ":flag_ck:": "🇨🇰", - ":ck:": "🇨🇰", - ":flag_cw:": "🇨🇼", - ":cw:": "🇨🇼", - ":flag_eu:": "🇪🇺", - ":eu:": "🇪🇺", - ":flag_gf:": "🇬🇫", - ":gf:": "🇬🇫", - ":flag_tf:": "🇹🇫", - ":tf:": "🇹🇫", - ":flag_gp:": "🇬🇵", - ":gp:": "🇬🇵", - ":flag_mq:": "🇲🇶", - ":mq:": "🇲🇶", - ":flag_mp:": "🇲🇵", - ":mp:": "🇲🇵", - ":flag_re:": "🇷🇪", - ":re:": "🇷🇪", - ":flag_sx:": "🇸🇽", - ":sx:": "🇸🇽", - ":flag_ss:": "🇸🇸", - ":ss:": "🇸🇸", - ":flag_tc:": "🇹🇨", - ":tc:": "🇹🇨", - ":flag_mf:": "🇲🇫", - ":mf:": "🇲🇫", - ":spy_tone1:": "🕵🏻", - ":sleuth_or_spy_tone1:": "🕵🏻", - ":spy_tone2:": "🕵🏼", - ":sleuth_or_spy_tone2:": "🕵🏼", - ":spy_tone3:": "🕵🏽", - ":sleuth_or_spy_tone3:": "🕵🏽", - ":spy_tone4:": "🕵🏾", - ":sleuth_or_spy_tone4:": "🕵🏾", - ":spy_tone5:": "🕵🏿", - ":sleuth_or_spy_tone5:": "🕵🏿", - ":drum:": "🥁", - ":drum_with_drumsticks:": "🥁", - ":shrimp:": "🦐", - ":squid:": "🦑", - ":egg:": "🥚", - ":milk:": "🥛", - ":glass_of_milk:": "🥛", - ":peanuts:": "🥜", - ":shelled_peanut:": "🥜", - ":kiwi:": "🥝", - ":kiwifruit:": "🥝", - ":pancakes:": "🥞", - ":regional_indicator_w:": "🇼", - ":regional_indicator_v:": "🇻", - ":regional_indicator_u:": "🇺", - ":regional_indicator_t:": "🇹", - ":regional_indicator_s:": "🇸", - ":regional_indicator_r:": "🇷", - ":regional_indicator_q:": "🇶", - ":regional_indicator_p:": "🇵", - ":regional_indicator_o:": "🇴", - ":regional_indicator_n:": "🇳", - ":regional_indicator_m:": "🇲", - ":regional_indicator_l:": "🇱", - ":regional_indicator_k:": "🇰", - ":regional_indicator_j:": "🇯", - ":regional_indicator_i:": "🇮", - ":regional_indicator_h:": "🇭", - ":regional_indicator_g:": "🇬", - ":regional_indicator_f:": "🇫", - ":regional_indicator_e:": "🇪", - ":regional_indicator_d:": "🇩", - ":regional_indicator_c:": "🇨", - ":regional_indicator_b:": "🇧", - ":regional_indicator_a:": "🇦", - ":digit_nine:": "9", - ":digit_eight:": "8", - ":digit_seven:": "7", - ":digit_six:": "6", - ":digit_five:": "5", - ":digit_four:": "4", - ":digit_three:": "3", - ":digit_two:": "2", - ":digit_one:": "1", - ":digit_zero:": "0", - ":men_with_bunny_ears_partying:": "👯", - ":women_with_bunny_ears_partying:": "👯", - ":snowboarder_tone1:": "🏂🏻", - ":snowboarder_light_skin_tone:": "🏂🏻", - ":man_golfing:": "🏌", - ":man_golfing_tone1:": "🏌🏻", - ":man_golfing_light_skin_tone:": "🏌🏻", - ":man_golfing_tone2:": "🏌🏼", - ":man_golfing_medium_light_skin_tone:": "🏌🏼", - ":man_golfing_tone3:": "🏌🏽", - ":man_golfing_medium_skin_tone:": "🏌🏽", - ":man_golfing_tone4:": "🏌🏾", - ":man_golfing_medium_dark_skin_tone:": "🏌🏾", - ":man_golfing_tone5:": "🏌🏿", - ":man_golfing_dark_skin_tone:": "🏌🏿", - ":woman_golfing:": "🏌", - ":woman_golfing_tone1:": "🏌🏻", - ":woman_golfing_light_skin_tone:": "🏌🏻", - ":woman_golfing_tone2:": "🏌🏼", - ":woman_golfing_medium_light_skin_tone:": "🏌🏼", - ":woman_golfing_tone3:": "🏌🏽", - ":woman_golfing_medium_skin_tone:": "🏌🏽", - ":woman_golfing_tone4:": "🏌🏾", - ":woman_golfing_medium_dark_skin_tone:": "🏌🏾", - ":woman_golfing_tone5:": "🏌🏿", - ":woman_golfing_dark_skin_tone:": "🏌🏿", - ":men_wrestling:": "🤼", - ":women_wrestling:": "🤼", - ":man_juggling_tone5:": "🤹🏿", - ":man_juggling_dark_skin_tone:": "🤹🏿", - ":man_juggling_tone4:": "🤹🏾", - ":man_juggling_medium_dark_skin_tone:": "🤹🏾", - ":man_juggling_tone3:": "🤹🏽", - ":man_juggling_medium_skin_tone:": "🤹🏽", - ":man_juggling_tone2:": "🤹🏼", - ":man_juggling_medium_light_skin_tone:": "🤹🏼", - ":man_juggling_tone1:": "🤹🏻", - ":man_juggling_light_skin_tone:": "🤹🏻", - ":man_juggling:": "🤹", - ":woman_juggling_tone5:": "🤹🏿", - ":woman_juggling_dark_skin_tone:": "🤹🏿", - ":woman_juggling_tone4:": "🤹🏾", - ":woman_juggling_medium_dark_skin_tone:": "🤹🏾", - ":woman_juggling_tone3:": "🤹🏽", - ":woman_juggling_medium_skin_tone:": "🤹🏽", - ":woman_juggling_tone2:": "🤹🏼", - ":woman_juggling_medium_light_skin_tone:": "🤹🏼", - ":woman_juggling_tone1:": "🤹🏻", - ":woman_juggling_light_skin_tone:": "🤹🏻", - ":woman_juggling:": "🤹", - ":man_playing_handball_tone5:": "🤾🏿", - ":man_playing_handball_dark_skin_tone:": "🤾🏿", - ":man_playing_handball_tone4:": "🤾🏾", - ":man_playing_handball_medium_dark_skin_tone:": "🤾🏾", - ":man_playing_handball_tone3:": "🤾🏽", - ":man_playing_handball_medium_skin_tone:": "🤾🏽", - ":man_playing_handball_tone2:": "🤾🏼", - ":man_playing_handball_medium_light_skin_tone:": "🤾🏼", - ":man_playing_handball_tone1:": "🤾🏻", - ":man_playing_handball_light_skin_tone:": "🤾🏻", - ":man_playing_handball:": "🤾", - ":woman_playing_handball_tone5:": "🤾🏿", - ":woman_playing_handball_dark_skin_tone:": "🤾🏿", - ":woman_playing_handball_tone4:": "🤾🏾", - ":woman_playing_handball_medium_dark_skin_tone:": "🤾🏾", - ":woman_playing_handball_tone3:": "🤾🏽", - ":woman_playing_handball_medium_skin_tone:": "🤾🏽", - ":woman_playing_handball_tone2:": "🤾🏼", - ":woman_playing_handball_medium_light_skin_tone:": "🤾🏼", - ":woman_playing_handball_tone1:": "🤾🏻", - ":woman_playing_handball_light_skin_tone:": "🤾🏻", - ":woman_playing_handball:": "🤾", - ":man_playing_water_polo_tone5:": "🤽🏿", - ":man_playing_water_polo_dark_skin_tone:": "🤽🏿", - ":man_playing_water_polo_tone4:": "🤽🏾", - ":man_playing_water_polo_medium_dark_skin_tone:": "🤽🏾", - ":man_playing_water_polo_tone3:": "🤽🏽", - ":man_playing_water_polo_medium_skin_tone:": "🤽🏽", - ":man_playing_water_polo_tone2:": "🤽🏼", - ":man_playing_water_polo_medium_light_skin_tone:": "🤽🏼", - ":man_playing_water_polo_tone1:": "🤽🏻", - ":man_playing_water_polo_light_skin_tone:": "🤽🏻", - ":man_playing_water_polo:": "🤽", - ":woman_playing_water_polo_tone5:": "🤽🏿", - ":woman_playing_water_polo_dark_skin_tone:": "🤽🏿", - ":woman_playing_water_polo_tone4:": "🤽🏾", - ":woman_playing_water_polo_medium_dark_skin_tone:": "🤽🏾", - ":woman_playing_water_polo_tone3:": "🤽🏽", - ":woman_playing_water_polo_medium_skin_tone:": "🤽🏽", - ":woman_playing_water_polo_tone2:": "🤽🏼", - ":woman_playing_water_polo_medium_light_skin_tone:": "🤽🏼", - ":woman_playing_water_polo_tone1:": "🤽🏻", - ":woman_playing_water_polo_light_skin_tone:": "🤽🏻", - ":woman_playing_water_polo:": "🤽", - ":man_cartwheeling_tone5:": "🤸🏿", - ":man_cartwheeling_dark_skin_tone:": "🤸🏿", - ":man_cartwheeling_tone4:": "🤸🏾", - ":man_cartwheeling_medium_dark_skin_tone:": "🤸🏾", - ":man_cartwheeling_tone3:": "🤸🏽", - ":man_cartwheeling_medium_skin_tone:": "🤸🏽", - ":man_cartwheeling_tone2:": "🤸🏼", - ":man_cartwheeling_medium_light_skin_tone:": "🤸🏼", - ":man_cartwheeling_tone1:": "🤸🏻", - ":man_cartwheeling_light_skin_tone:": "🤸🏻", - ":man_cartwheeling:": "🤸", - ":woman_cartwheeling_tone5:": "🤸🏿", - ":woman_cartwheeling_dark_skin_tone:": "🤸🏿", - ":woman_cartwheeling_tone4:": "🤸🏾", - ":woman_cartwheeling_medium_dark_skin_tone:": "🤸🏾", - ":woman_cartwheeling_tone3:": "🤸🏽", - ":woman_cartwheeling_medium_skin_tone:": "🤸🏽", - ":woman_cartwheeling_tone2:": "🤸🏼", - ":woman_cartwheeling_medium_light_skin_tone:": "🤸🏼", - ":woman_cartwheeling_tone1:": "🤸🏻", - ":woman_cartwheeling_light_skin_tone:": "🤸🏻", - ":woman_cartwheeling:": "🤸", - ":man_walking_tone5:": "🚶🏿", - ":man_walking_dark_skin_tone:": "🚶🏿", - ":man_walking_tone4:": "🚶🏾", - ":man_walking_medium_dark_skin_tone:": "🚶🏾", - ":man_walking_tone3:": "🚶🏽", - ":man_walking_medium_skin_tone:": "🚶🏽", - ":man_walking_tone2:": "🚶🏼", - ":man_walking_medium_light_skin_tone:": "🚶🏼", - ":man_walking_tone1:": "🚶🏻", - ":man_walking_light_skin_tone:": "🚶🏻", - ":man_walking:": "🚶", - ":woman_walking_tone5:": "🚶🏿", - ":woman_walking_dark_skin_tone:": "🚶🏿", - ":woman_walking_tone4:": "🚶🏾", - ":woman_walking_medium_dark_skin_tone:": "🚶🏾", - ":woman_walking_tone3:": "🚶🏽", - ":woman_walking_medium_skin_tone:": "🚶🏽", - ":woman_walking_tone2:": "🚶🏼", - ":woman_walking_medium_light_skin_tone:": "🚶🏼", - ":woman_walking_tone1:": "🚶🏻", - ":woman_walking_light_skin_tone:": "🚶🏻", - ":woman_walking:": "🚶", - ":man_mountain_biking_tone5:": "🚵🏿", - ":man_mountain_biking_dark_skin_tone:": "🚵🏿", - ":man_mountain_biking_tone4:": "🚵🏾", - ":man_mountain_biking_medium_dark_skin_tone:": "🚵🏾", - ":man_mountain_biking_tone3:": "🚵🏽", - ":man_mountain_biking_medium_skin_tone:": "🚵🏽", - ":man_mountain_biking_tone2:": "🚵🏼", - ":man_mountain_biking_medium_light_skin_tone:": "🚵🏼", - ":man_mountain_biking_tone1:": "🚵🏻", - ":man_mountain_biking_light_skin_tone:": "🚵🏻", - ":man_mountain_biking:": "🚵", - ":woman_mountain_biking_tone5:": "🚵🏿", - ":woman_mountain_biking_dark_skin_tone:": "🚵🏿", - ":woman_mountain_biking_tone4:": "🚵🏾", - ":woman_mountain_biking_medium_dark_skin_tone:": "🚵🏾", - ":woman_mountain_biking_tone3:": "🚵🏽", - ":woman_mountain_biking_medium_skin_tone:": "🚵🏽", - ":woman_mountain_biking_tone2:": "🚵🏼", - ":woman_mountain_biking_medium_light_skin_tone:": "🚵🏼", - ":woman_mountain_biking_tone1:": "🚵🏻", - ":woman_mountain_biking_light_skin_tone:": "🚵🏻", - ":woman_mountain_biking:": "🚵", - ":man_biking_tone5:": "🚴🏿", - ":man_biking_dark_skin_tone:": "🚴🏿", - ":man_biking_tone4:": "🚴🏾", - ":man_biking_medium_dark_skin_tone:": "🚴🏾", - ":man_biking_tone3:": "🚴🏽", - ":man_biking_medium_skin_tone:": "🚴🏽", - ":man_biking_tone2:": "🚴🏼", - ":man_biking_medium_light_skin_tone:": "🚴🏼", - ":man_biking_tone1:": "🚴🏻", - ":man_biking_light_skin_tone:": "🚴🏻", - ":man_biking:": "🚴", - ":woman_biking_tone5:": "🚴🏿", - ":woman_biking_dark_skin_tone:": "🚴🏿", - ":woman_biking_tone4:": "🚴🏾", - ":woman_biking_medium_dark_skin_tone:": "🚴🏾", - ":woman_biking_tone3:": "🚴🏽", - ":woman_biking_medium_skin_tone:": "🚴🏽", - ":woman_biking_tone2:": "🚴🏼", - ":woman_biking_medium_light_skin_tone:": "🚴🏼", - ":woman_biking_tone1:": "🚴🏻", - ":woman_biking_light_skin_tone:": "🚴🏻", - ":woman_biking:": "🚴", - ":man_rowing_boat_tone5:": "🚣🏿", - ":man_rowing_boat_dark_skin_tone:": "🚣🏿", - ":man_rowing_boat_tone4:": "🚣🏾", - ":man_rowing_boat_medium_dark_skin_tone:": "🚣🏾", - ":man_rowing_boat_tone3:": "🚣🏽", - ":man_rowing_boat_medium_skin_tone:": "🚣🏽", - ":man_rowing_boat_tone2:": "🚣🏼", - ":man_rowing_boat_medium_light_skin_tone:": "🚣🏼", - ":man_rowing_boat_tone1:": "🚣🏻", - ":man_rowing_boat_light_skin_tone:": "🚣🏻", - ":man_rowing_boat:": "🚣", - ":woman_rowing_boat_tone5:": "🚣🏿", - ":woman_rowing_boat_dark_skin_tone:": "🚣🏿", - ":woman_rowing_boat_tone4:": "🚣🏾", - ":woman_rowing_boat_medium_dark_skin_tone:": "🚣🏾", - ":woman_rowing_boat_tone3:": "🚣🏽", - ":woman_rowing_boat_medium_skin_tone:": "🚣🏽", - ":woman_rowing_boat_tone2:": "🚣🏼", - ":woman_rowing_boat_medium_light_skin_tone:": "🚣🏼", - ":woman_rowing_boat_tone1:": "🚣🏻", - ":woman_rowing_boat_light_skin_tone:": "🚣🏻", - ":woman_rowing_boat:": "🚣", - ":man_lifting_weights_tone5:": "🏋🏿", - ":man_lifting_weights_dark_skin_tone:": "🏋🏿", - ":man_lifting_weights_tone4:": "🏋🏾", - ":man_lifting_weights_medium_dark_skin_tone:": "🏋🏾", - ":man_lifting_weights_tone3:": "🏋🏽", - ":man_lifting_weights_medium_skin_tone:": "🏋🏽", - ":man_lifting_weights_tone2:": "🏋🏼", - ":man_lifting_weights_medium_light_skin_tone:": "🏋🏼", - ":man_lifting_weights_tone1:": "🏋🏻", - ":man_lifting_weights_light_skin_tone:": "🏋🏻", - ":man_lifting_weights:": "🏋", - ":woman_lifting_weights_tone5:": "🏋🏿", - ":woman_lifting_weights_dark_skin_tone:": "🏋🏿", - ":woman_lifting_weights_tone4:": "🏋🏾", - ":woman_lifting_weights_medium_dark_skin_tone:": "🏋🏾", - ":woman_lifting_weights_tone3:": "🏋🏽", - ":woman_lifting_weights_medium_skin_tone:": "🏋🏽", - ":woman_lifting_weights_tone2:": "🏋🏼", - ":woman_lifting_weights_medium_light_skin_tone:": "🏋🏼", - ":woman_lifting_weights_tone1:": "🏋🏻", - ":woman_lifting_weights_light_skin_tone:": "🏋🏻", - ":woman_lifting_weights:": "🏋", - ":man_swimming_tone5:": "🏊🏿", - ":man_swimming_dark_skin_tone:": "🏊🏿", - ":man_swimming_tone4:": "🏊🏾", - ":man_swimming_medium_dark_skin_tone:": "🏊🏾", - ":man_swimming_tone3:": "🏊🏽", - ":man_swimming_medium_skin_tone:": "🏊🏽", - ":man_swimming_tone2:": "🏊🏼", - ":man_swimming_medium_light_skin_tone:": "🏊🏼", - ":man_swimming_tone1:": "🏊🏻", - ":man_swimming_light_skin_tone:": "🏊🏻", - ":man_swimming:": "🏊", - ":woman_swimming_tone5:": "🏊🏿", - ":woman_swimming_dark_skin_tone:": "🏊🏿", - ":woman_swimming_tone4:": "🏊🏾", - ":woman_swimming_medium_dark_skin_tone:": "🏊🏾", - ":woman_swimming_tone3:": "🏊🏽", - ":woman_swimming_medium_skin_tone:": "🏊🏽", - ":woman_swimming_tone2:": "🏊🏼", - ":woman_swimming_medium_light_skin_tone:": "🏊🏼", - ":woman_swimming_tone1:": "🏊🏻", - ":woman_swimming_light_skin_tone:": "🏊🏻", - ":woman_swimming:": "🏊", - ":man_surfing_tone5:": "🏄🏿", - ":man_surfing_dark_skin_tone:": "🏄🏿", - ":man_surfing_tone4:": "🏄🏾", - ":man_surfing_medium_dark_skin_tone:": "🏄🏾", - ":man_surfing_tone3:": "🏄🏽", - ":man_surfing_medium_skin_tone:": "🏄🏽", - ":man_surfing_tone2:": "🏄🏼", - ":man_surfing_medium_light_skin_tone:": "🏄🏼", - ":man_surfing_tone1:": "🏄🏻", - ":man_surfing_light_skin_tone:": "🏄🏻", - ":man_surfing:": "🏄", - ":woman_surfing_tone5:": "🏄🏿", - ":woman_surfing_dark_skin_tone:": "🏄🏿", - ":woman_surfing_tone4:": "🏄🏾", - ":woman_surfing_medium_dark_skin_tone:": "🏄🏾", - ":woman_surfing_tone3:": "🏄🏽", - ":woman_surfing_medium_skin_tone:": "🏄🏽", - ":woman_surfing_tone2:": "🏄🏼", - ":woman_surfing_medium_light_skin_tone:": "🏄🏼", - ":woman_surfing_tone1:": "🏄🏻", - ":woman_surfing_light_skin_tone:": "🏄🏻", - ":woman_surfing:": "🏄", - ":man_running_tone5:": "🏃🏿", - ":man_running_dark_skin_tone:": "🏃🏿", - ":man_running_tone4:": "🏃🏾", - ":man_running_medium_dark_skin_tone:": "🏃🏾", - ":man_running_tone3:": "🏃🏽", - ":man_running_medium_skin_tone:": "🏃🏽", - ":man_running_tone2:": "🏃🏼", - ":man_running_medium_light_skin_tone:": "🏃🏼", - ":man_running_tone1:": "🏃🏻", - ":man_running_light_skin_tone:": "🏃🏻", - ":man_running:": "🏃", - ":woman_running_tone5:": "🏃🏿", - ":woman_running_dark_skin_tone:": "🏃🏿", - ":woman_running_tone4:": "🏃🏾", - ":woman_running_medium_dark_skin_tone:": "🏃🏾", - ":woman_running_tone3:": "🏃🏽", - ":woman_running_medium_skin_tone:": "🏃🏽", - ":woman_running_tone2:": "🏃🏼", - ":woman_running_medium_light_skin_tone:": "🏃🏼", - ":woman_running_tone1:": "🏃🏻", - ":woman_running_light_skin_tone:": "🏃🏻", - ":woman_running:": "🏃", - ":man_bouncing_ball_tone5:": "𓢞", - ":man_bouncing_ball_dark_skin_tone:": "𓢞", - ":man_bouncing_ball_tone4:": "𒢞", - ":man_bouncing_ball_medium_dark_skin_tone:": "𒢞", - ":man_bouncing_ball_tone3:": "𑢞", - ":man_bouncing_ball_medium_skin_tone:": "𑢞", - ":man_bouncing_ball_tone2:": "𐢞", - ":man_bouncing_ball_medium_light_skin_tone:": "𐢞", - ":man_bouncing_ball_tone1:": "", - ":man_bouncing_ball_light_skin_tone:": "", - ":man_bouncing_ball:": "䴻", - ":woman_bouncing_ball_tone5:": "𓢜", - ":woman_bouncing_ball_dark_skin_tone:": "𓢜", - ":woman_bouncing_ball_tone4:": "𒢜", - ":woman_bouncing_ball_medium_dark_skin_tone:": "𒢜", - ":woman_bouncing_ball_tone3:": "𑢜", - ":woman_bouncing_ball_medium_skin_tone:": "𑢜", - ":woman_bouncing_ball_tone2:": "𐢜", - ":woman_bouncing_ball_medium_light_skin_tone:": "𐢜", - ":woman_bouncing_ball_tone1:": "", - ":woman_bouncing_ball_light_skin_tone:": "", - ":woman_bouncing_ball:": "䴹", - ":man_shrugging_tone5:": "🤷🏿", - ":man_shrugging_dark_skin_tone:": "🤷🏿", - ":man_shrugging_tone4:": "🤷🏾", - ":man_shrugging_medium_dark_skin_tone:": "🤷🏾", - ":man_shrugging_tone3:": "🤷🏽", - ":man_shrugging_medium_skin_tone:": "🤷🏽", - ":man_shrugging_tone2:": "🤷🏼", - ":man_shrugging_medium_light_skin_tone:": "🤷🏼", - ":man_shrugging_tone1:": "🤷🏻", - ":man_shrugging_light_skin_tone:": "🤷🏻", - ":man_shrugging:": "🤷", - ":woman_shrugging_tone5:": "🤷🏿", - ":woman_shrugging_dark_skin_tone:": "🤷🏿", - ":woman_shrugging_tone4:": "🤷🏾", - ":woman_shrugging_medium_dark_skin_tone:": "🤷🏾", - ":woman_shrugging_tone3:": "🤷🏽", - ":woman_shrugging_medium_skin_tone:": "🤷🏽", - ":woman_shrugging_tone2:": "🤷🏼", - ":woman_shrugging_medium_light_skin_tone:": "🤷🏼", - ":woman_shrugging_tone1:": "🤷🏻", - ":woman_shrugging_light_skin_tone:": "🤷🏻", - ":woman_shrugging:": "🤷", - ":man_facepalming_tone5:": "🤦🏿", - ":man_facepalming_dark_skin_tone:": "🤦🏿", - ":man_facepalming_tone4:": "🤦🏾", - ":man_facepalming_medium_dark_skin_tone:": "🤦🏾", - ":man_facepalming_tone3:": "🤦🏽", - ":man_facepalming_medium_skin_tone:": "🤦🏽", - ":man_facepalming_tone2:": "🤦🏼", - ":man_facepalming_medium_light_skin_tone:": "🤦🏼", - ":man_facepalming_tone1:": "🤦🏻", - ":man_facepalming_light_skin_tone:": "🤦🏻", - ":man_facepalming:": "🤦", - ":woman_facepalming_tone5:": "🤦🏿", - ":woman_facepalming_dark_skin_tone:": "🤦🏿", - ":woman_facepalming_tone4:": "🤦🏾", - ":woman_facepalming_medium_dark_skin_tone:": "🤦🏾", - ":woman_facepalming_tone3:": "🤦🏽", - ":woman_facepalming_medium_skin_tone:": "🤦🏽", - ":woman_facepalming_tone2:": "🤦🏼", - ":woman_facepalming_medium_light_skin_tone:": "🤦🏼", - ":woman_facepalming_tone1:": "🤦🏻", - ":woman_facepalming_light_skin_tone:": "🤦🏻", - ":woman_facepalming:": "🤦", - ":man_pouting_tone5:": "🙎🏿", - ":man_pouting_dark_skin_tone:": "🙎🏿", - ":man_pouting_tone4:": "🙎🏾", - ":man_pouting_medium_dark_skin_tone:": "🙎🏾", - ":man_pouting_tone3:": "🙎🏽", - ":man_pouting_medium_skin_tone:": "🙎🏽", - ":man_pouting_tone2:": "🙎🏼", - ":man_pouting_medium_light_skin_tone:": "🙎🏼", - ":man_pouting_tone1:": "🙎🏻", - ":man_pouting_light_skin_tone:": "🙎🏻", - ":man_pouting:": "🙎", - ":woman_pouting_tone5:": "🙎🏿", - ":woman_pouting_dark_skin_tone:": "🙎🏿", - ":woman_pouting_tone4:": "🙎🏾", - ":woman_pouting_medium_dark_skin_tone:": "🙎🏾", - ":woman_pouting_tone3:": "🙎🏽", - ":woman_pouting_medium_skin_tone:": "🙎🏽", - ":woman_pouting_tone2:": "🙎🏼", - ":woman_pouting_medium_light_skin_tone:": "🙎🏼", - ":woman_pouting_tone1:": "🙎🏻", - ":woman_pouting_light_skin_tone:": "🙎🏻", - ":woman_pouting:": "🙎", - ":man_frowning_tone5:": "🙍🏿", - ":man_frowning_dark_skin_tone:": "🙍🏿", - ":man_frowning_tone4:": "🙍🏾", - ":man_frowning_medium_dark_skin_tone:": "🙍🏾", - ":man_frowning_tone3:": "🙍🏽", - ":man_frowning_medium_skin_tone:": "🙍🏽", - ":man_frowning_tone2:": "🙍🏼", - ":man_frowning_medium_light_skin_tone:": "🙍🏼", - ":man_frowning_tone1:": "🙍🏻", - ":man_frowning_light_skin_tone:": "🙍🏻", - ":man_frowning:": "🙍", - ":woman_frowning_tone5:": "🙍🏿", - ":woman_frowning_dark_skin_tone:": "🙍🏿", - ":woman_frowning_tone4:": "🙍🏾", - ":woman_frowning_medium_dark_skin_tone:": "🙍🏾", - ":woman_frowning_tone3:": "🙍🏽", - ":woman_frowning_medium_skin_tone:": "🙍🏽", - ":woman_frowning_tone2:": "🙍🏼", - ":woman_frowning_medium_light_skin_tone:": "🙍🏼", - ":woman_frowning_tone1:": "🙍🏻", - ":woman_frowning_light_skin_tone:": "🙍🏻", - ":woman_frowning:": "🙍", - ":man_raising_hand_tone5:": "🙋🏿", - ":man_raising_hand_dark_skin_tone:": "🙋🏿", - ":man_raising_hand_tone4:": "🙋🏾", - ":man_raising_hand_medium_dark_skin_tone:": "🙋🏾", - ":man_raising_hand_tone3:": "🙋🏽", - ":man_raising_hand_medium_skin_tone:": "🙋🏽", - ":man_raising_hand_tone2:": "🙋🏼", - ":man_raising_hand_medium_light_skin_tone:": "🙋🏼", - ":man_raising_hand_tone1:": "🙋🏻", - ":man_raising_hand_light_skin_tone:": "🙋🏻", - ":man_raising_hand:": "🙋", - ":woman_raising_hand_tone5:": "🙋🏿", - ":woman_raising_hand_dark_skin_tone:": "🙋🏿", - ":woman_raising_hand_tone4:": "🙋🏾", - ":woman_raising_hand_medium_dark_skin_tone:": "🙋🏾", - ":woman_raising_hand_tone3:": "🙋🏽", - ":woman_raising_hand_medium_skin_tone:": "🙋🏽", - ":woman_raising_hand_tone2:": "🙋🏼", - ":woman_raising_hand_medium_light_skin_tone:": "🙋🏼", - ":woman_raising_hand_tone1:": "🙋🏻", - ":woman_raising_hand_light_skin_tone:": "🙋🏻", - ":woman_raising_hand:": "🙋", - ":man_bowing_tone5:": "🙇🏿", - ":man_bowing_dark_skin_tone:": "🙇🏿", - ":man_bowing_tone4:": "🙇🏾", - ":man_bowing_medium_dark_skin_tone:": "🙇🏾", - ":man_bowing_tone3:": "🙇🏽", - ":man_bowing_medium_skin_tone:": "🙇🏽", - ":man_bowing_tone2:": "🙇🏼", - ":man_bowing_medium_light_skin_tone:": "🙇🏼", - ":man_bowing_tone1:": "🙇🏻", - ":man_bowing_light_skin_tone:": "🙇🏻", - ":man_bowing:": "🙇", - ":woman_bowing_tone5:": "🙇🏿", - ":woman_bowing_dark_skin_tone:": "🙇🏿", - ":woman_bowing_tone4:": "🙇🏾", - ":woman_bowing_medium_dark_skin_tone:": "🙇🏾", - ":woman_bowing_tone3:": "🙇🏽", - ":woman_bowing_medium_skin_tone:": "🙇🏽", - ":woman_bowing_tone2:": "🙇🏼", - ":woman_bowing_medium_light_skin_tone:": "🙇🏼", - ":woman_bowing_tone1:": "🙇🏻", - ":woman_bowing_light_skin_tone:": "🙇🏻", - ":woman_bowing:": "🙇", - ":man_gesturing_ok_tone5:": "🙆🏿", - ":man_gesturing_ok_dark_skin_tone:": "🙆🏿", - ":man_gesturing_ok_tone4:": "🙆🏾", - ":man_gesturing_ok_medium_dark_skin_tone:": "🙆🏾", - ":man_gesturing_ok_tone3:": "🙆🏽", - ":man_gesturing_ok_medium_skin_tone:": "🙆🏽", - ":man_gesturing_ok_tone2:": "🙆🏼", - ":man_gesturing_ok_medium_light_skin_tone:": "🙆🏼", - ":man_gesturing_ok_tone1:": "🙆🏻", - ":man_gesturing_ok_light_skin_tone:": "🙆🏻", - ":man_gesturing_ok:": "🙆", - ":woman_gesturing_ok_tone5:": "🙆🏿", - ":woman_gesturing_ok_dark_skin_tone:": "🙆🏿", - ":woman_gesturing_ok_tone4:": "🙆🏾", - ":woman_gesturing_ok_medium_dark_skin_tone:": "🙆🏾", - ":woman_gesturing_ok_tone3:": "🙆🏽", - ":woman_gesturing_ok_medium_skin_tone:": "🙆🏽", - ":woman_gesturing_ok_tone2:": "🙆🏼", - ":woman_gesturing_ok_medium_light_skin_tone:": "🙆🏼", - ":woman_gesturing_ok_tone1:": "🙆🏻", - ":woman_gesturing_ok_light_skin_tone:": "🙆🏻", - ":woman_gesturing_ok:": "🙆", - ":man_gesturing_no_tone5:": "🙅🏿", - ":man_gesturing_no_dark_skin_tone:": "🙅🏿", - ":man_gesturing_no_tone4:": "🙅🏾", - ":man_gesturing_no_medium_dark_skin_tone:": "🙅🏾", - ":man_gesturing_no_tone3:": "🙅🏽", - ":man_gesturing_no_medium_skin_tone:": "🙅🏽", - ":man_gesturing_no_tone2:": "🙅🏼", - ":man_gesturing_no_medium_light_skin_tone:": "🙅🏼", - ":man_gesturing_no_tone1:": "🙅🏻", - ":man_gesturing_no_light_skin_tone:": "🙅🏻", - ":man_gesturing_no:": "🙅", - ":woman_gesturing_no_tone5:": "🙅🏿", - ":woman_gesturing_no_dark_skin_tone:": "🙅🏿", - ":woman_gesturing_no_tone4:": "🙅🏾", - ":woman_gesturing_no_medium_dark_skin_tone:": "🙅🏾", - ":woman_gesturing_no_tone3:": "🙅🏽", - ":woman_gesturing_no_medium_skin_tone:": "🙅🏽", - ":woman_gesturing_no_tone2:": "🙅🏼", - ":woman_gesturing_no_medium_light_skin_tone:": "🙅🏼", - ":woman_gesturing_no_tone1:": "🙅🏻", - ":woman_gesturing_no_light_skin_tone:": "🙅🏻", - ":woman_gesturing_no:": "🙅", - ":man_getting_haircut_tone5:": "💇🏿", - ":man_getting_haircut_dark_skin_tone:": "💇🏿", - ":man_getting_haircut_tone4:": "💇🏾", - ":man_getting_haircut_medium_dark_skin_tone:": "💇🏾", - ":man_getting_haircut_tone3:": "💇🏽", - ":man_getting_haircut_medium_skin_tone:": "💇🏽", - ":man_getting_haircut_tone2:": "💇🏼", - ":man_getting_haircut_medium_light_skin_tone:": "💇🏼", - ":man_getting_haircut_tone1:": "💇🏻", - ":man_getting_haircut_light_skin_tone:": "💇🏻", - ":man_getting_haircut:": "💇", - ":woman_getting_haircut_tone5:": "💇🏿", - ":woman_getting_haircut_dark_skin_tone:": "💇🏿", - ":woman_getting_haircut_tone4:": "💇🏾", - ":woman_getting_haircut_medium_dark_skin_tone:": "💇🏾", - ":woman_getting_haircut_tone3:": "💇🏽", - ":woman_getting_haircut_medium_skin_tone:": "💇🏽", - ":woman_getting_haircut_tone2:": "💇🏼", - ":woman_getting_haircut_medium_light_skin_tone:": "💇🏼", - ":woman_getting_haircut_tone1:": "💇🏻", - ":woman_getting_haircut_light_skin_tone:": "💇🏻", - ":woman_getting_haircut:": "💇", - ":man_getting_face_massage_tone5:": "💆🏿", - ":man_getting_face_massage_dark_skin_tone:": "💆🏿", - ":man_getting_face_massage_tone4:": "💆🏾", - ":man_getting_face_massage_medium_dark_skin_tone:": "💆🏾", - ":man_getting_face_massage_tone3:": "💆🏽", - ":man_getting_face_massage_medium_skin_tone:": "💆🏽", - ":man_getting_face_massage_tone2:": "💆🏼", - ":man_getting_face_massage_medium_light_skin_tone:": "💆🏼", - ":man_getting_face_massage_tone1:": "💆🏻", - ":man_getting_face_massage_light_skin_tone:": "💆🏻", - ":man_getting_face_massage:": "💆", - ":woman_getting_face_massage_tone5:": "💆🏿", - ":woman_getting_face_massage_dark_skin_tone:": "💆🏿", - ":woman_getting_face_massage_tone4:": "💆🏾", - ":woman_getting_face_massage_medium_dark_skin_tone:": "💆🏾", - ":woman_getting_face_massage_tone3:": "💆🏽", - ":woman_getting_face_massage_medium_skin_tone:": "💆🏽", - ":woman_getting_face_massage_tone2:": "💆🏼", - ":woman_getting_face_massage_medium_light_skin_tone:": "💆🏼", - ":woman_getting_face_massage_tone1:": "💆🏻", - ":woman_getting_face_massage_light_skin_tone:": "💆🏻", - ":woman_getting_face_massage:": "💆", - ":man_tipping_hand_tone5:": "💁🏿", - ":man_tipping_hand_dark_skin_tone:": "💁🏿", - ":man_tipping_hand_tone4:": "💁🏾", - ":man_tipping_hand_medium_dark_skin_tone:": "💁🏾", - ":man_tipping_hand_tone3:": "💁🏽", - ":man_tipping_hand_medium_skin_tone:": "💁🏽", - ":man_tipping_hand_tone2:": "💁🏼", - ":man_tipping_hand_medium_light_skin_tone:": "💁🏼", - ":man_tipping_hand_tone1:": "💁🏻", - ":man_tipping_hand_light_skin_tone:": "💁🏻", - ":man_tipping_hand:": "💁", - ":woman_tipping_hand_tone5:": "💁🏿", - ":woman_tipping_hand_dark_skin_tone:": "💁🏿", - ":woman_tipping_hand_tone4:": "💁🏾", - ":woman_tipping_hand_medium_dark_skin_tone:": "💁🏾", - ":woman_tipping_hand_tone3:": "💁🏽", - ":woman_tipping_hand_medium_skin_tone:": "💁🏽", - ":woman_tipping_hand_tone2:": "💁🏼", - ":woman_tipping_hand_medium_light_skin_tone:": "💁🏼", - ":woman_tipping_hand_tone1:": "💁🏻", - ":woman_tipping_hand_light_skin_tone:": "💁🏻", - ":woman_tipping_hand:": "💁", - ":blondhaired_man_tone5:": "👱🏿", - ":blondhaired_man_dark_skin_tone:": "👱🏿", - ":blondhaired_man_tone4:": "👱🏾", - ":blondhaired_man_medium_dark_skin_tone:": "👱🏾", - ":blondhaired_man_tone3:": "👱🏽", - ":blondhaired_man_medium_skin_tone:": "👱🏽", - ":blondhaired_man_tone2:": "👱🏼", - ":blondhaired_man_medium_light_skin_tone:": "👱🏼", - ":blondhaired_man_tone1:": "👱🏻", - ":blondhaired_man_light_skin_tone:": "👱🏻", - ":blondhaired_man:": "👱", - ":blondhaired_woman_tone5:": "👱🏿", - ":blondhaired_woman_dark_skin_tone:": "👱🏿", - ":blondhaired_woman_tone4:": "👱🏾", - ":blondhaired_woman_medium_dark_skin_tone:": "👱🏾", - ":blondhaired_woman_tone3:": "👱🏽", - ":blondhaired_woman_medium_skin_tone:": "👱🏽", - ":blondhaired_woman_tone2:": "👱🏼", - ":blondhaired_woman_medium_light_skin_tone:": "👱🏼", - ":blondhaired_woman_tone1:": "👱🏻", - ":blondhaired_woman_light_skin_tone:": "👱🏻", - ":blondhaired_woman:": "👱", - ":man_wearing_turban_tone5:": "👳🏿", - ":man_wearing_turban_dark_skin_tone:": "👳🏿", - ":man_wearing_turban_tone4:": "👳🏾", - ":man_wearing_turban_medium_dark_skin_tone:": "👳🏾", - ":man_wearing_turban_tone3:": "👳🏽", - ":man_wearing_turban_medium_skin_tone:": "👳🏽", - ":man_wearing_turban_tone2:": "👳🏼", - ":man_wearing_turban_medium_light_skin_tone:": "👳🏼", - ":man_wearing_turban_tone1:": "👳🏻", - ":man_wearing_turban_light_skin_tone:": "👳🏻", - ":man_wearing_turban:": "👳", - ":woman_wearing_turban_tone5:": "👳🏿", - ":woman_wearing_turban_dark_skin_tone:": "👳🏿", - ":woman_wearing_turban_tone4:": "👳🏾", - ":woman_wearing_turban_medium_dark_skin_tone:": "👳🏾", - ":woman_wearing_turban_tone3:": "👳🏽", - ":woman_wearing_turban_medium_skin_tone:": "👳🏽", - ":woman_wearing_turban_tone2:": "👳🏼", - ":woman_wearing_turban_medium_light_skin_tone:": "👳🏼", - ":woman_wearing_turban_tone1:": "👳🏻", - ":woman_wearing_turban_light_skin_tone:": "👳🏻", - ":woman_wearing_turban:": "👳", - ":man_guard_tone5:": "💂🏿", - ":man_guard_dark_skin_tone:": "💂🏿", - ":man_guard_tone4:": "💂🏾", - ":man_guard_medium_dark_skin_tone:": "💂🏾", - ":man_guard_tone3:": "💂🏽", - ":man_guard_medium_skin_tone:": "💂🏽", - ":man_guard_tone2:": "💂🏼", - ":man_guard_medium_light_skin_tone:": "💂🏼", - ":man_guard_tone1:": "💂🏻", - ":man_guard_light_skin_tone:": "💂🏻", - ":man_guard:": "💂", - ":woman_guard_tone5:": "💂🏿", - ":woman_guard_dark_skin_tone:": "💂🏿", - ":woman_guard_tone4:": "💂🏾", - ":woman_guard_medium_dark_skin_tone:": "💂🏾", - ":woman_guard_tone3:": "💂🏽", - ":woman_guard_medium_skin_tone:": "💂🏽", - ":woman_guard_tone2:": "💂🏼", - ":woman_guard_medium_light_skin_tone:": "💂🏼", - ":woman_guard_tone1:": "💂🏻", - ":woman_guard_light_skin_tone:": "💂🏻", - ":woman_guard:": "💂", - ":man_detective_tone5:": "🕵🏿", - ":man_detective_dark_skin_tone:": "🕵🏿", - ":man_detective_tone4:": "🕵🏾", - ":man_detective_medium_dark_skin_tone:": "🕵🏾", - ":man_detective_tone3:": "🕵🏽", - ":man_detective_medium_skin_tone:": "🕵🏽", - ":man_detective_tone2:": "🕵🏼", - ":man_detective_medium_light_skin_tone:": "🕵🏼", - ":man_detective_tone1:": "🕵🏻", - ":man_detective_light_skin_tone:": "🕵🏻", - ":man_detective:": "🕵", - ":woman_detective_tone5:": "🕵🏿", - ":woman_detective_dark_skin_tone:": "🕵🏿", - ":woman_detective_tone4:": "🕵🏾", - ":woman_detective_medium_dark_skin_tone:": "🕵🏾", - ":woman_detective_tone3:": "🕵🏽", - ":woman_detective_medium_skin_tone:": "🕵🏽", - ":woman_detective_tone2:": "🕵🏼", - ":woman_detective_medium_light_skin_tone:": "🕵🏼", - ":woman_detective_tone1:": "🕵🏻", - ":woman_detective_light_skin_tone:": "🕵🏻", - ":woman_detective:": "🕵", - ":man_construction_worker_tone5:": "👷🏿", - ":man_construction_worker_dark_skin_tone:": "👷🏿", - ":man_construction_worker_tone4:": "👷🏾", - ":man_construction_worker_medium_dark_skin_tone:": "👷🏾", - ":man_construction_worker_tone3:": "👷🏽", - ":man_construction_worker_medium_skin_tone:": "👷🏽", - ":man_construction_worker_tone2:": "👷🏼", - ":man_construction_worker_medium_light_skin_tone:": "👷🏼", - ":man_construction_worker_tone1:": "👷🏻", - ":man_construction_worker_light_skin_tone:": "👷🏻", - ":man_construction_worker:": "👷", - ":woman_construction_worker_tone5:": "👷🏿", - ":woman_construction_worker_dark_skin_tone:": "👷🏿", - ":woman_construction_worker_tone4:": "👷🏾", - ":woman_construction_worker_medium_dark_skin_tone:": "👷🏾", - ":woman_construction_worker_tone3:": "👷🏽", - ":woman_construction_worker_medium_skin_tone:": "👷🏽", - ":woman_construction_worker_tone2:": "👷🏼", - ":woman_construction_worker_medium_light_skin_tone:": "👷🏼", - ":woman_construction_worker_tone1:": "👷🏻", - ":woman_construction_worker_light_skin_tone:": "👷🏻", - ":woman_construction_worker:": "👷", - ":man_police_officer_tone5:": "👮🏿", - ":man_police_officer_dark_skin_tone:": "👮🏿", - ":man_police_officer_tone4:": "👮🏾", - ":man_police_officer_medium_dark_skin_tone:": "👮🏾", - ":man_police_officer_tone3:": "👮🏽", - ":man_police_officer_medium_skin_tone:": "👮🏽", - ":man_police_officer_tone2:": "👮🏼", - ":man_police_officer_medium_light_skin_tone:": "👮🏼", - ":man_police_officer_tone1:": "👮🏻", - ":man_police_officer_light_skin_tone:": "👮🏻", - ":man_police_officer:": "👮", - ":woman_police_officer_tone5:": "👮🏿", - ":woman_police_officer_dark_skin_tone:": "👮🏿", - ":woman_police_officer_tone4:": "👮🏾", - ":woman_police_officer_medium_dark_skin_tone:": "👮🏾", - ":woman_police_officer_tone3:": "👮🏽", - ":woman_police_officer_medium_skin_tone:": "👮🏽", - ":woman_police_officer_tone2:": "👮🏼", - ":woman_police_officer_medium_light_skin_tone:": "👮🏼", - ":woman_police_officer_tone1:": "👮🏻", - ":woman_police_officer_light_skin_tone:": "👮🏻", - ":woman_police_officer:": "👮", - ":man_technologist_tone5:": "👨🏿💻", - ":man_technologist_dark_skin_tone:": "👨🏿💻", - ":man_technologist_tone4:": "👨🏾💻", - ":man_technologist_medium_dark_skin_tone:": "👨🏾💻", - ":man_technologist_tone3:": "👨🏽💻", - ":man_technologist_medium_skin_tone:": "👨🏽💻", - ":man_technologist_tone2:": "👨🏼💻", - ":man_technologist_medium_light_skin_tone:": "👨🏼💻", - ":man_technologist_tone1:": "👨🏻💻", - ":man_technologist_light_skin_tone:": "👨🏻💻", - ":man_technologist:": "👨💻", - ":woman_technologist_tone5:": "👩🏿💻", - ":woman_technologist_dark_skin_tone:": "👩🏿💻", - ":woman_technologist_tone4:": "👩🏾💻", - ":woman_technologist_medium_dark_skin_tone:": "👩🏾💻", - ":woman_technologist_tone3:": "👩🏽💻", - ":woman_technologist_medium_skin_tone:": "👩🏽💻", - ":woman_technologist_tone2:": "👩🏼💻", - ":woman_technologist_medium_light_skin_tone:": "👩🏼💻", - ":woman_technologist_tone1:": "👩🏻💻", - ":woman_technologist_light_skin_tone:": "👩🏻💻", - ":woman_technologist:": "👩💻", - ":man_teacher_tone5:": "👨🏿🏫", - ":man_teacher_dark_skin_tone:": "👨🏿🏫", - ":man_teacher_tone4:": "👨🏾🏫", - ":man_teacher_medium_dark_skin_tone:": "👨🏾🏫", - ":man_teacher_tone3:": "👨🏽🏫", - ":man_teacher_medium_skin_tone:": "👨🏽🏫", - ":man_teacher_tone2:": "👨🏼🏫", - ":man_teacher_medium_light_skin_tone:": "👨🏼🏫", - ":man_teacher_tone1:": "👨🏻🏫", - ":man_teacher_light_skin_tone:": "👨🏻🏫", - ":man_teacher:": "👨🏫", - ":woman_teacher_tone5:": "👩🏿🏫", - ":woman_teacher_dark_skin_tone:": "👩🏿🏫", - ":woman_teacher_tone4:": "👩🏾🏫", - ":woman_teacher_medium_dark_skin_tone:": "👩🏾🏫", - ":woman_teacher_tone3:": "👩🏽🏫", - ":woman_teacher_medium_skin_tone:": "👩🏽🏫", - ":woman_teacher_tone2:": "👩🏼🏫", - ":woman_teacher_medium_light_skin_tone:": "👩🏼🏫", - ":woman_teacher_tone1:": "👩🏻🏫", - ":woman_teacher_light_skin_tone:": "👩🏻🏫", - ":woman_teacher:": "👩🏫", - ":man_student_tone5:": "👨🏿🎓", - ":man_student_dark_skin_tone:": "👨🏿🎓", - ":man_student_tone4:": "👨🏾🎓", - ":man_student_medium_dark_skin_tone:": "👨🏾🎓", - ":man_student_tone3:": "👨🏽🎓", - ":man_student_medium_skin_tone:": "👨🏽🎓", - ":man_student_tone2:": "👨🏼🎓", - ":man_student_medium_light_skin_tone:": "👨🏼🎓", - ":man_student_tone1:": "👨🏻🎓", - ":man_student_light_skin_tone:": "👨🏻🎓", - ":man_student:": "👨🎓", - ":woman_student_tone5:": "👩🏿🎓", - ":woman_student_dark_skin_tone:": "👩🏿🎓", - ":woman_student_tone4:": "👩🏾🎓", - ":woman_student_medium_dark_skin_tone:": "👩🏾🎓", - ":woman_student_tone3:": "👩🏽🎓", - ":woman_student_medium_skin_tone:": "👩🏽🎓", - ":woman_student_tone2:": "👩🏼🎓", - ":woman_student_medium_light_skin_tone:": "👩🏼🎓", - ":woman_student_tone1:": "👩🏻🎓", - ":woman_student_light_skin_tone:": "👩🏻🎓", - ":woman_student:": "👩🎓", - ":man_singer_tone5:": "👨🏿🎤", - ":man_singer_dark_skin_tone:": "👨🏿🎤", - ":man_singer_tone4:": "👨🏾🎤", - ":man_singer_medium_dark_skin_tone:": "👨🏾🎤", - ":man_singer_tone3:": "👨🏽🎤", - ":man_singer_medium_skin_tone:": "👨🏽🎤", - ":man_singer_tone2:": "👨🏼🎤", - ":man_singer_medium_light_skin_tone:": "👨🏼🎤", - ":man_singer_tone1:": "👨🏻🎤", - ":man_singer_light_skin_tone:": "👨🏻🎤", - ":man_singer:": "👨🎤", - ":woman_singer_tone5:": "👩🏿🎤", - ":woman_singer_dark_skin_tone:": "👩🏿🎤", - ":woman_singer_tone4:": "👩🏾🎤", - ":woman_singer_medium_dark_skin_tone:": "👩🏾🎤", - ":woman_singer_tone3:": "👩🏽🎤", - ":woman_singer_medium_skin_tone:": "👩🏽🎤", - ":woman_singer_tone2:": "👩🏼🎤", - ":woman_singer_medium_light_skin_tone:": "👩🏼🎤", - ":woman_singer_tone1:": "👩🏻🎤", - ":woman_singer_light_skin_tone:": "👩🏻🎤", - ":woman_singer:": "👩🎤", - ":man_scientist_tone5:": "👨🏿🔬", - ":man_scientist_dark_skin_tone:": "👨🏿🔬", - ":man_scientist_tone4:": "👨🏾🔬", - ":man_scientist_medium_dark_skin_tone:": "👨🏾🔬", - ":man_scientist_tone3:": "👨🏽🔬", - ":man_scientist_medium_skin_tone:": "👨🏽🔬", - ":man_scientist_tone2:": "👨🏼🔬", - ":man_scientist_medium_light_skin_tone:": "👨🏼🔬", - ":man_scientist_tone1:": "👨🏻🔬", - ":man_scientist_light_skin_tone:": "👨🏻🔬", - ":man_scientist:": "👨🔬", - ":woman_scientist_tone5:": "👩🏿🔬", - ":woman_scientist_dark_skin_tone:": "👩🏿🔬", - ":woman_scientist_tone4:": "👩🏾🔬", - ":woman_scientist_medium_dark_skin_tone:": "👩🏾🔬", - ":woman_scientist_tone3:": "👩🏽🔬", - ":woman_scientist_medium_skin_tone:": "👩🏽🔬", - ":woman_scientist_tone2:": "👩🏼🔬", - ":woman_scientist_medium_light_skin_tone:": "👩🏼🔬", - ":woman_scientist_tone1:": "👩🏻🔬", - ":woman_scientist_light_skin_tone:": "👩🏻🔬", - ":woman_scientist:": "👩🔬", - ":man_office_worker_tone5:": "👨🏿💼", - ":man_office_worker_dark_skin_tone:": "👨🏿💼", - ":man_office_worker_tone4:": "👨🏾💼", - ":man_office_worker_medium_dark_skin_tone:": "👨🏾💼", - ":man_office_worker_tone3:": "👨🏽💼", - ":man_office_worker_medium_skin_tone:": "👨🏽💼", - ":man_office_worker_tone2:": "👨🏼💼", - ":man_office_worker_medium_light_skin_tone:": "👨🏼💼", - ":man_office_worker_tone1:": "👨🏻💼", - ":man_office_worker_light_skin_tone:": "👨🏻💼", - ":man_office_worker:": "👨💼", - ":woman_office_worker_tone5:": "👩🏿💼", - ":woman_office_worker_dark_skin_tone:": "👩🏿💼", - ":woman_office_worker_tone4:": "👩🏾💼", - ":woman_office_worker_medium_dark_skin_tone:": "👩🏾💼", - ":woman_office_worker_tone3:": "👩🏽💼", - ":woman_office_worker_medium_skin_tone:": "👩🏽💼", - ":woman_office_worker_tone2:": "👩🏼💼", - ":woman_office_worker_medium_light_skin_tone:": "👩🏼💼", - ":woman_office_worker_tone1:": "👩🏻💼", - ":woman_office_worker_light_skin_tone:": "👩🏻💼", - ":woman_office_worker:": "👩💼", - ":man_mechanic_tone5:": "👨🏿🔧", - ":man_mechanic_dark_skin_tone:": "👨🏿🔧", - ":man_mechanic_tone4:": "👨🏾🔧", - ":man_mechanic_medium_dark_skin_tone:": "👨🏾🔧", - ":man_mechanic_tone3:": "👨🏽🔧", - ":man_mechanic_medium_skin_tone:": "👨🏽🔧", - ":man_mechanic_tone2:": "👨🏼🔧", - ":man_mechanic_medium_light_skin_tone:": "👨🏼🔧", - ":man_mechanic_tone1:": "👨🏻🔧", - ":man_mechanic_light_skin_tone:": "👨🏻🔧", - ":man_mechanic:": "👨🔧", - ":woman_mechanic_tone5:": "👩🏿🔧", - ":woman_mechanic_dark_skin_tone:": "👩🏿🔧", - ":woman_mechanic_tone4:": "👩🏾🔧", - ":woman_mechanic_medium_dark_skin_tone:": "👩🏾🔧", - ":woman_mechanic_tone3:": "👩🏽🔧", - ":woman_mechanic_medium_skin_tone:": "👩🏽🔧", - ":woman_mechanic_tone2:": "👩🏼🔧", - ":woman_mechanic_medium_light_skin_tone:": "👩🏼🔧", - ":woman_mechanic_tone1:": "👩🏻🔧", - ":woman_mechanic_light_skin_tone:": "👩🏻🔧", - ":woman_mechanic:": "👩🔧", - ":man_health_worker_tone5:": "👨🏿⚕", - ":man_health_worker_dark_skin_tone:": "👨🏿⚕", - ":man_health_worker_tone4:": "👨🏾⚕", - ":man_health_worker_medium_dark_skin_tone:": "👨🏾⚕", - ":man_health_worker_tone3:": "👨🏽⚕", - ":man_health_worker_medium_skin_tone:": "👨🏽⚕", - ":man_health_worker_tone2:": "👨🏼⚕", - ":man_health_worker_medium_light_skin_tone:": "👨🏼⚕", - ":man_health_worker_tone1:": "👨🏻⚕", - ":man_health_worker_light_skin_tone:": "👨🏻⚕", - ":man_health_worker:": "👨⚕", - ":woman_health_worker_tone5:": "👩🏿⚕", - ":woman_health_worker_dark_skin_tone:": "👩🏿⚕", - ":woman_health_worker_tone4:": "👩🏾⚕", - ":woman_health_worker_medium_dark_skin_tone:": "👩🏾⚕", - ":woman_health_worker_tone3:": "👩🏽⚕", - ":woman_health_worker_medium_skin_tone:": "👩🏽⚕", - ":woman_health_worker_tone2:": "👩🏼⚕", - ":woman_health_worker_medium_light_skin_tone:": "👩🏼⚕", - ":woman_health_worker_tone1:": "👩🏻⚕", - ":woman_health_worker_light_skin_tone:": "👩🏻⚕", - ":woman_health_worker:": "👩⚕", - ":man_factory_worker_tone5:": "👨🏿🏭", - ":man_factory_worker_dark_skin_tone:": "👨🏿🏭", - ":man_factory_worker_tone4:": "👨🏾🏭", - ":man_factory_worker_medium_dark_skin_tone:": "👨🏾🏭", - ":man_factory_worker_tone3:": "👨🏽🏭", - ":man_factory_worker_medium_skin_tone:": "👨🏽🏭", - ":man_factory_worker_tone2:": "👨🏼🏭", - ":man_factory_worker_medium_light_skin_tone:": "👨🏼🏭", - ":man_factory_worker_tone1:": "👨🏻🏭", - ":man_factory_worker_light_skin_tone:": "👨🏻🏭", - ":man_factory_worker:": "👨🏭", - ":woman_factory_worker_tone5:": "👩🏿🏭", - ":woman_factory_worker_dark_skin_tone:": "👩🏿🏭", - ":woman_factory_worker_tone4:": "👩🏾🏭", - ":woman_factory_worker_medium_dark_skin_tone:": "👩🏾🏭", - ":woman_factory_worker_tone3:": "👩🏽🏭", - ":woman_factory_worker_medium_skin_tone:": "👩🏽🏭", - ":woman_factory_worker_tone2:": "👩🏼🏭", - ":woman_factory_worker_medium_light_skin_tone:": "👩🏼🏭", - ":woman_factory_worker_tone1:": "👩🏻🏭", - ":woman_factory_worker_light_skin_tone:": "👩🏻🏭", - ":woman_factory_worker:": "👩🏭", - ":man_cook_tone5:": "👨🏿🍳", - ":man_cook_dark_skin_tone:": "👨🏿🍳", - ":man_cook_tone4:": "👨🏾🍳", - ":man_cook_medium_dark_skin_tone:": "👨🏾🍳", - ":man_cook_tone3:": "👨🏽🍳", - ":man_cook_medium_skin_tone:": "👨🏽🍳", - ":man_cook_tone2:": "👨🏼🍳", - ":man_cook_medium_light_skin_tone:": "👨🏼🍳", - ":man_cook_tone1:": "👨🏻🍳", - ":man_cook_light_skin_tone:": "👨🏻🍳", - ":man_cook:": "👨🍳", - ":woman_cook_tone5:": "👩🏿🍳", - ":woman_cook_dark_skin_tone:": "👩🏿🍳", - ":woman_cook_tone4:": "👩🏾🍳", - ":woman_cook_medium_dark_skin_tone:": "👩🏾🍳", - ":woman_cook_tone3:": "👩🏽🍳", - ":woman_cook_medium_skin_tone:": "👩🏽🍳", - ":woman_cook_tone2:": "👩🏼🍳", - ":woman_cook_medium_light_skin_tone:": "👩🏼🍳", - ":woman_cook_tone1:": "👩🏻🍳", - ":woman_cook_light_skin_tone:": "👩🏻🍳", - ":woman_cook:": "👩🍳", - ":man_farmer_tone5:": "👨🏿🌾", - ":man_farmer_dark_skin_tone:": "👨🏿🌾", - ":man_farmer_tone4:": "👨🏾🌾", - ":man_farmer_medium_dark_skin_tone:": "👨🏾🌾", - ":man_farmer_tone3:": "👨🏽🌾", - ":man_farmer_medium_skin_tone:": "👨🏽🌾", - ":man_farmer_tone2:": "👨🏼🌾", - ":man_farmer_medium_light_skin_tone:": "👨🏼🌾", - ":man_farmer_tone1:": "👨🏻🌾", - ":man_farmer_light_skin_tone:": "👨🏻🌾", - ":man_farmer:": "👨🌾", - ":woman_farmer_tone5:": "👩🏿🌾", - ":woman_farmer_dark_skin_tone:": "👩🏿🌾", - ":woman_farmer_tone4:": "👩🏾🌾", - ":woman_farmer_medium_dark_skin_tone:": "👩🏾🌾", - ":woman_farmer_tone3:": "👩🏽🌾", - ":woman_farmer_medium_skin_tone:": "👩🏽🌾", - ":woman_farmer_tone2:": "👩🏼🌾", - ":woman_farmer_medium_light_skin_tone:": "👩🏼🌾", - ":woman_farmer_tone1:": "👩🏻🌾", - ":woman_farmer_light_skin_tone:": "👩🏻🌾", - ":woman_farmer:": "👩🌾", - ":man_in_business_suit_levitating_tone1:": "🕴🏻", - ":man_in_business_suit_levitating_light_skin_tone:": "🕴🏻", - ":man_in_business_suit_levitating_tone2:": "🕴🏼", - ":man_in_business_suit_levitating_medium_light_skin_tone:": "🕴🏼", - ":man_in_business_suit_levitating_tone3:": "🕴🏽", - ":man_in_business_suit_levitating_medium_skin_tone:": "🕴🏽", - ":man_in_business_suit_levitating_tone4:": "🕴🏾", - ":man_in_business_suit_levitating_medium_dark_skin_tone:": "🕴🏾", - ":man_in_business_suit_levitating_tone5:": "🕴🏿", - ":man_in_business_suit_levitating_dark_skin_tone:": "🕴🏿", - ":person_in_bed_tone1:": "🛌🏻", - ":person_in_bed_light_skin_tone:": "🛌🏻", - ":person_in_bed_tone2:": "🛌🏼", - ":person_in_bed_medium_light_skin_tone:": "🛌🏼", - ":person_in_bed_tone3:": "🛌🏽", - ":person_in_bed_medium_skin_tone:": "🛌🏽", - ":person_in_bed_tone4:": "🛌🏾", - ":person_in_bed_medium_dark_skin_tone:": "🛌🏾", - ":person_in_bed_tone5:": "🛌🏿", - ":person_in_bed_dark_skin_tone:": "🛌🏿", - ":family_man_boy:": "👨👦", - ":family_man_boy_boy:": "👨👦👦", - ":family_man_girl:": "👨👧", - ":family_man_girl_boy:": "👨👧👦", - ":family_woman_boy:": "👩👦", - ":family_woman_boy_boy:": "👩👦👦", - ":family_woman_girl:": "👩👧", - ":family_woman_girl_boy:": "👩👧👦", - ":family_woman_girl_girl:": "👩👧👧", - ":man_judge:": "👨⚖", - ":man_judge_tone1:": "👨🏻⚖", - ":man_judge_light_skin_tone:": "👨🏻⚖", - ":man_judge_tone2:": "👨🏼⚖", - ":man_judge_medium_light_skin_tone:": "👨🏼⚖", - ":man_judge_tone3:": "👨🏽⚖", - ":man_judge_medium_skin_tone:": "👨🏽⚖", - ":man_judge_tone4:": "👨🏾⚖", - ":man_judge_medium_dark_skin_tone:": "👨🏾⚖", - ":man_judge_tone5:": "👨🏿⚖", - ":man_judge_dark_skin_tone:": "👨🏿⚖", - ":woman_judge:": "👩⚖", - ":woman_judge_tone1:": "👩🏻⚖", - ":woman_judge_light_skin_tone:": "👩🏻⚖", - ":woman_judge_tone2:": "👩🏼⚖", - ":woman_judge_medium_light_skin_tone:": "👩🏼⚖", - ":woman_judge_tone3:": "👩🏽⚖", - ":woman_judge_medium_skin_tone:": "👩🏽⚖", - ":woman_judge_tone4:": "👩🏾⚖", - ":woman_judge_medium_dark_skin_tone:": "👩🏾⚖", - ":woman_judge_tone5:": "👩🏿⚖", - ":woman_judge_dark_skin_tone:": "👩🏿⚖", - ":man_pilot:": "👨✈", - ":man_pilot_tone1:": "👨🏻✈", - ":man_pilot_light_skin_tone:": "👨🏻✈", - ":man_pilot_tone2:": "👨🏼✈", - ":man_pilot_medium_light_skin_tone:": "👨🏼✈", - ":man_pilot_tone3:": "👨🏽✈", - ":man_pilot_medium_skin_tone:": "👨🏽✈", - ":man_pilot_tone4:": "👨🏾✈", - ":man_pilot_medium_dark_skin_tone:": "👨🏾✈", - ":man_pilot_tone5:": "👨🏿✈", - ":man_pilot_dark_skin_tone:": "👨🏿✈", - ":woman_pilot:": "👩✈", - ":woman_pilot_tone1:": "👩🏻✈", - ":woman_pilot_light_skin_tone:": "👩🏻✈", - ":woman_pilot_tone2:": "👩🏼✈", - ":woman_pilot_medium_light_skin_tone:": "👩🏼✈", - ":woman_pilot_tone3:": "👩🏽✈", - ":woman_pilot_medium_skin_tone:": "👩🏽✈", - ":woman_pilot_tone4:": "👩🏾✈", - ":woman_pilot_medium_dark_skin_tone:": "👩🏾✈", - ":woman_pilot_tone5:": "👩🏿✈", - ":woman_pilot_dark_skin_tone:": "👩🏿✈", - ":man_artist:": "👨🎨", - ":man_artist_tone1:": "👨🏻🎨", - ":man_artist_light_skin_tone:": "👨🏻🎨", - ":man_artist_tone2:": "👨🏼🎨", - ":man_artist_medium_light_skin_tone:": "👨🏼🎨", - ":man_artist_tone3:": "👨🏽🎨", - ":man_artist_medium_skin_tone:": "👨🏽🎨", - ":man_artist_tone4:": "👨🏾🎨", - ":man_artist_medium_dark_skin_tone:": "👨🏾🎨", - ":man_artist_tone5:": "👨🏿🎨", - ":man_artist_dark_skin_tone:": "👨🏿🎨", - ":woman_artist:": "👩🎨", - ":woman_artist_tone1:": "👩🏻🎨", - ":woman_artist_light_skin_tone:": "👩🏻🎨", - ":woman_artist_tone2:": "👩🏼🎨", - ":woman_artist_medium_light_skin_tone:": "👩🏼🎨", - ":woman_artist_tone3:": "👩🏽🎨", - ":woman_artist_medium_skin_tone:": "👩🏽🎨", - ":woman_artist_tone4:": "👩🏾🎨", - ":woman_artist_medium_dark_skin_tone:": "👩🏾🎨", - ":woman_artist_tone5:": "👩🏿🎨", - ":woman_artist_dark_skin_tone:": "👩🏿🎨", - ":man_astronaut:": "👨🚀", - ":man_astronaut_tone1:": "👨🏻🚀", - ":man_astronaut_light_skin_tone:": "👨🏻🚀", - ":man_astronaut_tone2:": "👨🏼🚀", - ":man_astronaut_medium_light_skin_tone:": "👨🏼🚀", - ":man_astronaut_tone3:": "👨🏽🚀", - ":man_astronaut_medium_skin_tone:": "👨🏽🚀", - ":man_astronaut_tone4:": "👨🏾🚀", - ":man_astronaut_medium_dark_skin_tone:": "👨🏾🚀", - ":man_astronaut_tone5:": "👨🏿🚀", - ":man_astronaut_dark_skin_tone:": "👨🏿🚀", - ":woman_astronaut:": "👩🚀", - ":woman_astronaut_tone1:": "👩🏻🚀", - ":woman_astronaut_light_skin_tone:": "👩🏻🚀", - ":woman_astronaut_tone2:": "👩🏼🚀", - ":woman_astronaut_medium_light_skin_tone:": "👩🏼🚀", - ":woman_astronaut_tone3:": "👩🏽🚀", - ":woman_astronaut_medium_skin_tone:": "👩🏽🚀", - ":woman_astronaut_tone4:": "👩🏾🚀", - ":woman_astronaut_medium_dark_skin_tone:": "👩🏾🚀", - ":woman_astronaut_tone5:": "👩🏿🚀", - ":woman_astronaut_dark_skin_tone:": "👩🏿🚀", - ":man_firefighter:": "👨🚒", - ":man_firefighter_tone1:": "👨🏻🚒", - ":man_firefighter_light_skin_tone:": "👨🏻🚒", - ":man_firefighter_tone2:": "👨🏼🚒", - ":man_firefighter_medium_light_skin_tone:": "👨🏼🚒", - ":man_firefighter_tone3:": "👨🏽🚒", - ":man_firefighter_medium_skin_tone:": "👨🏽🚒", - ":man_firefighter_tone4:": "👨🏾🚒", - ":man_firefighter_medium_dark_skin_tone:": "👨🏾🚒", - ":man_firefighter_tone5:": "👨🏿🚒", - ":man_firefighter_dark_skin_tone:": "👨🏿🚒", - ":woman_firefighter:": "👩🚒", - ":woman_firefighter_tone1:": "👩🏻🚒", - ":woman_firefighter_light_skin_tone:": "👩🏻🚒", - ":woman_firefighter_tone2:": "👩🏼🚒", - ":woman_firefighter_medium_light_skin_tone:": "👩🏼🚒", - ":woman_firefighter_tone3:": "👩🏽🚒", - ":woman_firefighter_medium_skin_tone:": "👩🏽🚒", - ":woman_firefighter_tone4:": "👩🏾🚒", - ":woman_firefighter_medium_dark_skin_tone:": "👩🏾🚒", - ":woman_firefighter_tone5:": "👩🏿🚒", - ":woman_firefighter_dark_skin_tone:": "👩🏿🚒", - ":female_sign:": "♀", - ":male_sign:": "♂", - ":medical_symbol:": "⚕", - ":united_nations:": "🇺🇳", - ":snowboarder_tone2:": "🏂🏼", - ":snowboarder_medium_light_skin_tone:": "🏂🏼", - ":snowboarder_tone3:": "🏂🏽", - ":snowboarder_medium_skin_tone:": "🏂🏽", - ":snowboarder_tone4:": "🏂🏾", - ":snowboarder_medium_dark_skin_tone:": "🏂🏾", - ":snowboarder_tone5:": "🏂🏿", - ":snowboarder_dark_skin_tone:": "🏂🏿", - ":person_golfing_tone1:": "🏌🏻", - ":person_golfing_light_skin_tone:": "🏌🏻", - ":person_golfing_tone2:": "🏌🏼", - ":person_golfing_medium_light_skin_tone:": "🏌🏼", - ":person_golfing_tone3:": "🏌🏽", -} - -function replace_emoji() { - $('.emoji_poss').each(function(){ - const emoji = $(this).html().match(/(:.+?:)|✅/g); - for(let i in emoji) { - if(emoji_dict[emoji[i]]) { - $(this).html($(this).html().replace(emoji[i], emoji_dict[emoji[i]])); - $(this).removeClass('emoji_poss'); - } - } - $(this).html($(this).html().replace("✅", "")); - }); - twemoji.parse(document.body); -}; - -function replaced_emoji_return(original) { - const emoji = original.match(/(:.+?:)/g); - for(let i in emoji) { - if(emoji_dict[emoji[i]]) { - original = original.replace(emoji[i], emoji_dict[emoji[i]]); - } - } - return original -}; diff --git a/public_html/assets/js/shortcut.js b/public_html/assets/js/shortcut.js deleted file mode 100644 index 387b00c..0000000 --- a/public_html/assets/js/shortcut.js +++ /dev/null @@ -1,223 +0,0 @@ -/** - * http://www.openjs.com/scripts/events/keyboard_shortcuts/ - * Version : 2.01.B - * By Binny V A - * License : BSD - */ -shortcut = { - 'all_shortcuts':{},//All the shortcuts are stored in this array - 'add': function(shortcut_combination,callback,opt) { - //Provide a set of default options - var default_options = { - 'type':'keydown', - 'propagate':false, - 'disable_in_input':false, - 'target':document, - 'keycode':false - } - if(!opt) opt = default_options; - else { - for(var dfo in default_options) { - if(typeof opt[dfo] == 'undefined') opt[dfo] = default_options[dfo]; - } - } - - var ele = opt.target; - if(typeof opt.target == 'string') ele = document.getElementById(opt.target); - var ths = this; - shortcut_combination = shortcut_combination.toLowerCase(); - - //The function to be called at keypress - var func = function(e) { - e = e || window.event; - - if(opt['disable_in_input']) { //Don't enable shortcut keys in Input, Textarea fields - var element; - if(e.target) element=e.target; - else if(e.srcElement) element=e.srcElement; - if(element.nodeType==3) element=element.parentNode; - - if(element.tagName == 'INPUT' || element.tagName == 'TEXTAREA') return; - } - - //Find Which key is pressed - if (e.keyCode) code = e.keyCode; - else if (e.which) code = e.which; - var character = String.fromCharCode(code).toLowerCase(); - - if(code == 188) character=","; //If the user presses , when the type is onkeydown - if(code == 190) character="."; //If the user presses , when the type is onkeydown - - var keys = shortcut_combination.split("+"); - //Key Pressed - counts the number of valid keypresses - if it is same as the number of keys, the shortcut function is invoked - var kp = 0; - - //Work around for stupid Shift key bug created by using lowercase - as a result the shift+num combination was broken - var shift_nums = { - "`":"~", - "1":"!", - "2":"@", - "3":"#", - "4":"$", - "5":"%", - "6":"^", - "7":"&", - "8":"*", - "9":"(", - "0":")", - "-":"_", - "=":"+", - ";":":", - "'":"\"", - ",":"<", - ".":">", - "/":"?", - "\\":"|" - } - //Special Keys - and their codes - var special_keys = { - 'esc':27, - 'escape':27, - 'tab':9, - 'space':32, - 'return':13, - 'enter':13, - 'backspace':8, - - 'scrolllock':145, - 'scroll_lock':145, - 'scroll':145, - 'capslock':20, - 'caps_lock':20, - 'caps':20, - 'numlock':144, - 'num_lock':144, - 'num':144, - - 'pause':19, - 'break':19, - - 'insert':45, - 'home':36, - 'delete':46, - 'end':35, - - 'pageup':33, - 'page_up':33, - 'pu':33, - - 'pagedown':34, - 'page_down':34, - 'pd':34, - - 'left':37, - 'up':38, - 'right':39, - 'down':40, - - 'f1':112, - 'f2':113, - 'f3':114, - 'f4':115, - 'f5':116, - 'f6':117, - 'f7':118, - 'f8':119, - 'f9':120, - 'f10':121, - 'f11':122, - 'f12':123 - } - - var modifiers = { - shift: { wanted:false, pressed:false}, - ctrl : { wanted:false, pressed:false}, - alt : { wanted:false, pressed:false}, - meta : { wanted:false, pressed:false} //Meta is Mac specific - }; - - if(e.ctrlKey) modifiers.ctrl.pressed = true; - if(e.shiftKey) modifiers.shift.pressed = true; - if(e.altKey) modifiers.alt.pressed = true; - if(e.metaKey) modifiers.meta.pressed = true; - - for(var i=0; k=keys[i],i 1) { //If it is a special key - if(special_keys[k] == code) kp++; - - } else if(opt['keycode']) { - if(opt['keycode'] == code) kp++; - - } else { //The special keys did not match - if(character == k) kp++; - else { - if(shift_nums[character] && e.shiftKey) { //Stupid Shift key bug created by using lowercase - character = shift_nums[character]; - if(character == k) kp++; - } - } - } - } - - if(kp == keys.length && - modifiers.ctrl.pressed == modifiers.ctrl.wanted && - modifiers.shift.pressed == modifiers.shift.wanted && - modifiers.alt.pressed == modifiers.alt.wanted && - modifiers.meta.pressed == modifiers.meta.wanted) { - callback(e); - - if(!opt['propagate']) { //Stop the event - //e.cancelBubble is supported by IE - this will kill the bubbling process. - e.cancelBubble = true; - e.returnValue = false; - - //e.stopPropagation works in Firefox. - if (e.stopPropagation) { - e.stopPropagation(); - e.preventDefault(); - } - return false; - } - } - } - this.all_shortcuts[shortcut_combination] = { - 'callback':func, - 'target':ele, - 'event': opt['type'] - }; - //Attach the function with the event - if(ele.addEventListener) ele.addEventListener(opt['type'], func, false); - else if(ele.attachEvent) ele.attachEvent('on'+opt['type'], func); - else ele['on'+opt['type']] = func; - }, - - //Remove the shortcut - just specify the shortcut and I will remove the binding - 'remove':function(shortcut_combination) { - shortcut_combination = shortcut_combination.toLowerCase(); - var binding = this.all_shortcuts[shortcut_combination]; - delete(this.all_shortcuts[shortcut_combination]) - if(!binding) return; - var type = binding['event']; - var ele = binding['target']; - var callback = binding['callback']; - - if(ele.detachEvent) ele.detachEvent('on'+type, callback); - else if(ele.removeEventListener) ele.removeEventListener(type, callback, false); - else ele['on'+type] = false; - } - -} \ No newline at end of file diff --git a/public_html/federated.php b/public_html/federated.php deleted file mode 100644 index ee94a37..0000000 --- a/public_html/federated.php +++ /dev/null @@ -1,66 +0,0 @@ - - - -
    - -
    - - - -
    - -
    - - - -
    - -
    - -
    - -
      -
    - -
    - -
    - -
    - - - -
    - -
    - - - \ No newline at end of file diff --git a/public_html/header.php b/public_html/header.php deleted file mode 100644 index 36798e9..0000000 --- a/public_html/header.php +++ /dev/null @@ -1,160 +0,0 @@ - - - - - - - - - Halcyon - - - - - - - - - - - - - - - - - - - - - diff --git a/public_html/home.php b/public_html/home.php deleted file mode 100644 index 7448f91..0000000 --- a/public_html/home.php +++ /dev/null @@ -1,62 +0,0 @@ - - - -
    - -
    - - - -
    - -
    - -
    - -
    - -
    - -
      -
    - -
    - -
    - -
    - - - -
    - -
    - - - - \ No newline at end of file diff --git a/public_html/local.php b/public_html/local.php deleted file mode 100644 index 74f2d5c..0000000 --- a/public_html/local.php +++ /dev/null @@ -1,76 +0,0 @@ - - - -
    - -
    - - - -
    - -
    - - - -
    - -
    - -
    - -
      -
    - -
    - -
    - -
    - - - -
    - -
    - - - \ No newline at end of file diff --git a/public_html/login/assets/css/style.css b/public_html/login/assets/css/style.css deleted file mode 100644 index af0588c..0000000 --- a/public_html/login/assets/css/style.css +++ /dev/null @@ -1,571 +0,0 @@ -@charset "utf-8"; - -/*-------------------------------------- - Reset ---------------------------------------*/ - -* { - margin: 0; - padding: 0; - font-size: 100%; -} - -a { - text-decoration: none; - word-break: break-all; - color: inherit; -} - -a:hover { - text-decoration: underline; -} - -ul, ol { - list-style: none; - padding: 0; - margin: 0; -} - -img { - vertical-align: top; - border: 0; - max-width: 100%; - max-height: 100%; -} - -button { - font-size: 100%; -} - -.clear { - clear: both; -} - -.red { - color: red!important; -} - -.invisible { - display: none!important; -} - -.no-events { - pointer-events: none!important; -} - -.no-underline, -.no-underline:hover { - text-decoration: none!important; -} - -.disallow_select { - user-select: none; - -ms-user-select: none; - -webkit-user-select: none; - -moz-user-select: none; -} - -.text_ellipsis { - text-overflow: ellipsis; - overflow: hidden; - white-space: nowrap; -} - -.pointer { - cursor: pointer; -} - -.khmer_font { - font-family: "Khmer MN", Helvetica, Arial, sans-serif!important; -} - -.gill_font { - font-family: "Gill Sans", Helvetica, Arial, sans-serif!important; -} - -.trebuchet_font { - font-family: "Trebuchet MS", Helvetica, Arial, sans-serif!important; -} - -h1, h2, h3, h4, h5, h6 { - font-weight: normal; - line-height: 1; - margin: 0; - padding: 0; -} - -blockquote, q { - quotes: none; - margin: 0; -} - -blockquote * { - margin: 0; - word-break: break-all; -} - -blockquote:before, blockquote:after, -q:before, q:after { - content:''; - content:none; -} - -article,aside,details,figcaption,figure, -footer,header,hgroup,menu,nav,section { - display:block; -} - -textarea { - width: 100%; -} - -input { - max-width: 100%; -} - -button, -input[type="submit"], -input[type="button"], -input[type="text"], -input[type="password"], -textarea, -select{ - background-color: transparent; - border: none; - cursor: pointer; - outline: none; - padding: 0; - appearance: none; -} -input:-webkit-autofill { - -webkit-box-shadow: 0 0 0px 1000px transparent inset; -} - -/* Twitter Emoji Prefix */ -img.emoji { - height: 1em; - width: 1em; - margin: 0 .05em 0 .1em; - vertical-align: -0.1em; -} - -/*-------------------------------------- - Base ---------------------------------------*/ - -html { - font-family : "Trebuchet MS",Helvetica,"ヒラギノ角ゴ Pro W3", - "Hiragino Kaku Gothic Pro",Meiryo,"メイリオ","MS Pゴシック",Arial,sans-serif; - font-size : 100%; - line-height : 1; - color: #333; - min-width: 100%; - min-height: 100%; -} - -body { - margin: 0; - padding: 0; - min-width: 100%; - min-height: 100%; - word-wrap:break-word; - background-color: #F5F8FA; -} - -/*------------------------------------- - HEADER AREA --------------------------------------*/ - -#header { - width: 100%; - height: 56px; - color: #fff; - background-color: #222; - box-shadow: 0px 3px 5px rgba(0,0,0,0.26); - position: fixed; - z-index: 999; -} - -#header #header_wrap { - display: flex; - justify-content: flex-start; - align-items: center; - width: 100%; - height: 100%; -} - -#header #header_wrap > .header_box { - height: 100%; - flex-grow: 1; - flex-shrink: 0; -} - -/*------------------------------------- - HEADER AREA: TITLE --------------------------------------*/ - -#header #header_wrap .header_box.header_right_box { - display: flex; - justify-content: flex-start; -} - -#header #header_wrap .header_box.header_right_box .title_box { - height: 100%; - margin-left: 24px; - box-sizing: border-box; -} - -/*------------------------------------- - HEADER AREA: NAV --------------------------------------*/ - -#header #header_wrap .header_box.header_left_box { - display: flex; - justify-content: flex-end; -} - -#header #header_wrap .header_box.header_left_box nav { - height: 100%; -} - -#header #header_wrap .header_box.header_left_box .nav_box ul { - display: block; - height: 100%; - width: 100%; -} - -#header #header_wrap .header_box.header_left_box .nav_box ul a { - height: 100%; -} - -#header #header_wrap .header_box.header_left_box .nav_box ul li { - display: block; - float: left; - cursor: pointer; - height: calc(100% - 5px*2 ); - margin-top: 5px; - border-bottom: 0px solid #007BD0; -} - -#header #header_wrap .header_box.header_left_box .nav_box ul li span { - display: block; - height: 100%; - margin: auto; - padding: 15px 24px; - font-size: 14px; - box-sizing: border-box; -} - -#header #header_wrap .header_box.header_left_box .nav_box ul li span i { - margin-right: 4px; -} - -#header #header_wrap .header_box.header_left_box .nav_box ul li:hover { - color: #189EFC; - border-bottom-width: 5px; - transition: 0.15s ease-out; -} - -/*------------------------------------- - MAIN --------------------------------------*/ - -#main { - padding-top: 56px; -} - -/*------------------------------------- - FORM --------------------------------------*/ - -#main #login_form_wrap { - width: 100%; - height: 560px; - padding: 56px 0; - margin-bottom: -200px; - box-sizing: border-box; - background-image: url("/login/assets/images/background.jpg"); - background-size: cover; - background-repeat: no-repeat; -} - -#main #login_form_wrap .login_form { - position: relative; - width: 640px; - height: 220px; - padding: 36px 24px; - margin: auto; - overflow: hidden; - background: inherit; - box-sizing: border-box; - border-radius: 4px; - border: 1px solid #C9EFF8; - text-align: center; - box-shadow: 0px 5px 5px rgba(0,0,0,0.26); - transition: 0.25s ease-out; -} - -#main #login_form_wrap .login_form.expand { - width: 780px; - transition: 0.25s ease-out; -} - -#main #login_form_wrap .login_form::before { - display: block; - position: absolute; - content: ""; - top: -3px; - left: -3px; - right: -3px; - bottom: -3px; - background: inherit; - background-position: top center; - filter: blur(3px); - border-radius: 5px; - z-index: 0; -} - -#main #login_form_wrap .login_form form { - position: relative; - margin: auto; - z-index: 1; - color: #C9EFF8; -} - -#main #login_form_wrap .login_form form a { - color: #fff; -} - -#main #login_form_wrap .login_form h2 { - font-size: 32px; - font-weight: 600; - margin-bottom: 16px; - transition: 0.25s ease-out; -} - -#main #login_form_wrap .login_form.expand h2 { - font-size: 42px; - transition: 0.25s ease-out; -} - -#main #login_form_wrap .login_form p { - margin-bottom: 16px; - transition: 0.25s ease-out; -} - -#main #login_form_wrap .login_form.expand p { - opacity: 0; - margin-bottom: 0; - transition: 0.25s ease-out; -} - -#main #login_form_wrap .login_form .login_form_main { - display: flex; - flex-wrap: nowrap; - justify-content: flex-start; - align-items: center; - margin: auto; - height: 32px; - width: 276px; - border: 1px solid #C9EFF8; - border-radius: 32px; - background-color: rgba(0,0,0,.3); - transition: 0.25s ease-out; -} - -#main #login_form_wrap .login_form.expand .login_form_main { - width: 360px; - height: 42px; - transition: 0.25s ease-out; -} - -#main #login_form_wrap .login_form .login_form_main.active { - box-shadow: 0px 3px 5px rgba(0,0,0,0.26); -} - -#main #login_form_wrap .login_form .login_form_main input[name="acct"] { - display: block; - -webkit-appearance : none; - flex-grow: 1; - padding: 4px 0 4px 14px; - color: #C9EFF8; - border: none; - background: none; - box-sizing: border-box; - transition: 0.25s ease-out; -} - -#main #login_form_wrap .login_form.expand .login_form_main input[name="acct"] { - flex-grow: 2; - padding: 8px 0 8px 14px; - transition: 0.25s ease-out; -} - -#main #login_form_wrap .login_form .login_form_main .login_form_continue { - display: block; - flex-grow: 1; - color: #C9EFF8; -} - -#main #login_form_wrap .login_form .login_form_main .login_form_continue:hover { - color: #fff; -} - -#main #login_form_wrap .login_form .login_form_agree { - margin: 16px auto 0; -} - -#main #login_form_wrap .login_form .login_form_agree i { - color: #fff; -} - -/*------------------------------------- - ARTICLE --------------------------------------*/ - -#article { - position: relative; - width: 640px; - margin: auto; - margin-bottom: 56px; - padding: 24px 36px 36px; - border-radius: 4px; - background-color: #fff; - box-sizing: border-box; - box-shadow: 3px 3px 5px rgba(0,0,0,0.26); -} - -#article h2 { - font-size: 32px; - font-weight: 600; - margin: 16px 0; -} - -#article p { - display: inline-block; - margin-bottom: 16px; - font-size: 16px; - line-height: 1.2; -} - -#article .image_wrap { - display: block; - position: relative; - margin: 0 -36px 24px; - border-top: 0.5px solid #555; - border-bottom: 0.5px solid #555; -} - -#article .image_wrap ul { - display: block; - position: relative; - width: 100%; - height: 370px; - overflow: hidden; -} - -#article .image_wrap ul li { - position: absolute; - top: 0; - left: 0; -} - -@keyframes fadeout { - 0% {opacity: 1;} - 100% {opacity: 0;} -} - -@keyframes fadein { - 0% {opacity: 0;} - 100% {opacity: 1;} -} - -#article .image_wrap ul li.fadeout { - animation-name: fadeout; - animation-duration: 0.5s; - animation-fill-mode: forwards; -} - -#article .image_wrap ul li.fadein { - animation-name: fadein; - animation-duration: 0.5s; - animation-fill-mode: forwards; -} - -#article .image_wrap .switch_button { - display: block; - opacity: 0; - position: absolute; - top: 0; - width: 30px; - height: 100%; - color: #fff; - background-color: rgba(0, 0, 0, .3); - transition: 0.15s ease-out; -} - -#article .image_wrap:hover .switch_button { - opacity: 1; - transition: 0.15s ease-out; -} - -@keyframes switching_image_list { - 0% {background-color: rgba(0, 0, 0, .3);} - 50% {background-color: rgba(0, 0, 0, .8);} - 100% {background-color: rgba(0, 0, 0, .3);} -} - -#article .image_wrap:hover .switch_button.active { - animation-name: switching_image_list; - animation-duration: 0.35s; -} - -#article .image_wrap .switch_button.prev_button { - left: 0; -} - -#article .image_wrap .switch_button.next_button { - right: 0; -} - - -#article a { - color: #189EFC; -} - -/*------------------------------------- - FOOTER --------------------------------------*/ - -#footer { - width: 640px; - padding: 24px 36px 12px; - box-sizing: border-box; - margin: auto; - border-top-right-radius: 4px; - border-top-left-radius: 4px; - box-shadow: 3px 3px 5px rgba(0,0,0,0.26); - background-color: #222; -} - -#footer .footer_anchor { - display: flex; - justify-content: center; - align-items: center; - color: #444; - font-size: 36px; - transition: 0.15s ease-out; -} - -#footer .footer_anchor:hover { - color: #555; - transition: 0.15s ease-out; -} - -#footer span { - font-size: 14px; - color: #ddd; - margin: auto; - display: block; - text-align: center; -} \ No newline at end of file diff --git a/public_html/login/assets/js/halcyon_login.js b/public_html/login/assets/js/halcyon_login.js deleted file mode 100644 index 9722339..0000000 --- a/public_html/login/assets/js/halcyon_login.js +++ /dev/null @@ -1,55 +0,0 @@ -$(function() { - - $(document).on('change','.login_form_agree #agree', function(e) { - const icon = $(this).parent().find('i.fa'); - if ( $(this).prop('checked') ) { - icon.addClass("fa-check-square-o"); - icon.removeClass("fa-square-o"); - } else if ( !$(this).prop('checked') ) { - icon.addClass("fa-square-o"); - icon.removeClass("fa-check-square-o"); - } - }); - - $(document).on('focus', '#main #login_form_wrap .login_form .login_form_main input[name="acct"]', function(e) { - $(this).parent().addClass('active') - $(".login_form").addClass('expand'); - }) - - $(document).on('blur', '#main #login_form_wrap .login_form .login_form_main input[name="acct"]', function(e) { - $(this).parent().removeClass('active') - $(".login_form").removeClass('expand'); - }) - - $(document).on('mousedown', '.image_wrap .switch_button', function(e) { - const self = $(this); - self.addClass('active'); - setTimeout(function() { - self.removeClass('active'); - }, 500); - }) - - $(document).on('click', '.image_wrap .prev_button', function(e) { - - const firstChild = $(this).parent(".image_wrap").find('ul li:first-child'); - firstChild.appendTo(".image_wrap ul"); - firstChild.addClass('fadein'); - setTimeout(function() { - firstChild.removeClass('fadein'); - }, 500); - - }) - - $(document).on('click', '.image_wrap .next_button', function(e) { - - const lastChild = $(this).parent(".image_wrap").find('ul li:last-child');; - lastChild.addClass('fadeout'); - setTimeout(function() { - lastChild.prependTo(".image_wrap ul"); - lastChild.removeClass('fadeout'); - }, 500); - - }) - - -}) \ No newline at end of file diff --git a/public_html/login/auth.php b/public_html/login/auth.php deleted file mode 100644 index f16acbc..0000000 --- a/public_html/login/auth.php +++ /dev/null @@ -1,70 +0,0 @@ - - - - - - - - selectInstance($URL); - $response = $api->get_access_token($api->clientWebsite.'/auth?&host='.$domain, htmlspecialchars((string)filter_input(INPUT_GET, 'code'), ENT_QUOTES)); - - if ($response['html']["access_token"]) { - - $access_token = $response['html']["access_token"]; - $account_id = $api->accounts_verify_credentials()['html']['id']; - - echo " - - "; - - } - } - ?> - - - - - - - - diff --git a/public_html/login/login.php b/public_html/login/login.php deleted file mode 100644 index 5781f85..0000000 --- a/public_html/login/login.php +++ /dev/null @@ -1,234 +0,0 @@ - - - - - - - - - Halcyon for Mastodon - - - - - - - - - - clientWebsite.'/login?cause=domain', true, 303); - die(); - } else { - try { - $client_id = $api->getInstance($URL)["client_id"]; - $authorizeURL = $URL.'/oauth/authorize?client_id='.$client_id.'&response_type=code&scope=read+write+follow&website='.$api->clientWebsite.'&redirect_uri='.urlencode($api->clientWebsite.'/auth?&host='.$domain); - header("Location: {$authorizeURL}", true, 303); - die(); - } catch (Exception $e) { - header('Location: '.$api->clientWebsite.'/login?cause=domain', true, 303); - die(); - } - } - } - ?> - - - - - - - - -
    - -
    - - - -
    - -
    - -

    What is Halcyon

    - -

    - Halcyon is standard Twitter like client of Mastodon, And you can use it just by login to your instance. Let's Toot like a tweet. -

    - -
    - -
      -
    • halcyon_screenshot
    • -
    • halcyon_screenshot
    • -
    • halcyon_screenshot
    • -
    - - - - -
    - -

    Contact / Feedback

    - -

    - Mastodon: @nipos@social.wiuwiu.de
    - Email: Use my contact form
    - Github: /halcyon-suite -

    - -

    Help us

    - -

    - Bitcoin: 1D6GThQqHQYnruKYrKyW9JC86ZGWxjt1hK
    -

    - -
    - -
    - - - - - - - - - - - diff --git a/public_html/login/terms.php b/public_html/login/terms.php deleted file mode 100644 index ae3f0f5..0000000 --- a/public_html/login/terms.php +++ /dev/null @@ -1,128 +0,0 @@ - - - - - - - - Halcyon for Mastodon - - - - - - - - - - - - -
    -
    -

    Halcyon Terms of Use

    -

    This terms of use agreement is for the users of web service Halcyon for Mastodon (Halcyon for short) hosted at halcyon.social.

    -
    -

    1. Agreement

    -

    By logging into Halcyon you agree to this terms of use agreement. Do not use this service if you do not agree to these terms.

    -
    -

    2. Change

    -

    We reserve the right to modify these terms of use at any time if deemed necessary.

    -
    -

    3. Account

    -

    Users can connect to various Mastodon accounts from Halcyon, and Halcyon will not interfere with those connection.

    -
    -

    4. Content

    -

    Halcyon does not own the right to or hold responsibility for any text, image, animation, audio content accessible from Halcyon. The right and responsibility belong to the owners of instances that host those content.

    -
    -

    5. Guideline

    -

    Halcyon reserves the right to terminate service for

    -
      -
    • actions violating the laws of countries
    • -
    • actions contrary to public order and standards of decency
    • -
    • violation of third party’s right to intellectual property, brand, privacy, etc.
    • -
    • acts of violence, sexual nature, of discrimination
    • -
    • phishing or spamming
    • -
    • actions causing problem to the network infrastructure of Halcyon
    • -
    -
    -

    6. Disclaimer

    -

    Halcyon is not responsible for any damage caused by using this service.

    -
    -

    Last updated 2017/5/12

    -
    - -
    - - - - diff --git a/public_html/notifications.php b/public_html/notifications.php deleted file mode 100644 index 6a399a4..0000000 --- a/public_html/notifications.php +++ /dev/null @@ -1,69 +0,0 @@ - - - -
    - -
    - - - -
    - -
    - -
    - -
    - -
    - -
      -
    - -
    - -
    - -
    - - - -
    - -
    - - - \ No newline at end of file diff --git a/public_html/search_hash_tag.php b/public_html/search_hash_tag.php deleted file mode 100644 index fd9a575..0000000 --- a/public_html/search_hash_tag.php +++ /dev/null @@ -1,80 +0,0 @@ - - - -
    - - - -
    - - - -
    - -
    -
      - -
    • -
    • - -
    -
    - -
    - -
    - -
      -
    - -
    - -
    - -
    - - - -
    - -
    - - - \ No newline at end of file diff --git a/public_html/search_user.php b/public_html/search_user.php deleted file mode 100644 index 9d3c44d..0000000 --- a/public_html/search_user.php +++ /dev/null @@ -1,51 +0,0 @@ - - - -
    - - - -
    - - - -
    - -
    - -
    - -
    - -
    - -
    - -
    - -
    - - - - \ No newline at end of file diff --git a/public_html/user.php b/public_html/user.php deleted file mode 100644 index 11626c7..0000000 --- a/public_html/user.php +++ /dev/null @@ -1,158 +0,0 @@ - - - -
    - - - -
    - - - - - - -
    -
    - - - - \ No newline at end of file diff --git a/public_html/user_favorite.php b/public_html/user_favorite.php deleted file mode 100644 index 79b35c7..0000000 --- a/public_html/user_favorite.php +++ /dev/null @@ -1,147 +0,0 @@ - - - -
    - - - -
    - - - -
    - -
    - -
    - -
    - -
    - -
      -
    - -
    - -
    - -
    - - - -
    - -
    - - - - \ No newline at end of file diff --git a/public_html/user_followers.php b/public_html/user_followers.php deleted file mode 100644 index 034d46a..0000000 --- a/public_html/user_followers.php +++ /dev/null @@ -1,115 +0,0 @@ - - - -
    - - - -
    - - - -
    - -
    - -
    - -
    - -
    - -
    -
    - -
    - - - - \ No newline at end of file diff --git a/public_html/user_following.php b/public_html/user_following.php deleted file mode 100644 index 424da0e..0000000 --- a/public_html/user_following.php +++ /dev/null @@ -1,115 +0,0 @@ - - - -
    - - - -
    - - - -
    - -
    - -
    - -
    - -
    - -
    - -
    - -
    - - - - \ No newline at end of file diff --git a/public_html/user_include_replies.php b/public_html/user_include_replies.php deleted file mode 100644 index 47632f7..0000000 --- a/public_html/user_include_replies.php +++ /dev/null @@ -1,159 +0,0 @@ - - - -
    - - - -
    - - - - - - - -
    - -
    - - - - \ No newline at end of file diff --git a/public_html/user_only_media.php b/public_html/user_only_media.php deleted file mode 100644 index d93d427..0000000 --- a/public_html/user_only_media.php +++ /dev/null @@ -1,160 +0,0 @@ - - - -
    - - - -
    - - - - - - - -
    - -
    - - - - \ No newline at end of file diff --git a/public_html/widgets/create_status.php b/public_html/widgets/create_status.php deleted file mode 100644 index c8b9697..0000000 --- a/public_html/widgets/create_status.php +++ /dev/null @@ -1,101 +0,0 @@ -
    - -
    - -
    - -
    - - -
    - -
    - - -
    - - - - - -
    - -
    - - - -
    diff --git a/public_html/widgets/overlay_copy_link.php b/public_html/widgets/overlay_copy_link.php deleted file mode 100644 index b7df9f7..0000000 --- a/public_html/widgets/overlay_copy_link.php +++ /dev/null @@ -1,11 +0,0 @@ - \ No newline at end of file diff --git a/public_html/widgets/overlay_create_status.php b/public_html/widgets/overlay_create_status.php deleted file mode 100644 index 167c2eb..0000000 --- a/public_html/widgets/overlay_create_status.php +++ /dev/null @@ -1,104 +0,0 @@ - \ No newline at end of file diff --git a/public_html/widgets/overlay_message.php b/public_html/widgets/overlay_message.php deleted file mode 100644 index 3038d6b..0000000 --- a/public_html/widgets/overlay_message.php +++ /dev/null @@ -1,5 +0,0 @@ -
    -
    - -
    -
    \ No newline at end of file diff --git a/public_html/widgets/overlay_single_reply.php b/public_html/widgets/overlay_single_reply.php deleted file mode 100644 index d6ba786..0000000 --- a/public_html/widgets/overlay_single_reply.php +++ /dev/null @@ -1,105 +0,0 @@ - \ No newline at end of file diff --git a/public_html/widgets/search_header.php b/public_html/widgets/search_header.php deleted file mode 100644 index 522516f..0000000 --- a/public_html/widgets/search_header.php +++ /dev/null @@ -1,31 +0,0 @@ -
    -

    -
    - - -
    -
    - - -
    - -
    - -
    -
    \ No newline at end of file diff --git a/public_html/widgets/side_change_local.php b/public_html/widgets/side_change_local.php deleted file mode 100644 index abf07f2..0000000 --- a/public_html/widgets/side_change_local.php +++ /dev/null @@ -1,15 +0,0 @@ -
    - -
    -

    Change instance

    -
    - -
    - -
    - -
    - -
    - -
    diff --git a/public_html/widgets/side_current_user.php b/public_html/widgets/side_current_user.php deleted file mode 100644 index 09eb005..0000000 --- a/public_html/widgets/side_current_user.php +++ /dev/null @@ -1,46 +0,0 @@ -
    - -
    - -
    - -
    - -
    - -
    - - - - - -
    -
    \ No newline at end of file diff --git a/public_html/widgets/side_dev_team.php b/public_html/widgets/side_dev_team.php deleted file mode 100644 index cd37c9a..0000000 --- a/public_html/widgets/side_dev_team.php +++ /dev/null @@ -1,61 +0,0 @@ -
    - -

    Dev team

    - - -
    \ No newline at end of file diff --git a/public_html/widgets/side_footer.php b/public_html/widgets/side_footer.php deleted file mode 100644 index 6a5af48..0000000 --- a/public_html/widgets/side_footer.php +++ /dev/null @@ -1,33 +0,0 @@ - - - diff --git a/public_html/widgets/side_load_options.php b/public_html/widgets/side_load_options.php deleted file mode 100644 index 78551fc..0000000 --- a/public_html/widgets/side_load_options.php +++ /dev/null @@ -1,28 +0,0 @@ -
    - -
    -

    Preferences

    - -
    - -
    - -

    New posts streaming

    -
    -
    - -

    Default post privacy

    -
    -
    - -

    Local instance

    -
    -
    - -

    Hashtag search filter

    -
    -
    - -
    - -
    diff --git a/public_html/widgets/side_who_to_follow.php b/public_html/widgets/side_who_to_follow.php deleted file mode 100644 index beeafea..0000000 --- a/public_html/widgets/side_who_to_follow.php +++ /dev/null @@ -1,60 +0,0 @@ -
    - -

    Who to follow

    - - -
    \ No newline at end of file diff --git a/public_html/widgets/user_header.php b/public_html/widgets/user_header.php deleted file mode 100644 index 85a784d..0000000 --- a/public_html/widgets/user_header.php +++ /dev/null @@ -1,54 +0,0 @@ - -
    - -
    - - -
    -
    - - -
    - -
    - - -
    - -
    -
    -
    \ No newline at end of file diff --git a/public_html/widgets/user_recent_images.php b/public_html/widgets/user_recent_images.php deleted file mode 100644 index 4fa464f..0000000 --- a/public_html/widgets/user_recent_images.php +++ /dev/null @@ -1,9 +0,0 @@ -
    - - - -
    - -
    - -
    \ No newline at end of file diff --git a/search_hash_tag.php b/search_hash_tag.php new file mode 100644 index 0000000..0f331cb --- /dev/null +++ b/search_hash_tag.php @@ -0,0 +1,51 @@ + +
    + +
    + +
    +
    +
      +
    • +
    • +
    +
    +
    + +
    +
      +
    +
    + +
    +
    + +
    +
    + + \ No newline at end of file diff --git a/search_user.php b/search_user.php new file mode 100644 index 0000000..507566e --- /dev/null +++ b/search_user.php @@ -0,0 +1,30 @@ + +
    + +
    + +
    +
    +
    +
    + +
    +
    +
    +
    + + \ No newline at end of file diff --git a/user.php b/user.php new file mode 100644 index 0000000..57b623b --- /dev/null +++ b/user.php @@ -0,0 +1,106 @@ + +
    + +
    + + + +
    +
    + + \ No newline at end of file diff --git a/user_favorite.php b/user_favorite.php new file mode 100644 index 0000000..bc6180a --- /dev/null +++ b/user_favorite.php @@ -0,0 +1,91 @@ + +
    + +
    + + + +
    +
    + + \ No newline at end of file diff --git a/user_followers.php b/user_followers.php new file mode 100644 index 0000000..2c1c1e9 --- /dev/null +++ b/user_followers.php @@ -0,0 +1,73 @@ + +
    + +
    + +
    +
    +
    +
    + +
    +
    +
    +
    + + \ No newline at end of file diff --git a/user_following.php b/user_following.php new file mode 100644 index 0000000..8257aed --- /dev/null +++ b/user_following.php @@ -0,0 +1,73 @@ + +
    + +
    + +
    +
    +
    +
    + +
    +
    +
    +
    + + \ No newline at end of file diff --git a/user_include_replies.php b/user_include_replies.php new file mode 100644 index 0000000..02ce1ef --- /dev/null +++ b/user_include_replies.php @@ -0,0 +1,104 @@ + +
    + +
    + + + +
    +
    + + \ No newline at end of file diff --git a/user_only_media.php b/user_only_media.php new file mode 100644 index 0000000..cd8911a --- /dev/null +++ b/user_only_media.php @@ -0,0 +1,104 @@ + +
    + +
    + + + +
    +
    + + \ No newline at end of file diff --git a/widgets/create_status.php b/widgets/create_status.php new file mode 100644 index 0000000..de6114b --- /dev/null +++ b/widgets/create_status.php @@ -0,0 +1,61 @@ +
    +
    + +
    +
    +
    + +
    +
    + + +
    +
    + +
    \ No newline at end of file diff --git a/widgets/overlay_copy_link.php b/widgets/overlay_copy_link.php new file mode 100644 index 0000000..9953414 --- /dev/null +++ b/widgets/overlay_copy_link.php @@ -0,0 +1,8 @@ + \ No newline at end of file diff --git a/widgets/overlay_create_status.php b/widgets/overlay_create_status.php new file mode 100644 index 0000000..569ecbd --- /dev/null +++ b/widgets/overlay_create_status.php @@ -0,0 +1,63 @@ + \ No newline at end of file diff --git a/widgets/overlay_message.php b/widgets/overlay_message.php new file mode 100644 index 0000000..46a207c --- /dev/null +++ b/widgets/overlay_message.php @@ -0,0 +1,5 @@ +
    +
    + +
    +
    \ No newline at end of file diff --git a/widgets/overlay_single_reply.php b/widgets/overlay_single_reply.php new file mode 100644 index 0000000..2b6804c --- /dev/null +++ b/widgets/overlay_single_reply.php @@ -0,0 +1,64 @@ + \ No newline at end of file diff --git a/widgets/search_header.php b/widgets/search_header.php new file mode 100644 index 0000000..2a6124e --- /dev/null +++ b/widgets/search_header.php @@ -0,0 +1,21 @@ +
    +

    +
    +
    +
    +
    + +
    +
    +
    \ No newline at end of file diff --git a/widgets/side_change_local.php b/widgets/side_change_local.php new file mode 100644 index 0000000..4dce982 --- /dev/null +++ b/widgets/side_change_local.php @@ -0,0 +1,10 @@ +
    +
    +

    Change instance

    +
    +
    +
    + +
    +
    +
    \ No newline at end of file diff --git a/widgets/side_current_user.php b/widgets/side_current_user.php new file mode 100644 index 0000000..dbc32f2 --- /dev/null +++ b/widgets/side_current_user.php @@ -0,0 +1,36 @@ +
    +
    + +
    +
    +
    + +
    +
    + +

    + +
    +
    + +
    +
    \ No newline at end of file diff --git a/widgets/side_dev_team.php b/widgets/side_dev_team.php new file mode 100644 index 0000000..6b2e8d0 --- /dev/null +++ b/widgets/side_dev_team.php @@ -0,0 +1,73 @@ +
    +

    Interesting accounts of devs

    + +
    \ No newline at end of file diff --git a/widgets/side_footer.php b/widgets/side_footer.php new file mode 100644 index 0000000..73e5c8b --- /dev/null +++ b/widgets/side_footer.php @@ -0,0 +1,23 @@ + + diff --git a/widgets/side_load_options.php b/widgets/side_load_options.php new file mode 100644 index 0000000..930ef86 --- /dev/null +++ b/widgets/side_load_options.php @@ -0,0 +1,20 @@ +
    +
    +

    Preferences

    + +
    +
    +

    New posts streaming

    +
    +
    +

    Default post privacy

    +
    +
    +

    Local instance

    +
    +
    +

    Hashtag search filter

    +
    +
    +
    +
    diff --git a/widgets/side_who_to_follow.php b/widgets/side_who_to_follow.php new file mode 100644 index 0000000..9d4abbc --- /dev/null +++ b/widgets/side_who_to_follow.php @@ -0,0 +1,56 @@ +
    +

    Who to follow

    + +
    \ No newline at end of file diff --git a/widgets/user_header.php b/widgets/user_header.php new file mode 100644 index 0000000..6f65f9a --- /dev/null +++ b/widgets/user_header.php @@ -0,0 +1,35 @@ +
    + +
    +
    +
    +
    +
    +
    + +
    +
    +
    \ No newline at end of file diff --git a/widgets/user_recent_images.php b/widgets/user_recent_images.php new file mode 100644 index 0000000..41fd501 --- /dev/null +++ b/widgets/user_recent_images.php @@ -0,0 +1,5 @@ +
    + +
    +
    +
    \ No newline at end of file